Beispiel #1
0
        internal static TypeReference LoadValueType(IBinaryAccessor accessor, Module module)
        {
            int token = MetadataToken.DecompressTypeDefOrRef(accessor.ReadCompressedInteger());

            var type = LoadTypeDefOrRef(module, token, true);

            return(type);
        }
Beispiel #2
0
        internal static TypeReference LoadTypeDef(Module module, int rid, bool?isValueType = null)
        {
            var image = module.Image;

            var typeRef = image.TypeSignatures[rid - 1];

            if (typeRef != null)
            {
                if (isValueType.HasValue)
                {
                    typeRef._isValueType = isValueType;
                }

                return(typeRef);
            }

            TypeDefRow row;

            image.GetTypeDef(rid, out row);

            typeRef            = new TypeReference();
            typeRef._name      = image.GetString(row.Name);
            typeRef._namespace = image.GetString(row.Namespace);

            // Owner
            int enclosingRID;

            if (image.GetEnclosingTypeByNested(rid, out enclosingRID))
            {
                typeRef._owner = LoadTypeDef(module, enclosingRID);
            }
            else
            {
                typeRef._owner = ModuleReference.LoadDef(module);
            }

            module.AddSignature(ref typeRef);
            image.TypeSignatures[rid - 1] = typeRef;

            // Is value type.
            if (isValueType.HasValue)
            {
                typeRef._isValueType = isValueType.Value;
            }
            else
            {
                int extendsToken = MetadataToken.DecompressTypeDefOrRef(row.Extends);
                if (!MetadataToken.IsNull(extendsToken))
                {
                    var baseType = TypeSignature.Load(module, extendsToken);
                    typeRef._isValueType = GetIsValueType(typeRef, baseType, module);
                }
            }

            return(typeRef);
        }
        private static CustomModifier LoadMod(IBinaryAccessor accessor, Module module, CustomModifierType modType)
        {
            int token = MetadataToken.DecompressTypeDefOrRef(accessor.ReadCompressedInteger());

            var modifier = Load(module, token);

            var elementType = Load(accessor, module);

            return(new CustomModifier(elementType, modifier, modType));
        }
        protected void LaodBaseType()
        {
            _opFlags = _opFlags.SetBitAtIndex(LoadBaseTypeFlag, false);

            var image = _module.Image;

            int extendsToken = MetadataToken.DecompressTypeDefOrRef(image.GetTypeDefExtends(_rid));

            if (MetadataToken.IsNull(extendsToken))
            {
                return;
            }

            _baseType = TypeSignature.Load(_module, extendsToken);
        }
        private void Load()
        {
            var image = _module.Image;

            int[] constraintTokens;
            image.GetGenericParamConstraintsByOwner(_genericParameter.RID, out constraintTokens);

            int count = constraintTokens.Length;

            _list.Capacity = count;

            for (int i = 0; i < count; i++)
            {
                _list.Add(TypeSignature.Load(_module, MetadataToken.DecompressTypeDefOrRef(constraintTokens[i])));
            }
        }
        private void Load()
        {
            var image = _module.Image;

            int[] interfaceTokens;
            image.GetInterfaceImplsByClass(_type.RID, out interfaceTokens);

            int count = interfaceTokens.Length;

            _list.Capacity = count;

            for (int i = 0; i < count; i++)
            {
                _list.Add(TypeSignature.Load(_module, MetadataToken.DecompressTypeDefOrRef(interfaceTokens[i])));
            }
        }
        protected void Load()
        {
            var image = _module.Image;

            EventRow row;

            image.GetEvent(_rid, out row);

            _name = image.GetString(row.Name);

            _flags = row.Flags;

            _eventType = TypeSignature.Load(_module, MetadataToken.DecompressTypeDefOrRef(row.EventType));

            _opFlags = _opFlags.SetBitAtIndex(LoadAddSemanticFlag, true);
            _opFlags = _opFlags.SetBitAtIndex(LoadRemoveSemanticFlag, true);
            _opFlags = _opFlags.SetBitAtIndex(LoadInvokeSemanticFlag, true);
        }