Browse Source

Introduce ColumnKind enum. Rename StringFormatAttribute -> ColumnInfoAttribute.

pull/2799/head
Siegfried Pammer 3 years ago
parent
commit
92a69cc12c
  1. 4
      ILSpy/Metadata/CorTables/AssemblyRefTableTreeNode.cs
  2. 4
      ILSpy/Metadata/CorTables/AssemblyTableTreeNode.cs
  3. 9
      ILSpy/Metadata/CorTables/ClassLayoutTableTreeNode.cs
  4. 7
      ILSpy/Metadata/CorTables/ConstantTableTreeNode.cs
  5. 8
      ILSpy/Metadata/CorTables/CustomAttributeTableTreeNode.cs
  6. 7
      ILSpy/Metadata/CorTables/DeclSecurityTableTreeNode.cs
  7. 6
      ILSpy/Metadata/CorTables/EventMapTableTreeNode.cs
  8. 5
      ILSpy/Metadata/CorTables/EventTableTreeNode.cs
  9. 5
      ILSpy/Metadata/CorTables/ExportedTypeTableTreeNode.cs
  10. 5
      ILSpy/Metadata/CorTables/FieldLayoutTableTreeNode.cs
  11. 5
      ILSpy/Metadata/CorTables/FieldMarshalTableTreeNode.cs
  12. 13
      ILSpy/Metadata/CorTables/FieldRVATableTreeNode.cs
  13. 4
      ILSpy/Metadata/CorTables/FieldTableTreeNode.cs
  14. 4
      ILSpy/Metadata/CorTables/FileTableTreeNode.cs
  15. 6
      ILSpy/Metadata/CorTables/GenericParamConstraintTableTreeNode.cs
  16. 5
      ILSpy/Metadata/CorTables/GenericParamTableTreeNode.cs
  17. 8
      ILSpy/Metadata/CorTables/ImplMapTableTreeNode.cs
  18. 6
      ILSpy/Metadata/CorTables/InterfaceImplTableTreeNode.cs
  19. 5
      ILSpy/Metadata/CorTables/ManifestResourceTableTreeNode.cs
  20. 5
      ILSpy/Metadata/CorTables/MemberRefTableTreeNode.cs
  21. 9
      ILSpy/Metadata/CorTables/MethodImplTableTreeNode.cs
  22. 8
      ILSpy/Metadata/CorTables/MethodSemanticsTableTreeNode.cs
  23. 5
      ILSpy/Metadata/CorTables/MethodSpecTableTreeNode.cs
  24. 6
      ILSpy/Metadata/CorTables/MethodTableTreeNode.cs
  25. 6
      ILSpy/Metadata/CorTables/ModuleTableTreeNode.cs
  26. 6
      ILSpy/Metadata/CorTables/NestedClassTableTreeNode.cs
  27. 2
      ILSpy/Metadata/CorTables/ParamTableTreeNode.cs
  28. 6
      ILSpy/Metadata/CorTables/PropertyMapTableTreeNode.cs
  29. 4
      ILSpy/Metadata/CorTables/PropertyTableTreeNode.cs
  30. 2
      ILSpy/Metadata/CorTables/StandAloneSigTableTreeNode.cs
  31. 11
      ILSpy/Metadata/CorTables/TypeDefTableTreeNode.cs
  32. 3
      ILSpy/Metadata/CorTables/TypeRefTableTreeNode.cs
  33. 2
      ILSpy/Metadata/CorTables/TypeSpecTableTreeNode.cs
  34. 5
      ILSpy/Metadata/DebugTables/CustomDebugInformationTableTreeNode.cs
  35. 6
      ILSpy/Metadata/DebugTables/DocumentTableTreeNode.cs
  36. 5
      ILSpy/Metadata/DebugTables/ImportScopeTableTreeNode.cs
  37. 2
      ILSpy/Metadata/DebugTables/LocalConstantTableTreeNode.cs
  38. 12
      ILSpy/Metadata/DebugTables/LocalScopeTableTreeNode.cs
  39. 2
      ILSpy/Metadata/DebugTables/LocalVariableTableTreeNode.cs
  40. 8
      ILSpy/Metadata/DebugTables/MethodDebugInformationTableTreeNode.cs
  41. 6
      ILSpy/Metadata/DebugTables/StateMachineMethodTableTreeNode.cs
  42. 2
      ILSpy/Metadata/GoToTokenCommand.cs
  43. 30
      ILSpy/Metadata/Helpers.cs

4
ILSpy/Metadata/CorTables/AssemblyRefTableTreeNode.cs

@ -87,14 +87,14 @@ namespace ICSharpCode.ILSpy.Metadata
public Version Version => assemblyRef.Version; public Version Version => assemblyRef.Version;
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Other)]
public AssemblyFlags Flags => assemblyRef.Flags; public AssemblyFlags Flags => assemblyRef.Flags;
public object FlagsTooltip => new FlagsTooltip((int)assemblyRef.Flags, null) { public object FlagsTooltip => new FlagsTooltip((int)assemblyRef.Flags, null) {
FlagGroup.CreateMultipleChoiceGroup(typeof(AssemblyFlags), selectedValue: (int)assemblyRef.Flags, includeAll: false) FlagGroup.CreateMultipleChoiceGroup(typeof(AssemblyFlags), selectedValue: (int)assemblyRef.Flags, includeAll: false)
}; };
[StringFormat("X")] [ColumnInfo("X8", Kind = ColumnKind.HeapOffset)]
public int PublicKeyOrToken => MetadataTokens.GetHeapOffset(assemblyRef.PublicKeyOrToken); public int PublicKeyOrToken => MetadataTokens.GetHeapOffset(assemblyRef.PublicKeyOrToken);
public string PublicKeyOrTokenTooltip { public string PublicKeyOrTokenTooltip {

4
ILSpy/Metadata/CorTables/AssemblyTableTreeNode.cs

@ -72,14 +72,14 @@ namespace ICSharpCode.ILSpy.Metadata
+ metadata.GetTableMetadataOffset(TableIndex.Assembly) + metadata.GetTableMetadataOffset(TableIndex.Assembly)
+ metadata.GetTableRowSize(TableIndex.Assembly) * (RID - 1); + metadata.GetTableRowSize(TableIndex.Assembly) * (RID - 1);
[StringFormat("X4")] [ColumnInfo("X4", Kind = ColumnKind.Other)]
public AssemblyHashAlgorithm HashAlgorithm => assembly.HashAlgorithm; public AssemblyHashAlgorithm HashAlgorithm => assembly.HashAlgorithm;
public object HashAlgorithmTooltip => new FlagsTooltip() { public object HashAlgorithmTooltip => new FlagsTooltip() {
FlagGroup.CreateSingleChoiceGroup(typeof(AssemblyHashAlgorithm), selectedValue: (int)assembly.HashAlgorithm, defaultFlag: new Flag("None (0000)", 0, false), includeAny: false) FlagGroup.CreateSingleChoiceGroup(typeof(AssemblyHashAlgorithm), selectedValue: (int)assembly.HashAlgorithm, defaultFlag: new Flag("None (0000)", 0, false), includeAny: false)
}; };
[StringFormat("X4")] [ColumnInfo("X4", Kind = ColumnKind.Other)]
public AssemblyFlags Flags => assembly.Flags; public AssemblyFlags Flags => assembly.Flags;
public object FlagsTooltip => new FlagsTooltip() { public object FlagsTooltip => new FlagsTooltip() {

9
ILSpy/Metadata/CorTables/ClassLayoutTableTreeNode.cs

@ -100,8 +100,7 @@ namespace ICSharpCode.ILSpy.Metadata
public int Offset { get; } public int Offset { get; }
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int Parent => MetadataTokens.GetToken(classLayout.Parent); public int Parent => MetadataTokens.GetToken(classLayout.Parent);
public void OnParentClick() public void OnParentClick()
@ -113,15 +112,15 @@ namespace ICSharpCode.ILSpy.Metadata
get { get {
ITextOutput output = new PlainTextOutput(); ITextOutput output = new PlainTextOutput();
var context = new MetadataGenericContext(default(TypeDefinitionHandle), module); var context = new MetadataGenericContext(default(TypeDefinitionHandle), module);
((EntityHandle)classLayout.Parent).WriteTo(module, output, context); classLayout.Parent.WriteTo(module, output, context);
return output.ToString(); return output.ToString();
} }
} }
[StringFormat("X4")] [ColumnInfo("X4", Kind = ColumnKind.Other)]
public ushort PackingSize => classLayout.PackingSize; public ushort PackingSize => classLayout.PackingSize;
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Other)]
public uint ClassSize => classLayout.ClassSize; public uint ClassSize => classLayout.ClassSize;
public ClassLayoutEntry(PEFile module, byte* ptr, int metadataOffset, int row) public ClassLayoutEntry(PEFile module, byte* ptr, int metadataOffset, int row)

7
ILSpy/Metadata/CorTables/ConstantTableTreeNode.cs

@ -87,13 +87,12 @@ namespace ICSharpCode.ILSpy.Metadata
+ metadata.GetTableMetadataOffset(TableIndex.Constant) + metadata.GetTableMetadataOffset(TableIndex.Constant)
+ metadata.GetTableRowSize(TableIndex.Constant) * (RID - 1); + metadata.GetTableRowSize(TableIndex.Constant) * (RID - 1);
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Other)]
public ConstantTypeCode Type => constant.TypeCode; public ConstantTypeCode Type => constant.TypeCode;
public string TypeTooltip => constant.TypeCode.ToString(); public string TypeTooltip => constant.TypeCode.ToString();
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int Parent => MetadataTokens.GetToken(constant.Parent); public int Parent => MetadataTokens.GetToken(constant.Parent);
public void OnParentClick() public void OnParentClick()
@ -110,7 +109,7 @@ namespace ICSharpCode.ILSpy.Metadata
} }
} }
[StringFormat("X")] [ColumnInfo("X8", Kind = ColumnKind.HeapOffset)]
public int Value => MetadataTokens.GetHeapOffset(constant.Value); public int Value => MetadataTokens.GetHeapOffset(constant.Value);
public string ValueTooltip { public string ValueTooltip {

8
ILSpy/Metadata/CorTables/CustomAttributeTableTreeNode.cs

@ -87,8 +87,7 @@ namespace ICSharpCode.ILSpy.Metadata
+ metadata.GetTableMetadataOffset(TableIndex.CustomAttribute) + metadata.GetTableMetadataOffset(TableIndex.CustomAttribute)
+ metadata.GetTableRowSize(TableIndex.CustomAttribute) * (RID - 1); + metadata.GetTableRowSize(TableIndex.CustomAttribute) * (RID - 1);
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int Parent => MetadataTokens.GetToken(customAttr.Parent); public int Parent => MetadataTokens.GetToken(customAttr.Parent);
public void OnParentClick() public void OnParentClick()
@ -105,8 +104,7 @@ namespace ICSharpCode.ILSpy.Metadata
} }
} }
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int Constructor => MetadataTokens.GetToken(customAttr.Constructor); public int Constructor => MetadataTokens.GetToken(customAttr.Constructor);
public void OnConstructorClick() public void OnConstructorClick()
@ -123,7 +121,7 @@ namespace ICSharpCode.ILSpy.Metadata
} }
} }
[StringFormat("X")] [ColumnInfo("X8", Kind = ColumnKind.HeapOffset)]
public int Value => MetadataTokens.GetHeapOffset(customAttr.Value); public int Value => MetadataTokens.GetHeapOffset(customAttr.Value);
public string ValueTooltip { public string ValueTooltip {

7
ILSpy/Metadata/CorTables/DeclSecurityTableTreeNode.cs

@ -88,8 +88,7 @@ namespace ICSharpCode.ILSpy.Metadata
+ metadata.GetTableMetadataOffset(TableIndex.DeclSecurity) + metadata.GetTableMetadataOffset(TableIndex.DeclSecurity)
+ metadata.GetTableRowSize(TableIndex.DeclSecurity) * (RID - 1); + metadata.GetTableRowSize(TableIndex.DeclSecurity) * (RID - 1);
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int Parent => MetadataTokens.GetToken(declSecAttr.Parent); public int Parent => MetadataTokens.GetToken(declSecAttr.Parent);
public void OnParentClick() public void OnParentClick()
@ -106,7 +105,7 @@ namespace ICSharpCode.ILSpy.Metadata
} }
} }
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Other)]
public DeclarativeSecurityAction Action => declSecAttr.Action; public DeclarativeSecurityAction Action => declSecAttr.Action;
public string ActionTooltip { public string ActionTooltip {
@ -115,7 +114,7 @@ namespace ICSharpCode.ILSpy.Metadata
} }
} }
[StringFormat("X")] [ColumnInfo("X8", Kind = ColumnKind.HeapOffset)]
public int PermissionSet => MetadataTokens.GetHeapOffset(declSecAttr.PermissionSet); public int PermissionSet => MetadataTokens.GetHeapOffset(declSecAttr.PermissionSet);
public string PermissionSetTooltip { public string PermissionSetTooltip {

6
ILSpy/Metadata/CorTables/EventMapTableTreeNode.cs

@ -98,8 +98,7 @@ namespace ICSharpCode.ILSpy.Metadata
public int Offset { get; } public int Offset { get; }
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int Parent => MetadataTokens.GetToken(eventMap.Parent); public int Parent => MetadataTokens.GetToken(eventMap.Parent);
public void OnParentClick() public void OnParentClick()
@ -116,8 +115,7 @@ namespace ICSharpCode.ILSpy.Metadata
} }
} }
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int EventList => MetadataTokens.GetToken(eventMap.EventList); public int EventList => MetadataTokens.GetToken(eventMap.EventList);
public void OnEventListClick() public void OnEventListClick()

5
ILSpy/Metadata/CorTables/EventTableTreeNode.cs

@ -90,7 +90,7 @@ namespace ICSharpCode.ILSpy.Metadata
+ metadata.GetTableMetadataOffset(TableIndex.Event) + metadata.GetTableMetadataOffset(TableIndex.Event)
+ metadata.GetTableRowSize(TableIndex.Event) * (RID - 1); + metadata.GetTableRowSize(TableIndex.Event) * (RID - 1);
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Other)]
public EventAttributes Attributes => eventDef.Attributes; public EventAttributes Attributes => eventDef.Attributes;
public object AttributesTooltip => new FlagsTooltip { public object AttributesTooltip => new FlagsTooltip {
@ -103,8 +103,7 @@ namespace ICSharpCode.ILSpy.Metadata
IEntity IMemberTreeNode.Member => ((MetadataModule)module.GetTypeSystemWithCurrentOptionsOrNull()?.MainModule).GetDefinition(handle); IEntity IMemberTreeNode.Member => ((MetadataModule)module.GetTypeSystemWithCurrentOptionsOrNull()?.MainModule).GetDefinition(handle);
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int Type => MetadataTokens.GetToken(eventDef.Type); public int Type => MetadataTokens.GetToken(eventDef.Type);
public void OnTypeClick() public void OnTypeClick()

5
ILSpy/Metadata/CorTables/ExportedTypeTableTreeNode.cs

@ -86,7 +86,7 @@ namespace ICSharpCode.ILSpy.Metadata
+ metadata.GetTableMetadataOffset(TableIndex.ExportedType) + metadata.GetTableMetadataOffset(TableIndex.ExportedType)
+ metadata.GetTableRowSize(TableIndex.ExportedType) * (RID - 1); + metadata.GetTableRowSize(TableIndex.ExportedType) * (RID - 1);
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Other)]
public TypeAttributes Attributes => type.Attributes; public TypeAttributes Attributes => type.Attributes;
const TypeAttributes otherFlagsMask = ~(TypeAttributes.VisibilityMask | TypeAttributes.LayoutMask | TypeAttributes.ClassSemanticsMask | TypeAttributes.StringFormatMask | TypeAttributes.CustomFormatMask); const TypeAttributes otherFlagsMask = ~(TypeAttributes.VisibilityMask | TypeAttributes.LayoutMask | TypeAttributes.ClassSemanticsMask | TypeAttributes.StringFormatMask | TypeAttributes.CustomFormatMask);
@ -110,8 +110,7 @@ namespace ICSharpCode.ILSpy.Metadata
public string TypeNamespace => metadata.GetString(type.Namespace); public string TypeNamespace => metadata.GetString(type.Namespace);
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int Implementation => MetadataTokens.GetToken(type.Implementation); public int Implementation => MetadataTokens.GetToken(type.Implementation);
public void OnImplementationClick() public void OnImplementationClick()

5
ILSpy/Metadata/CorTables/FieldLayoutTableTreeNode.cs

@ -98,8 +98,7 @@ namespace ICSharpCode.ILSpy.Metadata
public int Offset { get; } public int Offset { get; }
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int Field => MetadataTokens.GetToken(fieldLayout.Field); public int Field => MetadataTokens.GetToken(fieldLayout.Field);
public void OnFieldClick() public void OnFieldClick()
@ -116,7 +115,7 @@ namespace ICSharpCode.ILSpy.Metadata
} }
} }
[StringFormat("X")] [ColumnInfo("X8", Kind = ColumnKind.Other)]
public int FieldOffset => fieldLayout.Offset; public int FieldOffset => fieldLayout.Offset;
public FieldLayoutEntry(PEFile module, byte* ptr, int metadataOffset, int row) public FieldLayoutEntry(PEFile module, byte* ptr, int metadataOffset, int row)

5
ILSpy/Metadata/CorTables/FieldMarshalTableTreeNode.cs

@ -98,8 +98,7 @@ namespace ICSharpCode.ILSpy.Metadata
public int Offset { get; } public int Offset { get; }
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int Parent => MetadataTokens.GetToken(fieldMarshal.Parent); public int Parent => MetadataTokens.GetToken(fieldMarshal.Parent);
public void OnParentClick() public void OnParentClick()
@ -116,7 +115,7 @@ namespace ICSharpCode.ILSpy.Metadata
} }
} }
[StringFormat("X")] [ColumnInfo("X8", Kind = ColumnKind.HeapOffset)]
public int NativeType => MetadataTokens.GetHeapOffset(fieldMarshal.NativeType); public int NativeType => MetadataTokens.GetHeapOffset(fieldMarshal.NativeType);
public FieldMarshalEntry(PEFile module, byte* ptr, int metadataOffset, int row) public FieldMarshalEntry(PEFile module, byte* ptr, int metadataOffset, int row)

13
ILSpy/Metadata/CorTables/FieldRVATableTreeNode.cs

@ -90,7 +90,7 @@ namespace ICSharpCode.ILSpy.Metadata
{ {
readonly PEFile module; readonly PEFile module;
readonly MetadataReader metadata; readonly MetadataReader metadata;
readonly FieldRVA fieldLayout; readonly FieldRVA fieldRVA;
public int RID { get; } public int RID { get; }
@ -98,13 +98,12 @@ namespace ICSharpCode.ILSpy.Metadata
public int Offset { get; } public int Offset { get; }
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable] public int Field => MetadataTokens.GetToken(fieldRVA.Field);
public int Field => MetadataTokens.GetToken(fieldLayout.Field);
public void OnFieldClick() public void OnFieldClick()
{ {
MainWindow.Instance.JumpToReference(new EntityReference(module, fieldLayout.Field, protocol: "metadata")); MainWindow.Instance.JumpToReference(new EntityReference(module, fieldRVA.Field, protocol: "metadata"));
} }
public string FieldTooltip { public string FieldTooltip {
@ -116,8 +115,8 @@ namespace ICSharpCode.ILSpy.Metadata
} }
} }
[StringFormat("X")] [ColumnInfo("X8", Kind = ColumnKind.Other)]
public int FieldOffset => fieldLayout.Offset; public int FieldOffset => fieldRVA.Offset;
public FieldRVAEntry(PEFile module, byte* ptr, int metadataOffset, int row) public FieldRVAEntry(PEFile module, byte* ptr, int metadataOffset, int row)
{ {

4
ILSpy/Metadata/CorTables/FieldTableTreeNode.cs

@ -94,7 +94,7 @@ namespace ICSharpCode.ILSpy.Metadata
+ metadata.GetTableMetadataOffset(TableIndex.Field) + metadata.GetTableMetadataOffset(TableIndex.Field)
+ metadata.GetTableRowSize(TableIndex.Field) * (RID - 1); + metadata.GetTableRowSize(TableIndex.Field) * (RID - 1);
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Other)]
public FieldAttributes Attributes => fieldDef.Attributes; public FieldAttributes Attributes => fieldDef.Attributes;
const FieldAttributes otherFlagsMask = ~(FieldAttributes.FieldAccessMask); const FieldAttributes otherFlagsMask = ~(FieldAttributes.FieldAccessMask);
@ -110,7 +110,7 @@ namespace ICSharpCode.ILSpy.Metadata
IEntity IMemberTreeNode.Member => ((MetadataModule)module.GetTypeSystemWithCurrentOptionsOrNull()?.MainModule).GetDefinition(handle); IEntity IMemberTreeNode.Member => ((MetadataModule)module.GetTypeSystemWithCurrentOptionsOrNull()?.MainModule).GetDefinition(handle);
[StringFormat("X")] [ColumnInfo("X8", Kind = ColumnKind.HeapOffset)]
public int Signature => MetadataTokens.GetHeapOffset(fieldDef.Signature); public int Signature => MetadataTokens.GetHeapOffset(fieldDef.Signature);
public string SignatureTooltip { public string SignatureTooltip {

4
ILSpy/Metadata/CorTables/FileTableTreeNode.cs

@ -85,7 +85,7 @@ namespace ICSharpCode.ILSpy.Metadata
+ metadata.GetTableMetadataOffset(TableIndex.File) + metadata.GetTableMetadataOffset(TableIndex.File)
+ metadata.GetTableRowSize(TableIndex.File) * (RID - 1); + metadata.GetTableRowSize(TableIndex.File) * (RID - 1);
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Other)]
public int Attributes => assemblyFile.ContainsMetadata ? 1 : 0; public int Attributes => assemblyFile.ContainsMetadata ? 1 : 0;
public string AttributesTooltip => assemblyFile.ContainsMetadata ? "ContainsMetaData" : "ContainsNoMetaData"; public string AttributesTooltip => assemblyFile.ContainsMetadata ? "ContainsMetaData" : "ContainsNoMetaData";
@ -94,7 +94,7 @@ namespace ICSharpCode.ILSpy.Metadata
public string NameTooltip => $"{MetadataTokens.GetHeapOffset(assemblyFile.Name):X} \"{Name}\""; public string NameTooltip => $"{MetadataTokens.GetHeapOffset(assemblyFile.Name):X} \"{Name}\"";
[StringFormat("X")] [ColumnInfo("X8", Kind = ColumnKind.HeapOffset)]
public int HashValue => MetadataTokens.GetHeapOffset(assemblyFile.HashValue); public int HashValue => MetadataTokens.GetHeapOffset(assemblyFile.HashValue);
public string HashValueTooltip { public string HashValueTooltip {

6
ILSpy/Metadata/CorTables/GenericParamConstraintTableTreeNode.cs

@ -86,8 +86,7 @@ namespace ICSharpCode.ILSpy.Metadata
+ metadata.GetTableMetadataOffset(TableIndex.GenericParamConstraint) + metadata.GetTableMetadataOffset(TableIndex.GenericParamConstraint)
+ metadata.GetTableRowSize(TableIndex.GenericParamConstraint) * (RID - 1); + metadata.GetTableRowSize(TableIndex.GenericParamConstraint) * (RID - 1);
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int Owner => MetadataTokens.GetToken(genericParamConstraint.Parameter); public int Owner => MetadataTokens.GetToken(genericParamConstraint.Parameter);
public void OnOwnerClick() public void OnOwnerClick()
@ -111,8 +110,7 @@ namespace ICSharpCode.ILSpy.Metadata
} }
} }
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int Type => MetadataTokens.GetToken(genericParamConstraint.Type); public int Type => MetadataTokens.GetToken(genericParamConstraint.Type);
public void OnTypeClick() public void OnTypeClick()

5
ILSpy/Metadata/CorTables/GenericParamTableTreeNode.cs

@ -88,7 +88,7 @@ namespace ICSharpCode.ILSpy.Metadata
public int Number => genericParam.Index; public int Number => genericParam.Index;
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Other)]
public GenericParameterAttributes Attributes => genericParam.Attributes; public GenericParameterAttributes Attributes => genericParam.Attributes;
public object AttributesTooltip => new FlagsTooltip { public object AttributesTooltip => new FlagsTooltip {
@ -96,8 +96,7 @@ namespace ICSharpCode.ILSpy.Metadata
FlagGroup.CreateSingleChoiceGroup(typeof(GenericParameterAttributes), "Managed type: ", (int)GenericParameterAttributes.SpecialConstraintMask, (int)(genericParam.Attributes & GenericParameterAttributes.SpecialConstraintMask), new Flag("None (0000)", 0, false), includeAny: false), FlagGroup.CreateSingleChoiceGroup(typeof(GenericParameterAttributes), "Managed type: ", (int)GenericParameterAttributes.SpecialConstraintMask, (int)(genericParam.Attributes & GenericParameterAttributes.SpecialConstraintMask), new Flag("None (0000)", 0, false), includeAny: false),
}; };
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int Owner => MetadataTokens.GetToken(genericParam.Parent); public int Owner => MetadataTokens.GetToken(genericParam.Parent);
public void OnParentClick() public void OnParentClick()

8
ILSpy/Metadata/CorTables/ImplMapTableTreeNode.cs

@ -104,7 +104,7 @@ namespace ICSharpCode.ILSpy.Metadata
public int Offset { get; } public int Offset { get; }
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Other)]
public PInvokeAttributes MappingFlags => implMap.MappingFlags; public PInvokeAttributes MappingFlags => implMap.MappingFlags;
const PInvokeAttributes otherFlagsMask = ~(PInvokeAttributes.CallConvMask | PInvokeAttributes.CharSetMask); const PInvokeAttributes otherFlagsMask = ~(PInvokeAttributes.CallConvMask | PInvokeAttributes.CharSetMask);
@ -115,8 +115,7 @@ namespace ICSharpCode.ILSpy.Metadata
FlagGroup.CreateMultipleChoiceGroup(typeof(PInvokeAttributes), "Flags:", (int)otherFlagsMask, (int)(implMap.MappingFlags & otherFlagsMask), includeAll: false), FlagGroup.CreateMultipleChoiceGroup(typeof(PInvokeAttributes), "Flags:", (int)otherFlagsMask, (int)(implMap.MappingFlags & otherFlagsMask), includeAll: false),
}; };
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int MemberForwarded => MetadataTokens.GetToken(implMap.MemberForwarded); public int MemberForwarded => MetadataTokens.GetToken(implMap.MemberForwarded);
public void OnMemberForwardedClick() public void OnMemberForwardedClick()
@ -133,8 +132,7 @@ namespace ICSharpCode.ILSpy.Metadata
} }
} }
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int ImportScope => MetadataTokens.GetToken(implMap.ImportScope); public int ImportScope => MetadataTokens.GetToken(implMap.ImportScope);
public void OnImportScopeClick() public void OnImportScopeClick()

6
ILSpy/Metadata/CorTables/InterfaceImplTableTreeNode.cs

@ -98,8 +98,7 @@ namespace ICSharpCode.ILSpy.Metadata
public int Offset { get; } public int Offset { get; }
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int Class => MetadataTokens.GetToken(interfaceImpl.Class); public int Class => MetadataTokens.GetToken(interfaceImpl.Class);
public void OnClassClick() public void OnClassClick()
@ -116,8 +115,7 @@ namespace ICSharpCode.ILSpy.Metadata
} }
} }
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int Interface => MetadataTokens.GetToken(interfaceImpl.Interface); public int Interface => MetadataTokens.GetToken(interfaceImpl.Interface);
public void OnInterfaceClick() public void OnInterfaceClick()

5
ILSpy/Metadata/CorTables/ManifestResourceTableTreeNode.cs

@ -88,7 +88,7 @@ namespace ICSharpCode.ILSpy.Metadata
+ metadata.GetTableMetadataOffset(TableIndex.ManifestResource) + metadata.GetTableMetadataOffset(TableIndex.ManifestResource)
+ metadata.GetTableRowSize(TableIndex.ManifestResource) * (RID - 1); + metadata.GetTableRowSize(TableIndex.ManifestResource) * (RID - 1);
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Other)]
public ManifestResourceAttributes Attributes => manifestResource.Attributes; public ManifestResourceAttributes Attributes => manifestResource.Attributes;
public object AttributesTooltip => manifestResource.Attributes.ToString(); public object AttributesTooltip => manifestResource.Attributes.ToString();
@ -97,8 +97,7 @@ namespace ICSharpCode.ILSpy.Metadata
public string NameTooltip => $"{MetadataTokens.GetHeapOffset(manifestResource.Name):X} \"{Name}\""; public string NameTooltip => $"{MetadataTokens.GetHeapOffset(manifestResource.Name):X} \"{Name}\"";
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int Implementation => MetadataTokens.GetToken(manifestResource.Implementation); public int Implementation => MetadataTokens.GetToken(manifestResource.Implementation);
public void OnImplementationClick() public void OnImplementationClick()

5
ILSpy/Metadata/CorTables/MemberRefTableTreeNode.cs

@ -87,8 +87,7 @@ namespace ICSharpCode.ILSpy.Metadata
+ metadata.GetTableMetadataOffset(TableIndex.MemberRef) + metadata.GetTableMetadataOffset(TableIndex.MemberRef)
+ metadata.GetTableRowSize(TableIndex.MemberRef) * (RID - 1); + metadata.GetTableRowSize(TableIndex.MemberRef) * (RID - 1);
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int Parent => MetadataTokens.GetToken(memberRef.Parent); public int Parent => MetadataTokens.GetToken(memberRef.Parent);
public void OnParentClick() public void OnParentClick()
@ -108,7 +107,7 @@ namespace ICSharpCode.ILSpy.Metadata
public string NameTooltip => $"{MetadataTokens.GetHeapOffset(memberRef.Name):X} \"{Name}\""; public string NameTooltip => $"{MetadataTokens.GetHeapOffset(memberRef.Name):X} \"{Name}\"";
[StringFormat("X")] [ColumnInfo("X8", Kind = ColumnKind.HeapOffset)]
public int Signature => MetadataTokens.GetHeapOffset(memberRef.Signature); public int Signature => MetadataTokens.GetHeapOffset(memberRef.Signature);
public string SignatureTooltip { public string SignatureTooltip {

9
ILSpy/Metadata/CorTables/MethodImplTableTreeNode.cs

@ -86,8 +86,7 @@ namespace ICSharpCode.ILSpy.Metadata
+ metadata.GetTableMetadataOffset(TableIndex.MethodDef) + metadata.GetTableMetadataOffset(TableIndex.MethodDef)
+ metadata.GetTableRowSize(TableIndex.MethodDef) * (RID - 1); + metadata.GetTableRowSize(TableIndex.MethodDef) * (RID - 1);
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int MethodDeclaration => MetadataTokens.GetToken(methodImpl.MethodDeclaration); public int MethodDeclaration => MetadataTokens.GetToken(methodImpl.MethodDeclaration);
public void OnMethodDeclarationClick() public void OnMethodDeclarationClick()
@ -103,8 +102,7 @@ namespace ICSharpCode.ILSpy.Metadata
} }
} }
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int MethodBody => MetadataTokens.GetToken(methodImpl.MethodBody); public int MethodBody => MetadataTokens.GetToken(methodImpl.MethodBody);
public void OnMethodBodyClick() public void OnMethodBodyClick()
@ -120,8 +118,7 @@ namespace ICSharpCode.ILSpy.Metadata
} }
} }
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int Type => MetadataTokens.GetToken(methodImpl.Type); public int Type => MetadataTokens.GetToken(methodImpl.Type);
public void OnTypeClick() public void OnTypeClick()

8
ILSpy/Metadata/CorTables/MethodSemanticsTableTreeNode.cs

@ -90,13 +90,12 @@ namespace ICSharpCode.ILSpy.Metadata
+ metadata.GetTableMetadataOffset(TableIndex.MethodDef) + metadata.GetTableMetadataOffset(TableIndex.MethodDef)
+ metadata.GetTableRowSize(TableIndex.MethodDef) * (RID - 1); + metadata.GetTableRowSize(TableIndex.MethodDef) * (RID - 1);
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Other)]
public MethodSemanticsAttributes Semantics => semantics; public MethodSemanticsAttributes Semantics => semantics;
public string SemanticsTooltip => semantics.ToString(); public string SemanticsTooltip => semantics.ToString();
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int Method => MetadataTokens.GetToken(method); public int Method => MetadataTokens.GetToken(method);
public void OnMethodClick() public void OnMethodClick()
@ -112,8 +111,7 @@ namespace ICSharpCode.ILSpy.Metadata
} }
} }
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int Association => MetadataTokens.GetToken(association); public int Association => MetadataTokens.GetToken(association);
public void OnAssociationClick() public void OnAssociationClick()

5
ILSpy/Metadata/CorTables/MethodSpecTableTreeNode.cs

@ -87,8 +87,7 @@ namespace ICSharpCode.ILSpy.Metadata
+ metadata.GetTableMetadataOffset(TableIndex.MethodSpec) + metadata.GetTableMetadataOffset(TableIndex.MethodSpec)
+ metadata.GetTableRowSize(TableIndex.MethodSpec) * (RID - 1); + metadata.GetTableRowSize(TableIndex.MethodSpec) * (RID - 1);
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int Method => MetadataTokens.GetToken(methodSpec.Method); public int Method => MetadataTokens.GetToken(methodSpec.Method);
public void OnMethodClick() public void OnMethodClick()
@ -104,7 +103,7 @@ namespace ICSharpCode.ILSpy.Metadata
} }
} }
[StringFormat("X")] [ColumnInfo("X8", Kind = ColumnKind.HeapOffset)]
public int Signature => MetadataTokens.GetHeapOffset(methodSpec.Signature); public int Signature => MetadataTokens.GetHeapOffset(methodSpec.Signature);
public string SignatureTooltip { public string SignatureTooltip {

6
ILSpy/Metadata/CorTables/MethodTableTreeNode.cs

@ -92,7 +92,7 @@ namespace ICSharpCode.ILSpy.Metadata
+ metadata.GetTableMetadataOffset(TableIndex.MethodDef) + metadata.GetTableMetadataOffset(TableIndex.MethodDef)
+ metadata.GetTableRowSize(TableIndex.MethodDef) * (RID - 1); + metadata.GetTableRowSize(TableIndex.MethodDef) * (RID - 1);
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Other)]
public MethodAttributes Attributes => methodDef.Attributes; public MethodAttributes Attributes => methodDef.Attributes;
const MethodAttributes otherFlagsMask = ~(MethodAttributes.MemberAccessMask | MethodAttributes.VtableLayoutMask); const MethodAttributes otherFlagsMask = ~(MethodAttributes.MemberAccessMask | MethodAttributes.VtableLayoutMask);
@ -103,7 +103,7 @@ namespace ICSharpCode.ILSpy.Metadata
FlagGroup.CreateMultipleChoiceGroup(typeof(MethodAttributes), "Flags:", (int)otherFlagsMask, (int)(methodDef.Attributes & otherFlagsMask), includeAll: false), FlagGroup.CreateMultipleChoiceGroup(typeof(MethodAttributes), "Flags:", (int)otherFlagsMask, (int)(methodDef.Attributes & otherFlagsMask), includeAll: false),
}; };
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Other)]
public MethodImplAttributes ImplAttributes => methodDef.ImplAttributes; public MethodImplAttributes ImplAttributes => methodDef.ImplAttributes;
public object ImplAttributesTooltip => new FlagsTooltip { public object ImplAttributesTooltip => new FlagsTooltip {
@ -117,7 +117,7 @@ namespace ICSharpCode.ILSpy.Metadata
public string NameTooltip => $"{MetadataTokens.GetHeapOffset(methodDef.Name):X} \"{Name}\""; public string NameTooltip => $"{MetadataTokens.GetHeapOffset(methodDef.Name):X} \"{Name}\"";
[StringFormat("X")] [ColumnInfo("X8", Kind = ColumnKind.HeapOffset)]
public int Signature => MetadataTokens.GetHeapOffset(methodDef.Signature); public int Signature => MetadataTokens.GetHeapOffset(methodDef.Signature);
string signatureTooltip; string signatureTooltip;

6
ILSpy/Metadata/CorTables/ModuleTableTreeNode.cs

@ -82,17 +82,17 @@ namespace ICSharpCode.ILSpy.Metadata
public string NameTooltip => $"{MetadataTokens.GetHeapOffset(moduleDef.Name):X} \"{Name}\""; public string NameTooltip => $"{MetadataTokens.GetHeapOffset(moduleDef.Name):X} \"{Name}\"";
[StringFormat("X")] [ColumnInfo("X8", Kind = ColumnKind.HeapOffset)]
public int Mvid => MetadataTokens.GetHeapOffset(moduleDef.Mvid); public int Mvid => MetadataTokens.GetHeapOffset(moduleDef.Mvid);
public string MvidTooltip => metadata.GetGuid(moduleDef.Mvid).ToString(); public string MvidTooltip => metadata.GetGuid(moduleDef.Mvid).ToString();
[StringFormat("X")] [ColumnInfo("X8", Kind = ColumnKind.HeapOffset)]
public int GenerationId => MetadataTokens.GetHeapOffset(moduleDef.GenerationId); public int GenerationId => MetadataTokens.GetHeapOffset(moduleDef.GenerationId);
public string GenerationIdTooltip => moduleDef.GenerationId.IsNil ? null : metadata.GetGuid(moduleDef.GenerationId).ToString(); public string GenerationIdTooltip => moduleDef.GenerationId.IsNil ? null : metadata.GetGuid(moduleDef.GenerationId).ToString();
[StringFormat("X")] [ColumnInfo("X8", Kind = ColumnKind.HeapOffset)]
public int BaseGenerationId => MetadataTokens.GetHeapOffset(moduleDef.BaseGenerationId); public int BaseGenerationId => MetadataTokens.GetHeapOffset(moduleDef.BaseGenerationId);
public string BaseGenerationIdTooltip => moduleDef.BaseGenerationId.IsNil ? null : metadata.GetGuid(moduleDef.BaseGenerationId).ToString(); public string BaseGenerationIdTooltip => moduleDef.BaseGenerationId.IsNil ? null : metadata.GetGuid(moduleDef.BaseGenerationId).ToString();

6
ILSpy/Metadata/CorTables/NestedClassTableTreeNode.cs

@ -98,8 +98,7 @@ namespace ICSharpCode.ILSpy.Metadata
public int Offset { get; } public int Offset { get; }
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int NestedClass => MetadataTokens.GetToken(nestedClass.Nested); public int NestedClass => MetadataTokens.GetToken(nestedClass.Nested);
public void OnNestedClassClick() public void OnNestedClassClick()
@ -116,8 +115,7 @@ namespace ICSharpCode.ILSpy.Metadata
} }
} }
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int EnclosingClass => MetadataTokens.GetToken(nestedClass.Enclosing); public int EnclosingClass => MetadataTokens.GetToken(nestedClass.Enclosing);
public void OnEnclosingClassClick() public void OnEnclosingClassClick()

