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(); }
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); } }