Пример #1
0
        public ITypeInfo ReadType(MetadataSystem metadata)
        {
            var elementType = ReadElementType();
            var typeCode    = KnownType.GetTypeCode(elementType);

            if (typeCode != KnownTypeCode.None)
            {
                return(KnownType.GetType(typeCode));
            }

            switch (elementType)
            {
            case ElementType.ValueType: return(ReadValueType(metadata));

            case ElementType.Class: return(ReadClassType(metadata));

            case ElementType.ByRef: return(ReadByReferenceType(metadata));

            case ElementType.SizeArray: return(ReadVectorType(metadata));

            case ElementType.Array: return(ReadArrayType(metadata));

            case ElementType.Var: return(ReadTypeGenericParameter(metadata));

            case ElementType.MVar: return(ReadMethodGenericParameter(metadata));

            default: throw new NotSupportedException();
            }
        }
Пример #2
0
 private FieldDefinitionResolver(uint rid, FieldRow row, MetadataSystem metadata, TypeDefinition declaringType)
 {
     _token         = new MetadataToken(MetadataTokenType.Field, rid);
     _row           = row;
     _metadata      = metadata;
     _declaringType = declaringType;
 }
Пример #3
0
 private GenericParameter ReadTypeGenericParameter(MetadataSystem metadata)
 {
     // todo: implement generic parameter instantiation
     return(new GenericParameter(
                (int)ReadCompressedUInt32(),
                ElementType.Var));
 }
Пример #4
0
 private ParameterDefinitionResolver(uint rid, ParamRow row, MetadataSystem metadata, IMethodInfo method, ITypeInfo type)
 {
     _rid      = rid;
     _row      = row;
     _metadata = metadata;
     _method   = method;
     _type     = type;
 }
Пример #5
0
        private AssemblyDefinition ResolveAssembly()
        {
            var entryPoint = _clrHeader.EntryPointToken;
            var reader     = new MetadataReader(_heaps, entryPoint);
            var metadata   = new MetadataSystem(reader);

            return(metadata.Assembly);
        }
Пример #6
0
 private MethodDefinitionResolver(uint rid, MethodRow row, MetadataSystem metadata, TypeDefinition declaringType)
 {
     _token         = new MetadataToken(MetadataTokenType.Method, rid);
     _row           = row;
     _metadata      = metadata;
     _declaringType = declaringType;
     _signature     = new Lazy <MethodSignatureReader>(() => new MethodSignatureReader(_row, _metadata));
 }
Пример #7
0
    static void dumpSystem(RetsMetadata metadata)
    {
        MetadataSystem system = metadata.GetSystem();

        Console.WriteLine("System ID: " + system.GetSystemID());
        Console.WriteLine("Description: " + system.GetSystemDescription());
        Console.WriteLine("Comment: " + system.GetComments());
    }
Пример #8
0
        private void ReadSignature(MethodRow row, MetadataSystem metadata)
        {
            var blob = metadata.ResolveBlob(row.Signature);
            var sig  = new StandAloneSignature(blob);

            CallingConventions = (CallingConventions)sig.ReadByte();
            ParamCount         = sig.ReadCompressedUInt32();
            ReturnType         = sig.ReadType(metadata);

            ParamTypes = new ITypeInfo[ParamCount];
            for (int index = 0; index < ParamCount; index++)
            {
                ParamTypes[index] = sig.ReadType(metadata);
            }
        }
        public static IMemberReference Resolve(MemberRefRow row, MetadataSystem metadata)
        {
            var blob = metadata.ResolveBlob(row.Signature);

            blob.MoveTo(ByteBuffer.START_POSITION);

            var sig = blob.ReadByte();

            blob.MoveTo(ByteBuffer.START_POSITION);

            if (sig == FIELD_SIG)
            {
                return(FieldReferenceResolver.Resolve(row, blob, metadata));
            }

            return(MethodReferenceResolver.Resolve(row, blob, metadata));
        }
Пример #10
0
        public static MethodDefinition Resolve(uint rid, MethodRow row, MetadataSystem metadata, TypeDefinition declaringType)
        {
            var resolver = new MethodDefinitionResolver(rid, row, metadata, declaringType);

            return(new MethodDefinition(resolver));
        }
