Exemplo n.º 1
0
        public IMetadataTable GetOrCreate(MetadataTableType type)
        {
            var table = _tables[(int)type];

            if (table == null)
            {
                table = MetadataTableFactory.Create(type);
                _tables[(int)type] = table;
            }
            return(table);
        }
Exemplo n.º 2
0
        public static IMetadataTable Create(MetadataTableType type, int count)
        {
            switch (type)
            {
            case MetadataTableType.Module: return(new ModuleTable(count));

            case MetadataTableType.TypeRef: return(new TypeRefTable(count));

            case MetadataTableType.TypeDef: return(new TypeDefTable(count));

            case MetadataTableType.Field: return(new FieldTable(count));

            case MetadataTableType.Method: return(new MethodTable(count));

            case MetadataTableType.Param: return(new ParamTable(count));

            case MetadataTableType.InterfaceImpl: return(new InterfaceImplTable(count));

            case MetadataTableType.MemberRef: return(new MemberRefTable(count));

            case MetadataTableType.Constant: return(new ConstantTable(count));

            case MetadataTableType.CustomAttribute: return(new CustomAttributeTable(count));

            case MetadataTableType.FieldMarshal: return(new FieldMarshalTable(count));

            case MetadataTableType.DeclSecurity: return(new DeclSecurityTable(count));

            case MetadataTableType.ClassLayout: return(new ClassLayoutTable(count));

            case MetadataTableType.FieldLayout: return(new FieldLayoutTable(count));

            case MetadataTableType.StandAloneSig: return(new StandAloneSigTable(count));

            case MetadataTableType.EventMap: return(new EventMapTable(count));

            case MetadataTableType.Event: return(new EventTable(count));

            case MetadataTableType.PropertyMap: return(new PropertyMapTable(count));

            case MetadataTableType.Property: return(new PropertyTable(count));

            case MetadataTableType.MethodSemantics: return(new MethodSemanticsTable(count));

            case MetadataTableType.MethodImpl: return(new MethodImplTable(count));

            case MetadataTableType.ModuleRef: return(new ModuleRefTable(count));

            case MetadataTableType.TypeSpec: return(new TypeSpecTable(count));

            case MetadataTableType.ImplMap: return(new ImplMapTable(count));

            case MetadataTableType.FieldRVA: return(new FieldRVATable(count));

            case MetadataTableType.Assembly: return(new AssemblyTable(count));

            case MetadataTableType.AssemblyRef: return(new AssemblyRefTable(count));

            case MetadataTableType.File: return(new FileTable(count));

            case MetadataTableType.ExportedType: return(new ExportedTypeTable(count));

            case MetadataTableType.ManifestResource: return(new ManifestResourceTable(count));

            case MetadataTableType.NestedClass: return(new NestedClassTable(count));

            case MetadataTableType.GenericParam: return(new GenericParamTable(count));

            case MetadataTableType.MethodSpec: return(new MethodSpecTable(count));

            case MetadataTableType.GenericParamConstraint: return(new GenericParamConstraintTable(count));

            default: throw new NotSupportedException();
            }
        }
Exemplo n.º 3
0
 public TTable GetOrCreate <TTable>(MetadataTableType type) where TTable : IMetadataTable, new()
 {
     return(_heaps.Tables.GetOrCreate <TTable>(type));
 }
Exemplo n.º 4
0
 public TTable GetOrCreate <TTable>(MetadataTableType type) where TTable : IMetadataTable
 {
     return((TTable)GetOrCreate(type));
 }
Exemplo n.º 5
0
 private MetadataTokenType Convert(MetadataTableType tableType)
 {
     return((MetadataTokenType)((uint)tableType << 24));
 }
Exemplo n.º 6
0
        private bool IsLargeTable(MetadataTableType tableType)
        {
            var table = _tables[(int)tableType];

            return(table != null && table.Length > 0xffff);
        }