Esempio n. 1
0
        void CreateStream(string name)
        {
            MetadataStream stream = new MetadataStream();

            stream.Header.Name = name;
            stream.Heap        = MetadataHeap.HeapFactory(stream);
            m_root.Streams.Add(stream);
        }
Esempio n. 2
0
 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);
 }
Esempio n. 3
0
        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);
        }
Esempio n. 6
0
 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;
     }
 }
Esempio n. 7
0
        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);
            }
        }
Esempio n. 8
0
 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));
 }
Esempio n. 13
0
		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();
 }
Esempio n. 16
0
 internal TablesHeap(MetadataStream stream) : base(stream, MetadataStream.Tables)
 {
 }
Esempio n. 17
0
        public GuidHeap(MetadataStream stream) : base(stream, MetadataStream.GUID)
        {
            int capacity = (int)(stream.Header.Size / 16);

            m_guids = new Hashtable(capacity);
        }
Esempio n. 18
0
 internal BlobHeap(MetadataStream stream) : base(stream, MetadataStream.Blob)
 {
 }
 internal void Insert(int index, MetadataStream value)
 {
     m_items.Insert (index, value);
 }
Esempio n. 20
0
 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);
		}
Esempio n. 24
0
		internal UserStringsHeap (MetadataStream stream) : base (stream, MetadataStream.UserStrings)
		{
			m_strings = new Hashtable ();
		}
Esempio n. 25
0
 internal BlobHeap(MetadataStream stream)
     : base(stream, MetadataStream.Blob)
 {
 }
 internal void Add(MetadataStream value)
 {
     m_items.Add(value);
 }
Esempio n. 27
0
 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));
 }
Esempio n. 29
0
        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);
 }
Esempio n. 31
0
 internal MetadataHeap(MetadataStream stream, string name)
 {
     m_name   = name;
     m_stream = stream;
 }