2
ILSpy/Metadata/CorTables/ParamTableTreeNode.cs

@ -85,7 +85,7 @@ namespace ICSharpCode.ILSpy.Metadata
+ metadata.GetTableMetadataOffset(TableIndex.Param) + metadata.GetTableMetadataOffset(TableIndex.Param)
+ metadata.GetTableRowSize(TableIndex.Param) * (RID - 1); + metadata.GetTableRowSize(TableIndex.Param) * (RID - 1);
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Other)]
public ParameterAttributes Attributes => param.Attributes; public ParameterAttributes Attributes => param.Attributes;
public object AttributesTooltip => new FlagsTooltip { public object AttributesTooltip => new FlagsTooltip {

6
ILSpy/Metadata/CorTables/PropertyMapTableTreeNode.cs

@ -98,8 +98,7 @@ namespace ICSharpCode.ILSpy.Metadata
public int Offset { get; } public int Offset { get; }
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int Parent => MetadataTokens.GetToken(propertyMap.Parent); public int Parent => MetadataTokens.GetToken(propertyMap.Parent);
public void OnParentClick() public void OnParentClick()
@ -116,8 +115,7 @@ namespace ICSharpCode.ILSpy.Metadata
} }
} }
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int PropertyList => MetadataTokens.GetToken(propertyMap.PropertyList); public int PropertyList => MetadataTokens.GetToken(propertyMap.PropertyList);
public void OnPropertyListClick() public void OnPropertyListClick()

4
ILSpy/Metadata/CorTables/PropertyTableTreeNode.cs

@ -90,7 +90,7 @@ namespace ICSharpCode.ILSpy.Metadata
+ metadata.GetTableMetadataOffset(TableIndex.Property) + metadata.GetTableMetadataOffset(TableIndex.Property)
+ metadata.GetTableRowSize(TableIndex.Property) * (RID - 1); + metadata.GetTableRowSize(TableIndex.Property) * (RID - 1);
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Other)]
public PropertyAttributes Attributes => propertyDef.Attributes; public PropertyAttributes Attributes => propertyDef.Attributes;
public object AttributesTooltip => new FlagsTooltip { public object AttributesTooltip => new FlagsTooltip {
@ -103,7 +103,7 @@ namespace ICSharpCode.ILSpy.Metadata
IEntity IMemberTreeNode.Member => ((MetadataModule)module.GetTypeSystemWithCurrentOptionsOrNull()?.MainModule).GetDefinition(handle); IEntity IMemberTreeNode.Member => ((MetadataModule)module.GetTypeSystemWithCurrentOptionsOrNull()?.MainModule).GetDefinition(handle);
[StringFormat("X")] [ColumnInfo("X8", Kind = ColumnKind.HeapOffset)]
public int Signature => MetadataTokens.GetHeapOffset(propertyDef.Signature); public int Signature => MetadataTokens.GetHeapOffset(propertyDef.Signature);
public string SignatureTooltip { public string SignatureTooltip {

2
ILSpy/Metadata/CorTables/StandAloneSigTableTreeNode.cs

@ -86,7 +86,7 @@ namespace ICSharpCode.ILSpy.Metadata
+ metadata.GetTableMetadataOffset(TableIndex.StandAloneSig) + metadata.GetTableMetadataOffset(TableIndex.StandAloneSig)
+ metadata.GetTableRowSize(TableIndex.StandAloneSig) * (RID - 1); + metadata.GetTableRowSize(TableIndex.StandAloneSig) * (RID - 1);
[StringFormat("X")] [ColumnInfo("X8", Kind = ColumnKind.HeapOffset)]
public int Signature => MetadataTokens.GetHeapOffset(standaloneSig.Signature); public int Signature => MetadataTokens.GetHeapOffset(standaloneSig.Signature);
public string SignatureTooltip { public string SignatureTooltip {

11
ILSpy/Metadata/CorTables/TypeDefTableTreeNode.cs

@ -91,7 +91,7 @@ namespace ICSharpCode.ILSpy.Metadata
+ metadata.GetTableMetadataOffset(TableIndex.TypeDef) + metadata.GetTableMetadataOffset(TableIndex.TypeDef)
+ metadata.GetTableRowSize(TableIndex.TypeDef) * (RID - 1); + metadata.GetTableRowSize(TableIndex.TypeDef) * (RID - 1);
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Other)]
public TypeAttributes Attributes => typeDef.Attributes; public TypeAttributes Attributes => typeDef.Attributes;
const TypeAttributes otherFlagsMask = ~(TypeAttributes.VisibilityMask | TypeAttributes.LayoutMask | TypeAttributes.ClassSemanticsMask | TypeAttributes.StringFormatMask | TypeAttributes.CustomFormatMask); const TypeAttributes otherFlagsMask = ~(TypeAttributes.VisibilityMask | TypeAttributes.LayoutMask | TypeAttributes.ClassSemanticsMask | TypeAttributes.StringFormatMask | TypeAttributes.CustomFormatMask);
@ -113,8 +113,7 @@ namespace ICSharpCode.ILSpy.Metadata
public string Namespace => metadata.GetString(typeDef.Namespace); public string Namespace => metadata.GetString(typeDef.Namespace);
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int BaseType => MetadataTokens.GetToken(typeDef.BaseType); public int BaseType => MetadataTokens.GetToken(typeDef.BaseType);
public void OnBaseTypeClick() public void OnBaseTypeClick()
@ -145,8 +144,7 @@ namespace ICSharpCode.ILSpy.Metadata
} }
} }
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int FieldList => MetadataTokens.GetToken(typeDef.GetFields().FirstOrDefault()); public int FieldList => MetadataTokens.GetToken(typeDef.GetFields().FirstOrDefault());
public void OnFieldListClick() public void OnFieldListClick()
@ -166,8 +164,7 @@ namespace ICSharpCode.ILSpy.Metadata
} }
} }
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int MethodList => MetadataTokens.GetToken(typeDef.GetMethods().FirstOrDefault()); public int MethodList => MetadataTokens.GetToken(typeDef.GetMethods().FirstOrDefault());
public void OnMethodListClick() public void OnMethodListClick()