Пример #11
0
 private ModuleDefinitionResolver(uint rid, ModuleRow row, MetadataSystem metadata)
 {
     _token    = new MetadataToken(MetadataTokenType.Module, rid);
     _row      = row;
     _metadata = metadata;
 }
Пример #12
0
 private ArrayType ReadArrayType(MetadataSystem metadata)
 {
     // todo: implement multidimensional array initialization
     throw new NotImplementedException();
 }
Пример #13
0
 private FieldReferenceResolver(MemberRefRow row, ByteBuffer signature, MetadataSystem metadata)
 {
     _row       = row;
     _signature = signature;
     _metadata  = metadata;
 }
        public static AssemblyReference Resolve(uint rid, AssemblyRefRow row, MetadataSystem metadata)
        {
            var resolver = new AssemblyReferenceResolver(rid, row, metadata);

            return(new AssemblyReference(resolver));
        }
 private AssemblyReferenceResolver(uint rid, AssemblyRefRow row, MetadataSystem metadata)
 {
     _token    = new MetadataToken(MetadataTokenType.AssemblyRef, rid);
     _row      = row;
     _metadata = metadata;
 }
        public static TypeDefinition Resolve(uint rid, TypeDefRow row, MetadataSystem metadata)
        {
            var resolver = new TypeDefinitionResolver(rid, row, metadata);

            return(new TypeDefinition(resolver));
        }
 private TypeDefinitionResolver(uint rid, TypeDefRow row, MetadataSystem metadata)
 {
     _token    = new MetadataToken(MetadataTokenType.TypeDef, rid);
     _row      = row;
     _metadata = metadata;
 }
Пример #18
0
        public static CustomAttribute Resolve(CustomAttributeRow row, MetadataSystem metadata)
        {
            var resolver = new CustomAttributeResolver(row, metadata);

            return(new CustomAttribute(resolver));
        }
Пример #19
0
 private CustomAttributeResolver(CustomAttributeRow row, MetadataSystem metadata)
 {
     _row      = row;
     _metadata = metadata;
 }
Пример #20
0
 private AssemblyDefinitionResolver(uint rid, AssemblyRow row, MetadataSystem metadata)
 {
     _token    = new MetadataToken(MetadataTokenType.Assembly, rid);
     _row      = row;
     _metadata = metadata;
 }
Пример #21
0
        public static AssemblyDefinition Resolve(uint rid, AssemblyRow row, MetadataSystem metadata)
        {
            var resolver = new AssemblyDefinitionResolver(rid, row, metadata);

            return(new AssemblyDefinition(resolver));
        }
 private TypeReferenceResolver(TypeRefRow row, MetadataSystem metadata)
 {
     _row      = row;
     _metadata = metadata;
 }
Пример #23
0
        private ByReferenceType ReadByReferenceType(MetadataSystem metadata)
        {
            var containedType = ReadType(metadata);

            return(new ByReferenceType(containedType));
        }
        public static TypeReference Resolve(TypeRefRow row, MetadataSystem metadata)
        {
            var resolver = new TypeReferenceResolver(row, metadata);

            return(new TypeReference(resolver));
        }
Пример #25
0
        private ArrayType ReadVectorType(MetadataSystem metadata)
        {
            var containedType = ReadType(metadata);

            return(new ArrayType(containedType));
        }
Пример #26
0
 public MethodSignatureReader(MethodRow row, MetadataSystem metadata)
 {
     ReadSignature(row, metadata);
 }
Пример #27
0
        private ITypeInfo ReadClassType(MetadataSystem metadata)
        {
            var token = ReadTypeToken();

            return(metadata.GetTypeInfo(token));
        }
Пример #28
0
        public static ParameterDefinition Resolve(uint rid, ParamRow row, MetadataSystem metadata, IMethodInfo method, ITypeInfo type)
        {
            var resolver = new ParameterDefinitionResolver(rid, row, metadata, method, type);

            return(new ParameterDefinition(resolver));
        }
Пример #29
0
        public static ModuleDefinition Resolve(uint rid, ModuleRow row, MetadataSystem metadata)
        {
            var resolver = new ModuleDefinitionResolver(rid, row, metadata);

            return(new ModuleDefinition(resolver));
        }
Пример #30
0
        public static FieldReference Resolve(MemberRefRow row, ByteBuffer signature, MetadataSystem metadata)
        {
            var resolver = new FieldReferenceResolver(row, signature, metadata);

            return(new FieldReference(resolver));
        }