예제 #1
0
        void ProcessType(XmlTextReader reader)
        {
            string[] parts = Expr.Value.Split('.');
            string   name  = parts[parts.Length - 1];

            var type = new MemberModel();

            type.Name = name;
            ExtractType(reader, type);
            result      = new HaxeCompleteResult();
            result.Type = type;
        }
예제 #2
0
 HaxeCompleteStatus ProcessTopLevel(XmlReader reader)
 {
     result = new HaxeCompleteResult {
         Members = new MemberList()
     };
     while (reader.Read())
     {
         if (reader.NodeType != XmlNodeType.Element)
         {
             continue;
         }
         switch (reader.Name)
         {
         case "i":
             var k = reader.GetAttribute("k");
             switch (k)
             {
             case "local":
             case "member":
             case "static":
             case "enum":
             case "global":
             case "package":
             case "type":
                 string t = k == "global" ? reader.GetAttribute("t") : null;
                 reader.Read();
                 var member = new MemberModel {
                     Name = reader.Value
                 };
                 ExtractType(t, member);
                 result.Members.Add(member);
                 break;
             }
             break;
         }
     }
     result.Members.Sort();
     return(HaxeCompleteStatus.TOP_LEVEL);
 }
예제 #3
0
        HaxeCompleteStatus ProcessList(XmlTextReader reader)
        {
            result          = new HaxeCompleteResult();
            result.Members  = new MemberList();
            positionResults = new List <HaxePositionResult>();
            MemberModel member = null;

            while (reader.Read())
            {
                if (reader.NodeType == XmlNodeType.EndElement)
                {
                    switch (reader.Name)
                    {
                    case "list":
                        switch (CompilerService)
                        {
                        case HaxeCompilerService.COMPLETION:
                            result.Members.Sort();
                            return(HaxeCompleteStatus.MEMBERS);

                        case HaxeCompilerService.POSITION:
                            return(HaxeCompleteStatus.POSITION);

                        case HaxeCompilerService.USAGE:
                            return(HaxeCompleteStatus.USAGE);

                        case HaxeCompilerService.TOP_LEVEL:
                            return(HaxeCompleteStatus.TOP_LEVEL);
                        }
                        break;

                    case "i":
                        member = null;
                        break;
                    }
                    continue;
                }
                else if (reader.NodeType != XmlNodeType.Element)
                {
                    continue;
                }

                switch (reader.Name)
                {
                case "i":
                    member = ExtractMember(reader);
                    break;

                case "d":
                    if (member == null)
                    {
                        continue;
                    }
                    member.Comments = ReadValue(reader);
                    break;

                case "t":
                    if (member == null)
                    {
                        continue;
                    }
                    ExtractType(reader, member);
                    if (!IsOverload(result.Members, member))
                    {
                        result.Members.Add(member);
                    }
                    break;

                case "pos":
                    positionResults.Add(ExtractPos(reader));
                    break;
                }
            }

            result.Members.Sort();
            return(HaxeCompleteStatus.MEMBERS);
        }