3
ILSpy/Metadata/CorTables/TypeRefTableTreeNode.cs

@ -86,8 +86,7 @@ namespace ICSharpCode.ILSpy.Metadata
+ metadata.GetTableMetadataOffset(TableIndex.TypeRef) + metadata.GetTableMetadataOffset(TableIndex.TypeRef)
+ metadata.GetTableRowSize(TableIndex.TypeRef) * (RID - 1); + metadata.GetTableRowSize(TableIndex.TypeRef) * (RID - 1);
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int ResolutionScope => MetadataTokens.GetToken(typeRef.ResolutionScope); public int ResolutionScope => MetadataTokens.GetToken(typeRef.ResolutionScope);
public void OnResolutionScopeClick() public void OnResolutionScopeClick()

2
ILSpy/Metadata/CorTables/TypeSpecTableTreeNode.cs

@ -86,7 +86,7 @@ namespace ICSharpCode.ILSpy.Metadata
+ metadata.GetTableMetadataOffset(TableIndex.TypeSpec) + metadata.GetTableMetadataOffset(TableIndex.TypeSpec)
+ metadata.GetTableRowSize(TableIndex.TypeSpec) * (RID - 1); + metadata.GetTableRowSize(TableIndex.TypeSpec) * (RID - 1);
[StringFormat("X")] [ColumnInfo("X8", Kind = ColumnKind.HeapOffset)]
public int Signature => MetadataTokens.GetHeapOffset(typeSpec.Signature); public int Signature => MetadataTokens.GetHeapOffset(typeSpec.Signature);
public string SignatureTooltip { public string SignatureTooltip {

5
ILSpy/Metadata/DebugTables/CustomDebugInformationTableTreeNode.cs

@ -197,8 +197,7 @@ namespace ICSharpCode.ILSpy.Metadata
public object Offset => offset == null ? "n/a" : (object)offset; public object Offset => offset == null ? "n/a" : (object)offset;
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int Parent => MetadataTokens.GetToken(debugInfo.Parent); public int Parent => MetadataTokens.GetToken(debugInfo.Parent);
public void OnParentClick() public void OnParentClick()
@ -251,7 +250,7 @@ namespace ICSharpCode.ILSpy.Metadata
} }
} }
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.HeapOffset)]
public int Value => MetadataTokens.GetHeapOffset(debugInfo.Value); public int Value => MetadataTokens.GetHeapOffset(debugInfo.Value);
public string ValueTooltip { public string ValueTooltip {

6
ILSpy/Metadata/DebugTables/DocumentTableTreeNode.cs

@ -90,7 +90,7 @@ namespace ICSharpCode.ILSpy.Metadata
public string NameTooltip => $"{MetadataTokens.GetHeapOffset(document.Name):X} \"{Name}\""; public string NameTooltip => $"{MetadataTokens.GetHeapOffset(document.Name):X} \"{Name}\"";
[StringFormat("X")] [ColumnInfo("X8", Kind = ColumnKind.HeapOffset)]
public int HashAlgorithm => MetadataTokens.GetHeapOffset(document.HashAlgorithm); public int HashAlgorithm => MetadataTokens.GetHeapOffset(document.HashAlgorithm);
public string HashAlgorithmTooltip { public string HashAlgorithmTooltip {
@ -106,7 +106,7 @@ namespace ICSharpCode.ILSpy.Metadata
} }
} }
[StringFormat("X")] [ColumnInfo("X8", Kind = ColumnKind.HeapOffset)]
public int Hash => MetadataTokens.GetHeapOffset(document.Hash); public int Hash => MetadataTokens.GetHeapOffset(document.Hash);
public string HashTooltip { public string HashTooltip {
@ -118,7 +118,7 @@ namespace ICSharpCode.ILSpy.Metadata
} }
} }
[StringFormat("X")] [ColumnInfo("X8", Kind = ColumnKind.HeapOffset)]
public int Language => MetadataTokens.GetHeapOffset(document.Language); public int Language => MetadataTokens.GetHeapOffset(document.Language);
public string LanguageTooltip { public string LanguageTooltip {

5
ILSpy/Metadata/DebugTables/ImportScopeTableTreeNode.cs

@ -90,8 +90,7 @@ namespace ICSharpCode.ILSpy.Metadata
public object Offset => offset == null ? "n/a" : (object)offset; public object Offset => offset == null ? "n/a" : (object)offset;
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int Parent => MetadataTokens.GetToken(localScope.Parent); public int Parent => MetadataTokens.GetToken(localScope.Parent);
public void OnParentClick() public void OnParentClick()
@ -99,7 +98,7 @@ namespace ICSharpCode.ILSpy.Metadata
MainWindow.Instance.JumpToReference(new EntityReference(module, localScope.Parent, protocol: "metadata")); MainWindow.Instance.JumpToReference(new EntityReference(module, localScope.Parent, protocol: "metadata"));
} }
[StringFormat("X")] [ColumnInfo("X8", Kind = ColumnKind.HeapOffset)]
public int Imports => MetadataTokens.GetHeapOffset(localScope.ImportsBlob); public int Imports => MetadataTokens.GetHeapOffset(localScope.ImportsBlob);
public ImportScopeEntry(PEFile module, MetadataReader metadata, bool isEmbedded, ImportScopeHandle handle) public ImportScopeEntry(PEFile module, MetadataReader metadata, bool isEmbedded, ImportScopeHandle handle)

2
ILSpy/Metadata/DebugTables/LocalConstantTableTreeNode.cs

@ -92,7 +92,7 @@ namespace ICSharpCode.ILSpy.Metadata
public string NameTooltip => $"{MetadataTokens.GetHeapOffset(localConst.Name):X} \"{Name}\""; public string NameTooltip => $"{MetadataTokens.GetHeapOffset(localConst.Name):X} \"{Name}\"";
[StringFormat("X")] [ColumnInfo("X8", Kind = ColumnKind.HeapOffset)]
public int Signature => MetadataTokens.GetHeapOffset(localConst.Signature); public int Signature => MetadataTokens.GetHeapOffset(localConst.Signature);
public LocalConstantEntry(PEFile module, MetadataReader metadata, bool isEmbedded, LocalConstantHandle handle) public LocalConstantEntry(PEFile module, MetadataReader metadata, bool isEmbedded, LocalConstantHandle handle)

12
ILSpy/Metadata/DebugTables/LocalScopeTableTreeNode.cs

@ -90,8 +90,7 @@ namespace ICSharpCode.ILSpy.Metadata
public object Offset => offset == null ? "n/a" : (object)offset; public object Offset => offset == null ? "n/a" : (object)offset;
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int Method => MetadataTokens.GetToken(localScope.Method); public int Method => MetadataTokens.GetToken(localScope.Method);
public void OnMethodClick() public void OnMethodClick()
@ -107,8 +106,7 @@ namespace ICSharpCode.ILSpy.Metadata
} }
} }
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int ImportScope => MetadataTokens.GetToken(localScope.ImportScope); public int ImportScope => MetadataTokens.GetToken(localScope.ImportScope);
public void OnImportScopeClick() public void OnImportScopeClick()
@ -116,8 +114,7 @@ namespace ICSharpCode.ILSpy.Metadata
MainWindow.Instance.JumpToReference(new EntityReference(module, localScope.ImportScope, protocol: "metadata")); MainWindow.Instance.JumpToReference(new EntityReference(module, localScope.ImportScope, protocol: "metadata"));
} }
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int VariableList => MetadataTokens.GetToken(localScope.GetLocalVariables().FirstOrDefault()); public int VariableList => MetadataTokens.GetToken(localScope.GetLocalVariables().FirstOrDefault());
public void OnVariableListClick() public void OnVariableListClick()
@ -125,8 +122,7 @@ namespace ICSharpCode.ILSpy.Metadata
MainWindow.Instance.JumpToReference(new EntityReference(module, localScope.GetLocalVariables().FirstOrDefault(), protocol: "metadata")); MainWindow.Instance.JumpToReference(new EntityReference(module, localScope.GetLocalVariables().FirstOrDefault(), protocol: "metadata"));
} }
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int ConstantList => MetadataTokens.GetToken(localScope.GetLocalConstants().FirstOrDefault()); public int ConstantList => MetadataTokens.GetToken(localScope.GetLocalConstants().FirstOrDefault());
public void OnConstantListClick() public void OnConstantListClick()

