blob: 4d7416ebf8c9c146492a0d4fe3afc534618a8b06 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
//
// File: typedesc.inl
//
//
//
// ============================================================================
#ifndef _TYPEDESC_INL_
#define _TYPEDESC_INL_
inline PTR_MethodTable TypeDesc::GetMethodTable() {
LIMITED_METHOD_DAC_CONTRACT;
if (IsGenericVariable())
return NULL;
if (GetInternalCorElementType() == ELEMENT_TYPE_FNPTR)
return MscorlibBinder::GetElementType(ELEMENT_TYPE_U);
_ASSERTE(HasTypeParam());
ParamTypeDesc* asParam = dac_cast<PTR_ParamTypeDesc>(this);
if (GetInternalCorElementType() == ELEMENT_TYPE_VALUETYPE)
return dac_cast<PTR_MethodTable>(asParam->m_Arg.AsMethodTable());
else
return(asParam->m_TemplateMT.GetValue());
}
inline TypeHandle TypeDesc::GetTypeParam() {
LIMITED_METHOD_DAC_CONTRACT;
if (IsGenericVariable() || IsFnPtr())
return TypeHandle();
_ASSERTE(HasTypeParam());
ParamTypeDesc* asParam = dac_cast<PTR_ParamTypeDesc>(this);
return(asParam->m_Arg);
}
inline TypeHandle ParamTypeDesc::GetTypeParam() {
LIMITED_METHOD_DAC_CONTRACT;
return(this->m_Arg);
}
inline Instantiation TypeDesc::GetClassOrArrayInstantiation() {
LIMITED_METHOD_DAC_CONTRACT;
if (GetInternalCorElementType() != ELEMENT_TYPE_FNPTR)
{
ParamTypeDesc* asParam = dac_cast<PTR_ParamTypeDesc>(this);
return Instantiation(&asParam->m_Arg, 1);
}
else
return Instantiation();
}
#endif // _TYPEDESC_INL_
|