Terraria
v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
MethodDefinition.cs
Go to the documentation of this file.
1
using
System.Reflection.Metadata.Ecma335
;
2
3
namespace
System.Reflection.Metadata
;
4
5
public
readonly
struct
MethodDefinition
6
{
7
private
readonly
MetadataReader
_reader
;
8
9
private
readonly uint
_treatmentAndRowId
;
10
11
private
int
RowId
=> (int)(
_treatmentAndRowId
& 0xFFFFFF);
12
13
private
MethodDefTreatment
Treatment
=> (
MethodDefTreatment
)(
_treatmentAndRowId
>> 24);
14
15
private
MethodDefinitionHandle
Handle
=>
MethodDefinitionHandle
.
FromRowId
(
RowId
);
16
17
public
StringHandle
Name
18
{
19
get
20
{
21
if
(
Treatment
==
MethodDefTreatment
.None)
22
{
23
return
_reader
.
MethodDefTable
.
GetName
(
Handle
);
24
}
25
return
GetProjectedName
();
26
}
27
}
28
29
public
BlobHandle
Signature
30
{
31
get
32
{
33
if
(
Treatment
==
MethodDefTreatment
.None)
34
{
35
return
_reader
.
MethodDefTable
.
GetSignature
(
Handle
);
36
}
37
return
GetProjectedSignature
();
38
}
39
}
40
41
public
int
RelativeVirtualAddress
42
{
43
get
44
{
45
if
(
Treatment
==
MethodDefTreatment
.None)
46
{
47
return
_reader
.
MethodDefTable
.
GetRva
(
Handle
);
48
}
49
return
GetProjectedRelativeVirtualAddress
();
50
}
51
}
52
53
public
MethodAttributes
Attributes
54
{
55
get
56
{
57
if
(
Treatment
==
MethodDefTreatment
.None)
58
{
59
return
_reader
.
MethodDefTable
.
GetFlags
(
Handle
);
60
}
61
return
GetProjectedFlags
();
62
}
63
}
64
65
public
MethodImplAttributes
ImplAttributes
66
{
67
get
68
{
69
if
(
Treatment
==
MethodDefTreatment
.None)
70
{
71
return
_reader
.
MethodDefTable
.
GetImplFlags
(
Handle
);
72
}
73
return
GetProjectedImplFlags
();
74
}
75
}
76
77
internal
MethodDefinition
(
MetadataReader
reader, uint treatmentAndRowId)
78
{
79
_reader
= reader;
80
_treatmentAndRowId
= treatmentAndRowId;
81
}
82
83
public
MethodSignature<TType>
DecodeSignature<TType, TGenericContext>
(
ISignatureTypeProvider<TType, TGenericContext>
provider, TGenericContext genericContext)
84
{
85
SignatureDecoder<TType, TGenericContext>
signatureDecoder =
new
SignatureDecoder<TType, TGenericContext>
(provider,
_reader
, genericContext);
86
BlobReader
blobReader =
_reader
.
GetBlobReader
(
Signature
);
87
return
signatureDecoder.
DecodeMethodSignature
(ref blobReader);
88
}
89
90
public
TypeDefinitionHandle
GetDeclaringType
()
91
{
92
return
_reader
.
GetDeclaringType
(
Handle
);
93
}
94
95
public
ParameterHandleCollection
GetParameters
()
96
{
97
return
new
ParameterHandleCollection
(
_reader
,
Handle
);
98
}
99
100
public
GenericParameterHandleCollection
GetGenericParameters
()
101
{
102
return
_reader
.
GenericParamTable
.
FindGenericParametersForMethod
(
Handle
);
103
}
104
105
public
MethodImport
GetImport
()
106
{
107
int
num =
_reader
.
ImplMapTable
.
FindImplForMethod
(
Handle
);
108
if
(num == 0)
109
{
110
return
default
(
MethodImport
);
111
}
112
return
_reader
.
ImplMapTable
.
GetImport
(num);
113
}
114
115
public
CustomAttributeHandleCollection
GetCustomAttributes
()
116
{
117
return
new
CustomAttributeHandleCollection
(
_reader
,
Handle
);
118
}
119
120
public
DeclarativeSecurityAttributeHandleCollection
GetDeclarativeSecurityAttributes
()
121
{
122
return
new
DeclarativeSecurityAttributeHandleCollection
(
_reader
,
Handle
);
123
}
124
125
private
StringHandle
GetProjectedName
()
126
{
127
if
((
Treatment
&
MethodDefTreatment
.KindMask) ==
MethodDefTreatment
.DisposeMethod)
128
{
129
return
StringHandle
.
FromVirtualIndex
(
StringHandle
.
VirtualIndex
.Dispose);
130
}
131
return
_reader
.
MethodDefTable
.
GetName
(
Handle
);
132
}
133
134
private
MethodAttributes
GetProjectedFlags
()
135
{
136
MethodAttributes
methodAttributes =
_reader
.
MethodDefTable
.
GetFlags
(
Handle
);
137
MethodDefTreatment
treatment =
Treatment
;
138
if
((treatment &
MethodDefTreatment
.KindMask) ==
MethodDefTreatment
.HiddenInterfaceImplementation)
139
{
140
methodAttributes = (methodAttributes &
~MethodAttributes
.MemberAccessMask) |
MethodAttributes
.Private;
141
}
142
if
((treatment &
MethodDefTreatment
.MarkAbstractFlag) != 0)
143
{
144
methodAttributes |=
MethodAttributes
.Abstract;
145
}
146
if
((treatment &
MethodDefTreatment
.MarkPublicFlag) != 0)
147
{
148
methodAttributes = (methodAttributes &
~MethodAttributes
.MemberAccessMask) |
MethodAttributes
.Public;
149
}
150
return
methodAttributes |
MethodAttributes
.HideBySig;
151
}
152
153
private
MethodImplAttributes
GetProjectedImplFlags
()
154
{
155
MethodImplAttributes
methodImplAttributes =
_reader
.
MethodDefTable
.
GetImplFlags
(
Handle
);
156
switch
(
Treatment
&
MethodDefTreatment
.KindMask)
157
{
158
case
MethodDefTreatment
.DelegateMethod:
159
methodImplAttributes |=
MethodImplAttributes
.CodeTypeMask;
160
break
;
161
case
MethodDefTreatment
.Other:
162
case
MethodDefTreatment
.AttributeMethod:
163
case
MethodDefTreatment
.InterfaceMethod:
164
case
MethodDefTreatment
.HiddenInterfaceImplementation:
165
case
MethodDefTreatment
.DisposeMethod:
166
methodImplAttributes |= (
MethodImplAttributes
)4099;
167
break
;
168
}
169
return
methodImplAttributes;
170
}
171
172
private
BlobHandle
GetProjectedSignature
()
173
{
174
return
_reader
.
MethodDefTable
.
GetSignature
(
Handle
);
175
}
176
177
private
int
GetProjectedRelativeVirtualAddress
()
178
{
179
return
0;
180
}
181
}
System.Reflection.Metadata.MetadataReader.MethodDefTable
MethodTableReader MethodDefTable
Definition
MetadataReader.cs:87
System.Reflection.Metadata.MetadataReader.GetDeclaringType
TypeDefinitionHandle GetDeclaringType(MethodDefinitionHandle methodDef)
Definition
MetadataReader.cs:1159
System.Reflection.Metadata.MetadataReader.GetBlobReader
BlobReader GetBlobReader(BlobHandle handle)
Definition
MetadataReader.cs:944
System.Reflection.Metadata.MetadataReader.ImplMapTable
ImplMapTableReader ImplMapTable
Definition
MetadataReader.cs:131
System.Reflection.Metadata.MetadataReader.GenericParamTable
GenericParamTableReader GenericParamTable
Definition
MetadataReader.cs:159
System.Reflection.Metadata.MetadataReader
Definition
MetadataReader.cs:12
System.Signature
Definition
Signature.cs:8
System.Reflection.Metadata.ISignatureTypeProvider
Definition
ISignatureTypeProvider.cs:4
System.Reflection.Metadata.Ecma335.MethodDefTreatment
MethodDefTreatment
Definition
MethodDefTreatment.cs:5
System.Reflection.Metadata.Ecma335
Definition
ArrayShapeEncoder.cs:3
System.Reflection.Metadata
Definition
AssemblyExtensions.cs:4
System.Reflection.MethodImplAttributes
MethodImplAttributes
Definition
MethodImplAttributes.cs:4
System.Reflection.MethodAttributes
MethodAttributes
Definition
MethodAttributes.cs:5
System.Reflection.Metadata.BlobHandle
Definition
BlobHandle.cs:6
System.Reflection.Metadata.BlobReader
Definition
BlobReader.cs:10
System.Reflection.Metadata.CustomAttributeHandleCollection
Definition
CustomAttributeHandleCollection.cs:7
System.Reflection.Metadata.DeclarativeSecurityAttributeHandleCollection
Definition
DeclarativeSecurityAttributeHandleCollection.cs:7
System.Reflection.Metadata.Ecma335.GenericParamTableReader.FindGenericParametersForMethod
GenericParameterHandleCollection FindGenericParametersForMethod(MethodDefinitionHandle methodDef)
Definition
GenericParamTableReader.cs:74
System.Reflection.Metadata.Ecma335.ImplMapTableReader.GetImport
MethodImport GetImport(int rowId)
Definition
ImplMapTableReader.cs:45
System.Reflection.Metadata.Ecma335.ImplMapTableReader.FindImplForMethod
int FindImplForMethod(MethodDefinitionHandle methodDef)
Definition
ImplMapTableReader.cs:60
System.Reflection.Metadata.Ecma335.MethodTableReader.GetName
StringHandle GetName(MethodDefinitionHandle handle)
Definition
MethodTableReader.cs:65
System.Reflection.Metadata.Ecma335.MethodTableReader.GetSignature
BlobHandle GetSignature(MethodDefinitionHandle handle)
Definition
MethodTableReader.cs:53
System.Reflection.Metadata.Ecma335.MethodTableReader.GetFlags
MethodAttributes GetFlags(MethodDefinitionHandle handle)
Definition
MethodTableReader.cs:71
System.Reflection.Metadata.Ecma335.MethodTableReader.GetImplFlags
MethodImplAttributes GetImplFlags(MethodDefinitionHandle handle)
Definition
MethodTableReader.cs:77
System.Reflection.Metadata.Ecma335.MethodTableReader.GetRva
int GetRva(MethodDefinitionHandle handle)
Definition
MethodTableReader.cs:59
System.Reflection.Metadata.Ecma335.SignatureDecoder.DecodeMethodSignature
MethodSignature< TType > DecodeMethodSignature(ref BlobReader blobReader)
Definition
SignatureDecoder.cs:118
System.Reflection.Metadata.Ecma335.SignatureDecoder
Definition
SignatureDecoder.cs:6
System.Reflection.Metadata.GenericParameterHandleCollection
Definition
GenericParameterHandleCollection.cs:7
System.Reflection.Metadata.Handle
Definition
Handle.cs:6
System.Reflection.Metadata.MethodDefinitionHandle.FromRowId
static MethodDefinitionHandle FromRowId(int rowId)
Definition
MethodDefinitionHandle.cs:16
System.Reflection.Metadata.MethodDefinitionHandle
Definition
MethodDefinitionHandle.cs:4
System.Reflection.Metadata.MethodDefinition.GetDeclarativeSecurityAttributes
DeclarativeSecurityAttributeHandleCollection GetDeclarativeSecurityAttributes()
Definition
MethodDefinition.cs:120
System.Reflection.Metadata.MethodDefinition._reader
readonly MetadataReader _reader
Definition
MethodDefinition.cs:7
System.Reflection.Metadata.MethodDefinition.GetParameters
ParameterHandleCollection GetParameters()
Definition
MethodDefinition.cs:95
System.Reflection.Metadata.MethodDefinition.Treatment
MethodDefTreatment Treatment
Definition
MethodDefinition.cs:13
System.Reflection.Metadata.MethodDefinition.GetDeclaringType
TypeDefinitionHandle GetDeclaringType()
Definition
MethodDefinition.cs:90
System.Reflection.Metadata.MethodDefinition.DecodeSignature< TType, TGenericContext >
MethodSignature< TType > DecodeSignature< TType, TGenericContext >(ISignatureTypeProvider< TType, TGenericContext > provider, TGenericContext genericContext)
Definition
MethodDefinition.cs:83
System.Reflection.Metadata.MethodDefinition.RelativeVirtualAddress
int RelativeVirtualAddress
Definition
MethodDefinition.cs:42
System.Reflection.Metadata.MethodDefinition.GetProjectedSignature
BlobHandle GetProjectedSignature()
Definition
MethodDefinition.cs:172
System.Reflection.Metadata.MethodDefinition.MethodDefinition
MethodDefinition(MetadataReader reader, uint treatmentAndRowId)
Definition
MethodDefinition.cs:77
System.Reflection.Metadata.MethodDefinition.GetProjectedName
StringHandle GetProjectedName()
Definition
MethodDefinition.cs:125
System.Reflection.Metadata.MethodDefinition.GetProjectedImplFlags
MethodImplAttributes GetProjectedImplFlags()
Definition
MethodDefinition.cs:153
System.Reflection.Metadata.MethodDefinition.RowId
int RowId
Definition
MethodDefinition.cs:11
System.Reflection.Metadata.MethodDefinition.Attributes
MethodAttributes Attributes
Definition
MethodDefinition.cs:54
System.Reflection.Metadata.MethodDefinition.GetCustomAttributes
CustomAttributeHandleCollection GetCustomAttributes()
Definition
MethodDefinition.cs:115
System.Reflection.Metadata.MethodDefinition.GetProjectedFlags
MethodAttributes GetProjectedFlags()
Definition
MethodDefinition.cs:134
System.Reflection.Metadata.MethodDefinition.GetImport
MethodImport GetImport()
Definition
MethodDefinition.cs:105
System.Reflection.Metadata.MethodDefinition.ImplAttributes
MethodImplAttributes ImplAttributes
Definition
MethodDefinition.cs:66
System.Reflection.Metadata.MethodDefinition._treatmentAndRowId
readonly uint _treatmentAndRowId
Definition
MethodDefinition.cs:9
System.Reflection.Metadata.MethodDefinition.Name
StringHandle Name
Definition
MethodDefinition.cs:18
System.Reflection.Metadata.MethodDefinition.GetGenericParameters
GenericParameterHandleCollection GetGenericParameters()
Definition
MethodDefinition.cs:100
System.Reflection.Metadata.MethodDefinition.GetProjectedRelativeVirtualAddress
int GetProjectedRelativeVirtualAddress()
Definition
MethodDefinition.cs:177
System.Reflection.Metadata.MethodDefinition
Definition
MethodDefinition.cs:6
System.Reflection.Metadata.MethodImport
Definition
MethodImport.cs:4
System.Reflection.Metadata.MethodSignature
Definition
MethodSignature.cs:6
System.Reflection.Metadata.ParameterHandleCollection
Definition
ParameterHandleCollection.cs:7
System.Reflection.Metadata.StringHandle.FromVirtualIndex
static StringHandle FromVirtualIndex(VirtualIndex virtualIndex)
Definition
StringHandle.cs:103
System.Reflection.Metadata.StringHandle.VirtualIndex
VirtualIndex
Definition
StringHandle.cs:8
System.Reflection.Metadata.StringHandle
Definition
StringHandle.cs:6
System.Reflection.Metadata.TypeDefinitionHandle
Definition
TypeDefinitionHandle.cs:4
source
System.Reflection.Metadata
System.Reflection.Metadata
MethodDefinition.cs
Generated by
1.10.0