forked from cgvr/DeltaVR
		
	
		
			
				
	
	
		
			102 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
//
 | 
						|
// Author:
 | 
						|
//   Jb Evain (jbevain@gmail.com)
 | 
						|
//
 | 
						|
// Copyright (c) 2008 - 2015 Jb Evain
 | 
						|
// Copyright (c) 2008 - 2011 Novell, Inc.
 | 
						|
//
 | 
						|
// Licensed under the MIT/X11 license.
 | 
						|
//
 | 
						|
 | 
						|
namespace MonoFN.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;
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |