Exemple #1
0
        public MetadataToken ReadCodedToken(CodedTokenType tokenType)
        {
            var value      = ReadBySize(IsLargeToken(tokenType));
            var codedToken = new CodedToken(value);

            return(CodedTokenSchema.GetMetadataToken(codedToken, tokenType));
        }
Exemple #2
0
 /// <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());
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        private MetadataToken ReadTypeToken()
        {
            var codedToken = new CodedToken(ReadCompressedUInt32());

            return(CodedTokenSchema.GetMetadataToken(codedToken, CodedTokenType.TypeDefOrRef));
        }
Exemple #6
0
 /// <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)
 {
 }
Exemple #7
0
 CodedTokenData CreateCodedTokenData(HexPosition position, ColumnInfo column, CodedToken codedToken) =>
 column.Size == 2 ? (CodedTokenData) new CodedToken16Data(Buffer, position, codedToken) : new CodedToken32Data(Buffer, position, codedToken);