forked from dotnet/runtime
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathclass.hpp
119 lines (103 loc) · 2.62 KB
/
class.hpp
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
//
// class.hpp
//
#ifndef _CLASS_HPP
#define _CLASS_HPP
class PermissionDecl;
class PermissionSetDecl;
extern unsigned int g_uCodePage;
extern WCHAR wzUniBuf[];
class Class
{
public:
Class * m_pEncloser;
LPCUTF8 m_szFQN;
DWORD m_dwFQN;
unsigned m_Hash;
mdTypeDef m_cl;
mdTypeRef m_crExtends;
mdTypeRef *m_crImplements;
TyParDescr* m_TyPars;
DWORD m_NumTyPars;
GenericParamConstraintList m_GPCList;
DWORD m_Attr;
DWORD m_dwNumInterfaces;
DWORD m_dwNumFieldsWithOffset;
PermissionDecl* m_pPermissions;
PermissionSetDecl* m_pPermissionSets;
ULONG m_ulSize;
ULONG m_ulPack;
BOOL m_bIsMaster;
BOOL m_fNew;
BOOL m_fNewMembers;
MethodList m_MethodList;
//MethodSortedList m_MethodSList;
FieldDList m_FieldDList;
EventDList m_EventDList;
PropDList m_PropDList;
CustomDescrList m_CustDList;
Class(LPCUTF8 pszFQN)
{
m_pEncloser = NULL;
m_cl = mdTypeDefNil;
m_crExtends = mdTypeRefNil;
m_NumTyPars = 0;
m_TyPars = NULL;
m_dwNumInterfaces = 0;
m_dwNumFieldsWithOffset = 0;
m_crImplements = NULL;
m_szFQN = pszFQN;
m_dwFQN = pszFQN ? (DWORD)strlen(pszFQN) : 0;
m_Hash = pszFQN ? hash((const BYTE*)pszFQN, m_dwFQN, 10) : 0;
m_Attr = tdPublic;
m_bIsMaster = TRUE;
m_fNew = TRUE;
m_pPermissions = NULL;
m_pPermissionSets = NULL;
m_ulPack = 0;
m_ulSize = 0xFFFFFFFF;
}
~Class()
{
delete [] m_szFQN;
delete [] m_crImplements;
delete [] m_TyPars;
}
int FindTyPar(LPCWSTR wz)
{
int i,retval=-1;
for(i=0; i < (int)m_NumTyPars; i++)
{
if(!u16_strcmp(wz,m_TyPars[i].Name()))
{
retval = i;
break;
}
}
return retval;
};
int FindTyPar(LPCUTF8 sz)
{
if(sz)
{
wzUniBuf[0] = 0;
WszMultiByteToWideChar(g_uCodePage,0,sz,-1,wzUniBuf,dwUniBuf);
return FindTyPar(wzUniBuf);
}
else return -1;
};
int ComparedTo(Class* T)
{
if (m_Hash == T->m_Hash)
{
// Properly handle hash conflict
return (m_szFQN == T->m_szFQN) ? 0 : strcmp(m_szFQN, T->m_szFQN);
} else
{
return (m_Hash > T->m_Hash) ? 1 : -1;
}
}
};
#endif /* _CLASS_HPP */