Exemple #1
0
 private static void Dump(XmlWriter writer, MetadataTable table)
 {
     writer.WriteStartElement("table");
     writer.WriteAttributeString("name", table.Name);
     writer.WriteAttributeString("id", string.Format("{0} (0x{0:X2})", (int)table.Id));
     writer.WriteAttributeString("offset", XmlConvert.ToString(table.Offset));
     writer.WriteAttributeString("size", XmlConvert.ToString(table.Size));
     writer.WriteAttributeString("aligned", XmlConvert.ToString((table.Size % 4) == 0));
     writer.WriteAttributeString("row-count", XmlConvert.ToString(table.RowCount));
     writer.WriteAttributeString("row-size", XmlConvert.ToString(table.RowSize));
     writer.WriteAttributeString("sorted", XmlConvert.ToString(table.IsSorted));
     writer.WriteEndElement();
 }
Exemple #2
0
        internal MetadataRow(MetadataReader metadata, MetadataTable table, BufferedBinaryReader reader, int index)
        {
            Index = index;

            int n = table.Columns.Count;

            _cells = new MetadataCell[n];

            for (int i = 0; i < n; i++)
            {
                var column = table.Columns[i];
                Debug.Assert(column.Size != 0);

                uint value = column.Size == 2 ? reader.ReadUInt16() : reader.ReadUInt32();
                if (column.Type == ColumnType.CodedIndex)
                {
                    value = column.CodedIndex.Decode(value);
                }

                _cells[i] = new MetadataCell(metadata, column, value);
            }
        }