123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- //
- // Author:
- // Jb Evain (jbevain@gmail.com)
- //
- // Copyright (c) 2008 - 2015 Jb Evain
- // Copyright (c) 2008 - 2011 Novell, Inc.
- //
- // Licensed under the MIT/X11 license.
- //
- using System;
- using ILRuntime.Mono.Cecil.PE;
- namespace ILRuntime.Mono.Cecil.Metadata {
- enum Table : byte {
- Module = 0x00,
- TypeRef = 0x01,
- TypeDef = 0x02,
- FieldPtr = 0x03,
- Field = 0x04,
- MethodPtr = 0x05,
- Method = 0x06,
- ParamPtr = 0x07,
- Param = 0x08,
- InterfaceImpl = 0x09,
- MemberRef = 0x0a,
- Constant = 0x0b,
- CustomAttribute = 0x0c,
- FieldMarshal = 0x0d,
- DeclSecurity = 0x0e,
- ClassLayout = 0x0f,
- FieldLayout = 0x10,
- StandAloneSig = 0x11,
- EventMap = 0x12,
- EventPtr = 0x13,
- Event = 0x14,
- PropertyMap = 0x15,
- PropertyPtr = 0x16,
- Property = 0x17,
- MethodSemantics = 0x18,
- MethodImpl = 0x19,
- ModuleRef = 0x1a,
- TypeSpec = 0x1b,
- ImplMap = 0x1c,
- FieldRVA = 0x1d,
- EncLog = 0x1e,
- EncMap = 0x1f,
- Assembly = 0x20,
- AssemblyProcessor = 0x21,
- AssemblyOS = 0x22,
- AssemblyRef = 0x23,
- AssemblyRefProcessor = 0x24,
- AssemblyRefOS = 0x25,
- File = 0x26,
- ExportedType = 0x27,
- ManifestResource = 0x28,
- NestedClass = 0x29,
- GenericParam = 0x2a,
- MethodSpec = 0x2b,
- GenericParamConstraint = 0x2c,
- Document = 0x30,
- MethodDebugInformation = 0x31,
- LocalScope = 0x32,
- LocalVariable = 0x33,
- LocalConstant = 0x34,
- ImportScope = 0x35,
- StateMachineMethod = 0x36,
- CustomDebugInformation = 0x37,
- }
- struct TableInformation {
- public uint Offset;
- public uint Length;
- public uint RowSize;
- public bool IsLarge {
- get { return Length > ushort.MaxValue; }
- }
- }
- sealed class TableHeap : Heap {
- public long Valid;
- public long Sorted;
- public readonly TableInformation [] Tables = new TableInformation [Mixin.TableCount];
- public TableInformation this [Table table] {
- get { return Tables [(int) table]; }
- }
- public TableHeap (byte [] data)
- : base (data)
- {
- }
- public bool HasTable (Table table)
- {
- return (Valid & (1L << (int) table)) != 0;
- }
- }
- }
|