public MetadataToken ReadCodedToken(CodedTokenType tokenType) { var value = ReadBySize(IsLargeToken(tokenType)); var codedToken = new CodedToken(value); return(CodedTokenSchema.GetMetadataToken(codedToken, tokenType)); }
/// <summary> /// Constructor /// </summary> /// <param name="span">Data span</param> /// <param name="codedToken">Coded token info</param> public CodedToken32Data(HexBufferSpan span, CodedToken codedToken) : base(span, codedToken) { if (span.Length != 4) { throw new ArgumentOutOfRangeException(nameof(span)); } }
string DecodeToken(CodedToken desc, uint codedToken) { MDToken token; if (!desc.Decode(codedToken, out token)) { return("<<<INVALID>>>"); } if (!Parent.Tables.HasTable(token.Table) || Parent.Tables.Get(token.Table).IsInvalidRID(token.Rid)) { return("<<<INVALID>>>"); } return(token.ToDescription()); }
static ContextMenuStrip CreateCodedTokenContextMenu(MDTableHeapView view, CodedToken code) { var menu = new ContextMenuStrip(); var go = new ToolStripMenuItem("Go To Row"); go.Click += (sender, e) => { var gridView = (GridView)menu.SourceControl; var rowIndex = gridView.SelectedCells[0].RowIndex; if (gridView[4, rowIndex].Value == InvalidValue) { MessageBox.Show("Invalid token.", view.App.AppName, MessageBoxButtons.OK, MessageBoxIcon.Error); return; } var token = code.Decode(Convert.ToUInt32(gridView[3, rowIndex].Value)); view.SelectItem(new MDToken(token)); }; menu.Items.Add(go); return(menu); }
private MetadataToken ReadTypeToken() { var codedToken = new CodedToken(ReadCompressedUInt32()); return(CodedTokenSchema.GetMetadataToken(codedToken, CodedTokenType.TypeDefOrRef)); }
/// <summary> /// Constructor /// </summary> /// <param name="buffer">Buffer</param> /// <param name="position">Position</param> /// <param name="codedToken">Coded token info</param> public CodedToken32Data(HexBuffer buffer, HexPosition position, CodedToken codedToken) : this(new HexBufferSpan(buffer, new HexSpan(position, 4)), codedToken) { }
CodedTokenData CreateCodedTokenData(HexPosition position, ColumnInfo column, CodedToken codedToken) => column.Size == 2 ? (CodedTokenData) new CodedToken16Data(Buffer, position, codedToken) : new CodedToken32Data(Buffer, position, codedToken);