public void EventMap_WhenCreated_OffsetIsMovedOn() { byte[] contents = new byte[20]; Offset offset = 0; IIndexDetails indexDetails = IndexHelper.CreateIndexDetails(2); EventMapMetadataTableRow row = new EventMapMetadataTableRow(contents, offset, indexDetails); Assert.AreEqual(4, offset.Current); }
private void LoadEvents() { // Check if we have a property map and then find the property map for the current type // if it exists. if (!_metadataStream.Tables.ContainsKey(MetadataTables.EventMap)) { return; } int startEventList = -1; int endEventList = -1; EventMapMetadataTableRow searchFor = new EventMapMetadataTableRow(); searchFor.Parent = _indexInMetadataTable; int mapIndex = Array.BinarySearch(_metadataStream.Tables[MetadataTables.EventMap], searchFor, new EventMapComparer() ); if (mapIndex >= 0) { startEventList = ((EventMapMetadataTableRow)_metadataStream.Tables[MetadataTables.EventMap][mapIndex]).EventList; if (mapIndex < _metadataStream.Tables[MetadataTables.EventMap].Length - 1) { endEventList = ((EventMapMetadataTableRow)_metadataStream.Tables[MetadataTables.EventMap][mapIndex + 1]).EventList - 1; } else { endEventList = _metadataStream.Tables[MetadataTables.Event].Length; } } // If we have properties we need to load them, instantiate a PropertyDef and relate // it to its getter and setter. if (startEventList != -1) { MetadataRow[] table = _metadataStream.Tables[MetadataTables.Event]; // Now load all the methods between our index and the endOfMethodIndex for (int i = startEventList; i <= endEventList; i++) { EventMetadataTableRow eventRow = table[i - 1] as EventMetadataTableRow; EventDef eventDef = new EventDef( _references.Assembly.StringStream.GetString(eventRow.Name.Value), _references.Assembly, _builtType ); _map.Add(MetadataTables.Event, eventRow, eventDef); _builtType.Events.Add(eventDef); } } }
public int Compare(EventMapMetadataTableRow x, EventMapMetadataTableRow y) { if (x.Parent < y.Parent) { return(-1); } if (x.Parent == y.Parent) { return(0); } return(1); }
public void EventMap_WhenCreated_FieldsAreReadCorrectly() { byte[] contents = new byte[] { 0x01, 0x00, 0x05, 0x00 }; IIndexDetails indexDetails = IndexHelper.CreateIndexDetails(2); EventMapMetadataTableRow row = new EventMapMetadataTableRow(contents, 0, indexDetails); Assert.AreEqual(1, row.Parent.Value); Assert.AreEqual(5, row.EventList.Value); }
public EventMapEntry(MetadataDirectory directory, EventMapMetadataTableRow row) { this.FileOffset = string.Format("0x{0:x}", row.FileOffset); this.Parent = row.Parent.Value.ToString(); this.EventList = row.EventList.Value.ToString(); }