Пример #1
0
 private void TestParseStructureDeclarationInternal(Func <string, NativeXStructureDeclaration> parser)
 {
     Action <NativeXStructureDeclaration> vd1 = d =>
     {
         Assert.AreEqual("List", d.Name);
         Assert.IsNull(d.Linking);
         Assert.IsNull(d.Members);
     };
     Action <NativeXStructureDeclaration> vd2 = d =>
     {
         Assert.AreEqual("List", d.Name);
         Assert.IsNull(d.Linking);
         Assert.AreEqual(2, d.Members.Count);
         Assert.AreEqual("int", ((NativeXReferenceType)d.Members[0].Type).ReferencedName);
         Assert.AreEqual("count", d.Members[0].Name);
         Assert.AreEqual("int", ((NativeXReferenceType)((NativeXPointerType)d.Members[1].Type).ElementType).ReferencedName);
         Assert.AreEqual("items", d.Members[1].Name);
     };
     Action <NativeXStructureDeclaration> vd3 = d =>
     {
         Assert.AreEqual("List", d.Name);
         Assert.AreEqual("Utility", d.Linking.LinkingAssembly);
         Assert.AreEqual("List", d.Linking.LinkingSymbol);
         Assert.AreEqual(2, d.Members.Count);
         Assert.AreEqual("int", ((NativeXReferenceType)d.Members[0].Type).ReferencedName);
         Assert.AreEqual("count", d.Members[0].Name);
         Assert.AreEqual("int", ((NativeXReferenceType)((NativeXPointerType)d.Members[1].Type).ElementType).ReferencedName);
         Assert.AreEqual("items", d.Members[1].Name);
     };
     string d1 = "structure List;";
     string d2 = "structure List{int count;int* items;}";
     string d3 = "structure List alias Utility.List {int count;int* items;}";
     {
         NativeXStructureDeclaration d = parser(d1);
         vd1(d);
     }
     {
         NativeXStructureDeclaration d = parser(d2);
         vd2(d);
     }
     {
         NativeXStructureDeclaration d = parser(d3);
         vd3(d);
     }
     {
         NativeXStructureDeclaration d = parser(g1 + d1);
         vg1(d);
         vd1(d);
     }
     {
         NativeXStructureDeclaration d = parser(g2 + d2);
         vg2(d);
         vd2(d);
     }
     {
         NativeXStructureDeclaration d = parser(g3 + d3);
         vg3(d);
         vd3(d);
     }
 }
Пример #2
0
        protected IEnumerable <TextEditorPopupItem> CreatePopupTypes(CodeScope scope)
        {
            Bitmap typeImage                 = null;
            Bitmap templateImage             = null;
            Bitmap parameterImage            = null;
            List <TextEditorPopupItem> items = new List <TextEditorPopupItem>();

            foreach (CodeNode node in scope.FindAllDistinct())
            {
                {
                    NativeXStructureDeclaration structdecl = node as NativeXStructureDeclaration;
                    if (structdecl != null && structdecl.Name != null)
                    {
                        items.Add(new TextEditorPopupItem()
                        {
                            Text  = structdecl.Name,
                            Image = structdecl.GenericParameters == null
                                ? (typeImage ?? (typeImage = Images.Type))
                                : (templateImage ?? (templateImage = Images.Template))
                        });
                    }
                }
                {
                    NativeXTypeRenameDeclaration typedecl = node as NativeXTypeRenameDeclaration;
                    if (typedecl != null && typedecl.Name != null)
                    {
                        items.Add(new TextEditorPopupItem()
                        {
                            Text  = typedecl.Name,
                            Image = typedecl.GenericParameters == null
                                ? (typeImage ?? (typeImage = Images.Type))
                                : (templateImage ?? (templateImage = Images.Template))
                        });
                    }
                }
                {
                    NativeXGenericParameter genparam = node as NativeXGenericParameter;
                    if (genparam != null && genparam.ParameterName != null)
                    {
                        items.Add(new TextEditorPopupItem()
                        {
                            Text  = genparam.ParameterName,
                            Image = (parameterImage ?? (parameterImage = Images.Parameter))
                        });
                    }
                }
            }
            foreach (string key in NativeXTokenizer.TypedKeywords)
            {
                items.Add(new TextEditorPopupItem()
                {
                    Text  = key,
                    Image = (typeImage ?? (typeImage = Images.Type))
                });
            }
            foreach (string key in new string[] { "typeof", "function" })
            {
                items.Add(new TextEditorPopupItem()
                {
                    Text  = key,
                    Image = Images.Keyword
                });
            }
            return(items);
        }