diff options
Diffstat (limited to 'src/ilasm/class.hpp')
-rw-r--r-- | src/ilasm/class.hpp | 118 |
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 */ + |