コード例 #1
0
        public void FindAllRelationships1()
        {
            NativeBuiltinType               ns   = new NativeBuiltinType(BuiltinType.NativeByte);
            NativeSymbolIterator            it   = new NativeSymbolIterator();
            List <NativeSymbolRelationship> list = it.FindAllNativeSymbolRelationships(ns);

            Assert.Equal(1, list.Count);
            EnsureIsSymbol(ns, list);
        }
コード例 #2
0
        public void FindAllNativeSymbols1()
        {
            NativeBuiltinType    child = new NativeBuiltinType(BuiltinType.NativeByte);
            NativePointer        par   = new NativePointer(child);
            NativeSymbolIterator it    = new NativeSymbolIterator();
            List <NativeSymbol>  list  = it.FindAllNativeSymbols(par);

            Assert.True(list.Contains(child));
            Assert.True(list.Contains(par));
        }
コード例 #3
0
        public void FindAllRelationships2()
        {
            NativeBuiltinType               child = new NativeBuiltinType(BuiltinType.NativeByte);
            NativePointer                   par   = new NativePointer(child);
            NativeSymbolIterator            it    = new NativeSymbolIterator();
            List <NativeSymbolRelationship> list  = it.FindAllNativeSymbolRelationships(par);

            Assert.Equal(2, list.Count);
            EnsureIsSymbol(par, list);
            EnsureIsSymbol(child, list);
            EnsureIsParent(par, list);
        }
コード例 #4
0
        public void FindAllRelationships3()
        {
            NativePointer ptr1 = new NativePointer();
            NativePointer ptr2 = new NativePointer(ptr1);

            ptr1.RealType = ptr2;

            NativeSymbolIterator            it   = new NativeSymbolIterator();
            List <NativeSymbolRelationship> list = it.FindAllNativeSymbolRelationships(ptr1);

            EnsureIsSymbol(ptr1, list);
            EnsureIsSymbol(ptr2, list);
        }
コード例 #5
0
        private bool EqualsRecursive(NativeType left, NativeType right)
        {
            // Quick sanity check
            if (!EqualsTopLevel(left, right))
            {
                return(false);
            }

            NativeSymbolIterator it = new NativeSymbolIterator();

            Dictionary <string, NativeDefinedType> leftMap  = new Dictionary <string, NativeDefinedType>();
            Dictionary <string, NativeDefinedType> rightMap = new Dictionary <string, NativeDefinedType>();

            foreach (NativeDefinedType nt in it.FindAllReachableDefinedTypes(left))
            {
                if (!leftMap.ContainsKey(nt.Name))
                {
                    leftMap.Add(nt.Name, nt);
                }
            }

            foreach (NativeDefinedType nt in it.FindAllReachableDefinedTypes(right))
            {
                if (!rightMap.ContainsKey(nt.Name))
                {
                    rightMap.Add(nt.Name, nt);
                }
            }

            if (leftMap.Count != rightMap.Count)
            {
                return(false);
            }

            foreach (NativeDefinedType leftDefined in leftMap.Values)
            {
                NativeDefinedType rightDefined = null;
                if (!rightMap.TryGetValue(leftDefined.Name, out rightDefined) || !EqualsTopLevel(leftDefined, rightDefined))
                {
                    return(false);
                }
            }

            return(true);
        }