public FieldAndStructure(HexVM structure, HexField field)
 {
     if (structure == null)
     {
         throw new ArgumentNullException(nameof(structure));
     }
     if (field == null)
     {
         throw new ArgumentNullException(nameof(field));
     }
     Structure = structure;
     Field     = field;
 }
Example #2
0
 public HexFieldReference(HexBufferFile file, HexVM structure, HexField field)
 {
     if (file == null)
     {
         throw new ArgumentNullException(nameof(file));
     }
     if (structure == null)
     {
         throw new ArgumentNullException(nameof(structure));
     }
     if (field == null)
     {
         throw new ArgumentNullException(nameof(field));
     }
     File      = file;
     Structure = structure;
     Field     = field;
 }
Example #3
0
 public HexFieldReference(HexBufferFile file, HexVM structure, HexField field)
 {
     File      = file ?? throw new ArgumentNullException(nameof(file));
     Structure = structure ?? throw new ArgumentNullException(nameof(structure));
     Field     = field ?? throw new ArgumentNullException(nameof(field));
 }
Example #4
0
		uint ReadFieldValue(HexField field) {
			if (field.Size == 2)
				return mdVM.Buffer.ReadUInt16(field.Span.Start);
			else if (field.Size == 4)
				return mdVM.Buffer.ReadUInt32(field.Span.Start);
			return 0;
		}
Example #5
0
		string GetCodedTokenDescription(CodedToken codedToken, string codedTokenName, ColumnInfo col, HexField field) {
			MDToken token;
			if (!codedToken.Decode(ReadFieldValue(field), out token))
				return string.Format("Invalid {0} Coded Token", codedTokenName);

			var info = GetInfo(token.Table, token.Rid);
			if (string.IsNullOrEmpty(info))
				return string.Format("{0}: {1}[{2}], 0x{3:X8}", codedTokenName, token.Table, token.Rid, token.Raw);
			return string.Format("{0} ({1}: {2}[{3}], 0x{4:X8})", info, codedTokenName, token.Table, token.Rid, token.Raw);
		}
Example #6
0
		string GetDescription(Table table, HexField field) {
			var info = GetInfo(table, ReadFieldValue(field));
			if (string.IsNullOrEmpty(info))
				return string.Format("{0} RID", table);
			return string.Format("{0} ({1} RID)", info, table);
		}
Example #7
0
		string GetGuidDescription(HexField field) {
			var g = ReadGuidHeap(field);
			if (g != null)
				return string.Format("{0} (#GUID Heap Index)", g.Value.ToString());
			return "#GUID Heap Index";
		}
Example #8
0
		string GetStringsDescription(HexField field) {
			var s = ReadStringsHeap(field);
			if (!string.IsNullOrEmpty(s))
				return string.Format("{0} (#Strings Heap Offset)", s);
			return "#Strings Heap Offset";
		}
Example #9
0
		Guid? ReadGuidHeap(HexField field) => mdVM.ReadGuidHeap(ReadFieldValue(field));
Example #10
0
		protected string ReadStringsHeap(HexField field) {
			var s = SimpleTypeConverter.ToString(mdVM.ReadStringsHeap(ReadFieldValue(field)), false);
			Debug.Assert(s.Length >= 2);
			if (s.Length < 2)
				return s;
			return s.Substring(1, s.Length - 2);
		}