summaryrefslogtreecommitdiff
path: root/src/ilasm/class.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ilasm/class.hpp')
-rw-r--r--src/ilasm/class.hpp118
1 files changed, 118 insertions, 0 deletions
diff --git a/src/ilasm/class.hpp b/src/ilasm/class.hpp
new file mode 100644
index 0000000000..f281c77f5a
--- /dev/null
+++ b/src/ilasm/class.hpp
@@ -0,0 +1,118 @@
+// 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.
+//
+// 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;
+ 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(!wcscmp(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 */
+