void CreateStream(string name) { MetadataStream stream = new MetadataStream(); stream.Header.Name = name; stream.Heap = MetadataHeap.HeapFactory(stream); m_root.Streams.Add(stream); }
public override void VisitMetadataStreamCollection(MetadataStreamCollection coll) { MetadataStream tables = new MetadataStream (); tables.Header.Name = MetadataStream.Tables; tables.Heap = MetadataHeap.HeapFactory (tables); TablesHeap th = tables.Heap as TablesHeap; th.Tables = new TableCollection (th); m_root.Streams.Add (tables); }
public override void VisitMetadataStreamCollection(MetadataStreamCollection coll) { MetadataStream tables = new MetadataStream(); tables.Header.Name = MetadataStream.Tables; tables.Heap = MetadataHeap.HeapFactory(tables); TablesHeap th = tables.Heap as TablesHeap; th.Tables = new TableCollection(th); m_root.Streams.Add(tables); }
private MetadataHeap GetHeap(string name) { for (int i = 0; i < m_items.Count; i++) { MetadataStream stream = m_items [i] as MetadataStream; if (stream.Heap.Name == name) { return(stream.Heap); } } return(null); }
private MetadataHeap GetHeap(string name) { MetadataHeap heap = null; for (int i = 0; i < m_items.Count; i++) { MetadataStream stream = m_items [i] as MetadataStream; if (stream.Heap.Name == name) { heap = stream.Heap; break; } } return(heap); }
public static MetadataHeap HeapFactory(MetadataStream stream) { switch (stream.Header.Name) { case MetadataStream.Tables : case MetadataStream.IncrementalTables : return new TablesHeap (stream); case MetadataStream.GUID : return new GuidHeap (stream); case MetadataStream.Strings : return new StringsHeap (stream); case MetadataStream.UserStrings : return new UserStringsHeap (stream); case MetadataStream.Blob : return new BlobHeap (stream); default : return null; } }
public static MetadataHeap HeapFactory(MetadataStream stream) { switch (stream.Header.Name) { case MetadataStream.Tables: case MetadataStream.IncrementalTables: return(new TablesHeap(stream)); case MetadataStream.GUID: return(new GuidHeap(stream)); case MetadataStream.Strings: return(new StringsHeap(stream)); case MetadataStream.UserStrings: return(new UserStringsHeap(stream)); case MetadataStream.Blob: return(new BlobHeap(stream)); default: return(null); } }
internal MetadataHeap(MetadataStream stream, string name) { m_name = name; m_stream = stream; }
public bool Contains(MetadataStream value) { return m_items.Contains (value); }
public int IndexOf(MetadataStream value) { return m_items.IndexOf (value); }
internal void Insert(int index, MetadataStream value) { m_items.Insert(index, value); }
public bool Contains(MetadataStream value) { return(m_items.Contains(value)); }
public GuidHeap (MetadataStream stream) : base (stream, MetadataStream.GUID) { int capacity = (int)(stream.Header.Size / 16); m_guids = new Hashtable (capacity); }
internal TablesHeap (MetadataStream stream) : base(stream, MetadataStream.Tables) { }
public GuidHeap(MetadataStream stream) : base(stream, MetadataStream.GUID) { m_guids = new Hashtable(); }
internal TablesHeap(MetadataStream stream) : base(stream, MetadataStream.Tables) { }
public GuidHeap(MetadataStream stream) : base(stream, MetadataStream.GUID) { int capacity = (int)(stream.Header.Size / 16); m_guids = new Hashtable(capacity); }
internal BlobHeap(MetadataStream stream) : base(stream, MetadataStream.Blob) { }
internal void Insert(int index, MetadataStream value) { m_items.Insert (index, value); }
public GuidHeap(MetadataStream stream) : base(stream, MetadataStream.GUID) { m_guids = new Hashtable (); }
internal void Add (MetadataStream value) { m_items.Add (value); }
internal UserStringsHeap(MetadataStream stream) : base(stream, MetadataStream.UserStrings) { m_strings = new Hashtable(); }
internal void Remove (MetadataStream value) { m_items.Remove (value); }
internal UserStringsHeap (MetadataStream stream) : base (stream, MetadataStream.UserStrings) { m_strings = new Hashtable (); }
internal void Add(MetadataStream value) { m_items.Add(value); }
void CreateStream(string name) { MetadataStream stream = new MetadataStream (); stream.Header.Name = name; stream.Heap = MetadataHeap.HeapFactory (stream); m_root.Streams.Add (stream); }
public int IndexOf(MetadataStream value) { return(m_items.IndexOf(value)); }
public override void VisitMetadataStreamHeader(MetadataStream.MetadataStreamHeader header) { header.Offset = m_binaryReader.ReadUInt32 (); header.Size = m_binaryReader.ReadUInt32 (); StringBuilder buffer = new StringBuilder (); while (true) { char cur = (char) m_binaryReader.ReadSByte (); if (cur == '\0') break; buffer.Append (cur); } header.Name = buffer.ToString (); if (header.Name.Length == 0) throw new MetadataFormatException ("Invalid stream name"); long rootpos = m_root.GetImage ().ResolveVirtualAddress ( m_root.GetImage ().CLIHeader.Metadata.VirtualAddress); long curpos = m_binaryReader.BaseStream.Position; if (header.Size != 0) curpos -= rootpos; curpos += 3; curpos &= ~3; if (header.Size != 0) curpos += rootpos; m_binaryReader.BaseStream.Position = curpos; header.Stream.Heap = MetadataHeap.HeapFactory (header.Stream); }
internal void Remove(MetadataStream value) { m_items.Remove(value); }