2
ILSpy/Metadata/DebugTables/LocalVariableTableTreeNode.cs

@ -84,7 +84,7 @@ namespace ICSharpCode.ILSpy.Metadata
public object Offset => offset == null ? "n/a" : (object)offset; public object Offset => offset == null ? "n/a" : (object)offset;
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Other)]
public LocalVariableAttributes Attributes => localVar.Attributes; public LocalVariableAttributes Attributes => localVar.Attributes;
public object AttributesTooltip => new FlagsTooltip() { public object AttributesTooltip => new FlagsTooltip() {

8
ILSpy/Metadata/DebugTables/MethodDebugInformationTableTreeNode.cs

@ -88,8 +88,7 @@ namespace ICSharpCode.ILSpy.Metadata
public object Offset => offset == null ? "n/a" : (object)offset; public object Offset => offset == null ? "n/a" : (object)offset;
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int Document => MetadataTokens.GetToken(debugInfo.Document); public int Document => MetadataTokens.GetToken(debugInfo.Document);
public void OnDocumentClick() public void OnDocumentClick()
@ -106,7 +105,7 @@ namespace ICSharpCode.ILSpy.Metadata
} }
} }
[StringFormat("X")] [ColumnInfo("X8", Kind = ColumnKind.HeapOffset)]
public int SequencePoints => MetadataTokens.GetHeapOffset(debugInfo.SequencePointsBlob); public int SequencePoints => MetadataTokens.GetHeapOffset(debugInfo.SequencePointsBlob);
public string SequencePointsTooltip { public string SequencePointsTooltip {
@ -122,8 +121,7 @@ namespace ICSharpCode.ILSpy.Metadata
} }
} }
[StringFormat("X")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int LocalSignature => MetadataTokens.GetToken(debugInfo.LocalSignature); public int LocalSignature => MetadataTokens.GetToken(debugInfo.LocalSignature);
public void OnLocalSignatureClick() public void OnLocalSignatureClick()

6
ILSpy/Metadata/DebugTables/StateMachineMethodTableTreeNode.cs

@ -92,8 +92,7 @@ namespace ICSharpCode.ILSpy.Metadata
public object Offset => offset == null ? "n/a" : (object)offset; public object Offset => offset == null ? "n/a" : (object)offset;
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int MoveNextMethod => MetadataTokens.GetToken(moveNextMethod); public int MoveNextMethod => MetadataTokens.GetToken(moveNextMethod);
public void OnMoveNextMethodClick() public void OnMoveNextMethodClick()
@ -110,8 +109,7 @@ namespace ICSharpCode.ILSpy.Metadata
} }
} }
[StringFormat("X8")] [ColumnInfo("X8", Kind = ColumnKind.Token)]
[LinkToTable]
public int KickoffMethod => MetadataTokens.GetToken(kickoffMethod); public int KickoffMethod => MetadataTokens.GetToken(kickoffMethod);
public void OnKickofMethodClick() public void OnKickofMethodClick()

2
ILSpy/Metadata/GoToTokenCommand.cs

@ -60,7 +60,7 @@ namespace ICSharpCode.ILSpy.Commands
Type type = cell.Item.GetType(); Type type = cell.Item.GetType();
var property = type.GetProperty(cell.Column.Header.ToString()); var property = type.GetProperty(cell.Column.Header.ToString());
var moduleField = type.GetField("module", BindingFlags.NonPublic | BindingFlags.Instance); var moduleField = type.GetField("module", BindingFlags.NonPublic | BindingFlags.Instance);
if (property == null || property.PropertyType != typeof(int) || !property.GetCustomAttributes(false).Any(a => a is StringFormatAttribute sf && sf.Format == "X8")) if (property == null || property.PropertyType != typeof(int) || !property.GetCustomAttributes(false).Any(a => a is ColumnInfoAttribute { Kind: ColumnKind.Token } c))
return null; return null;
module = (PEFile)moduleField.GetValue(cell.Item); module = (PEFile)moduleField.GetValue(cell.Item);
return (int)property.GetValue(cell.Item); return (int)property.GetValue(cell.Item);

30
ILSpy/Metadata/Helpers.cs

@ -143,7 +143,7 @@ namespace ICSharpCode.ILSpy.Metadata
var descriptor = (PropertyDescriptor)e.PropertyDescriptor; var descriptor = (PropertyDescriptor)e.PropertyDescriptor;
if (descriptor.Attributes.OfType<LinkToTableAttribute>().Any()) if (descriptor.Attributes.OfType<ColumnInfoAttribute>().Any(c => c.Kind == ColumnKind.Token || c.LinkToTable))
{ {
return new DataGridTemplateColumn() { return new DataGridTemplateColumn() {
Header = e.PropertyName, Header = e.PropertyName,
@ -200,12 +200,12 @@ namespace ICSharpCode.ILSpy.Metadata
string key = descriptor.PropertyType.Name + "Filter"; string key = descriptor.PropertyType.Name + "Filter";
column.SetTemplate((ControlTemplate)MetadataTableViews.Instance[key]); column.SetTemplate((ControlTemplate)MetadataTableViews.Instance[key]);
} }
var stringFormat = descriptor.Attributes.OfType<StringFormatAttribute>().FirstOrDefault(); var columnInfo = descriptor.Attributes.OfType<ColumnInfoAttribute>().FirstOrDefault();
if (stringFormat != null) if (columnInfo != null)
{ {
binding.StringFormat = stringFormat.Format; binding.StringFormat = columnInfo.Format;
if (!descriptor.PropertyType.IsEnum if (!descriptor.PropertyType.IsEnum
&& stringFormat.Format.StartsWith("X", StringComparison.OrdinalIgnoreCase)) && columnInfo.Format.StartsWith("X", StringComparison.OrdinalIgnoreCase))
{ {
column.SetTemplate((ControlTemplate)MetadataTableViews.Instance["HexFilter"]); column.SetTemplate((ControlTemplate)MetadataTableViews.Instance["HexFilter"]);
} }
@ -297,20 +297,28 @@ namespace ICSharpCode.ILSpy.Metadata
} }
} }
class StringFormatAttribute : Attribute enum ColumnKind
{
HeapOffset,
Token,
Other
}
[AttributeUsage(AttributeTargets.Property)]
class ColumnInfoAttribute : Attribute
{ {
public string Format { get; } public string Format { get; }
public StringFormatAttribute(string format) public ColumnKind Kind { get; set; }
public bool LinkToTable { get; set; }
public ColumnInfoAttribute(string format)
{ {
this.Format = format; this.Format = format;
} }
} }
class LinkToTableAttribute : Attribute
{
}
[Flags] [Flags]
internal enum TableMask : ulong internal enum TableMask : ulong
{ {

Loading…
Cancel
Save