Example #1
0
        public void AddTypeDef3()
        {
            NativeSymbolBag bag = new NativeSymbolBag();
            NativeTypeDef   td1 = new NativeTypeDef("td1");
            NativeTypeDef   td2 = new NativeTypeDef("td1");

            bag.AddTypeDef(td1);
            Assert.Throws <ArgumentException>(() => bag.AddTypeDef(td2));
        }
Example #2
0
        public CodeTypeDeclarationCollection ConvertToCodeDom(NativeTypeDef typedef, ErrorProvider ep)
        {
            NativeSymbolBag bag = new NativeSymbolBag(_storage);

            bag.AddTypeDef(typedef);
            return(ConvertBagToCodeDom(bag, ep));
        }
Example #3
0
        public void AddTypeDef2()
        {
            NativeSymbolBag bag = new NativeSymbolBag();
            NativeTypeDef   td1 = new NativeTypeDef("td1");
            NativeTypeDef   td2 = new NativeTypeDef("td2");

            bag.AddTypeDef(td1);
            bag.AddTypeDef(td2);

            NativeType ret1 = null;
            NativeType ret2 = null;

            Assert.True(bag.TryGetType(td1.DisplayName, out ret1));
            Assert.Same(ret1, td1);
            Assert.True(bag.TryGetType(td2.DisplayName, out ret2));
            Assert.Same(ret2, td2);
        }
Example #4
0
        public void Opaque2()
        {
            NativeNamedType named = new NativeNamedType("foo");
            NativePointer   ptr   = new NativePointer(named);
            NativeTypeDef   td    = new NativeTypeDef("FOOBAR", ptr);
            NativeSymbolBag bag   = new NativeSymbolBag();

            bag.AddTypeDef(td);
            Assert.Equal(1, bag.FindUnresolvedNativeSymbolRelationships().Count);
            Assert.False(bag.TryResolveSymbolsAndValues());
        }
Example #5
0
        public void FindOrLoad5()
        {
            NativeSymbolBag bag = new NativeSymbolBag();

            bag.AddTypeDef(new NativeTypeDef("foo", new NativeNamedType("struct", "foo")));
            bag.AddDefinedType(new NativeStruct("foo"));

            NativeType nt = null;

            Assert.True(bag.TryResolveNamedType(new NativeNamedType("struct", "foo"), out nt));
            Assert.Equal(NativeSymbolKind.StructType, nt.Kind);
        }
Example #6
0
        public void Opaque1()
        {
            NativeNamedType named = new NativeNamedType("struct", "foo");
            NativePointer   ptr   = new NativePointer(named);
            NativeTypeDef   td    = new NativeTypeDef("FOOBAR", ptr);
            NativeSymbolBag bag   = new NativeSymbolBag();

            bag.AddTypeDef(td);
            Assert.Equal(1, bag.FindUnresolvedNativeSymbolRelationships().Count);
            Assert.True(bag.TryResolveSymbolsAndValues());
            Assert.NotNull(named.RealType);
            Assert.Equal(NativeSymbolKind.OpaqueType, named.RealType.Kind);
        }
Example #7
0
        public void Proc6()
        {
            NativeSymbolBag bag = new NativeSymbolBag();

            NativeProcedure p1 = new NativeProcedure("p1");

            p1.Signature.ReturnType = new NativeBuiltinType(BuiltinType.NativeInt32, true);
            p1.Signature.Parameters.Add(new NativeParameter("param1", new NativeNamedType("foo")));

            bag.AddProcedure(p1);
            bag.AddTypeDef(new NativeTypeDef("foo", new NativeBuiltinType(BuiltinType.NativeFloat)));
            Assert.True(bag.TryResolveSymbolsAndValues());
        }
Example #8
0
        public void ResolveLoad1()
        {
            var ns = new BasicSymbolStorage();

            ns.AddDefinedType(new NativeStruct("s1"));

            NativeSymbolBag bag = new NativeSymbolBag(ns);

            bag.AddTypeDef(new NativeTypeDef("S1", "s1"));
            Assert.True(bag.TryResolveSymbolsAndValues());

            NativeDefinedType td = null;

            Assert.True(bag.TryGetGlobalSymbol("s1", out td));
        }
Example #9
0
        public void Resolve1()
        {
            NativeSymbolBag bag = new NativeSymbolBag();
            NativeStruct    s1  = new NativeStruct("s1");

            bag.AddDefinedType(s1);

            NativeTypeDef   td1 = new NativeTypeDef("td1");
            NativeNamedType n1  = new NativeNamedType("s1");

            td1.RealType = n1;
            bag.AddTypeDef(td1);

            Assert.True(bag.TryResolveSymbolsAndValues());
            Assert.Same(s1, n1.RealType);
        }
Example #10
0
        public void AddMixed2()
        {
            NativeSymbolBag bag        = new NativeSymbolBag();
            NativeStruct    definedNt1 = new NativeStruct("s1");

            bag.AddDefinedType(definedNt1);
            NativeTypeDef td1 = new NativeTypeDef("s1");

            bag.AddTypeDef(td1);

            NativeType ret = null;

            Assert.True(bag.TryGetType(definedNt1.DisplayName, out ret));
            Assert.Same(definedNt1, ret);
            Assert.True(bag.TryGetType(td1.DisplayName, out ret));
            Assert.Same(definedNt1, ret);
        }
Example #11
0
        private void VerifyReachable(NativeType nt, params string[] names)
        {
            NativeSymbolBag bag = new NativeSymbolBag();

            NativeDefinedType definedNt = nt as NativeDefinedType;
            NativeTypeDef     typedefNt = nt as NativeTypeDef;

            if (definedNt != null)
            {
                bag.AddDefinedType((NativeDefinedType)nt);
            }
            else if (typedefNt != null)
            {
                bag.AddTypeDef((NativeTypeDef)nt);
            }
            else
            {
                throw new Exception("Not a searchable type");
            }

            VerifyReachable(bag, names);
        }