diff options
author | dotnet-bot <dotnet-bot@microsoft.com> | 2015-01-30 14:14:42 -0800 |
---|---|---|
committer | dotnet-bot <dotnet-bot@microsoft.com> | 2015-01-30 14:14:42 -0800 |
commit | ef1e2ab328087c61a6878c1e84f4fc5d710aebce (patch) | |
tree | dee1bbb89e9d722e16b0d1485e3cdd1b6c8e2cfa /src/vm/managedmdimport.hpp | |
download | coreclr-ef1e2ab328087c61a6878c1e84f4fc5d710aebce.tar.gz coreclr-ef1e2ab328087c61a6878c1e84f4fc5d710aebce.tar.bz2 coreclr-ef1e2ab328087c61a6878c1e84f4fc5d710aebce.zip |
Initial commit to populate CoreCLR repo
[tfs-changeset: 1407945]
Diffstat (limited to 'src/vm/managedmdimport.hpp')
-rw-r--r-- | src/vm/managedmdimport.hpp | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/src/vm/managedmdimport.hpp b/src/vm/managedmdimport.hpp new file mode 100644 index 0000000000..37db65d8a9 --- /dev/null +++ b/src/vm/managedmdimport.hpp @@ -0,0 +1,123 @@ +// +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. +// +//////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// + + + + +#ifndef _MANAGEDMDIMPORT_H_ +#define _MANAGEDMDIMPORT_H_ + +#include "corhdr.h" +#include "fcall.h" +#include "runtimehandles.h" + +// +// Keep the struct definitions in sync with bcl\system\reflection\mdimport.cs +// + +typedef struct +{ + INT32 m_count; + void* m_array; +} ConstArray; + +typedef struct +{ + I4Array * largeResult; + int length; +#ifdef _WIN64 + int padding; +#endif + int smallResult[16]; +} MetadataEnumResult; + +#define MDDecl0(RET, NAME) static FCDECL1(RET, NAME, IMDInternalImport* pScope) +#define MDDecl1(RET, NAME, arg0) static FCDECL2(RET, NAME, IMDInternalImport* pScope, arg0) +#define MDDecl2(RET, NAME, arg0, arg1) static FCDECL3(RET, NAME, IMDInternalImport* pScope, arg0, arg1) +#define MDDecl3(RET, NAME, arg0, arg1, arg2) static FCDECL4(RET, NAME, IMDInternalImport* pScope, arg0, arg1, arg2) +#define MDDecl4(RET, NAME, arg0, arg1, arg2, arg3) static FCDECL5(RET, NAME, IMDInternalImport* pScope, arg0, arg1, arg2, arg3) +#define MDDecl5(RET, NAME, arg0, arg1, arg2, arg3, arg4) static FCDECL6(RET, NAME, IMDInternalImport* pScope, arg0, arg1, arg2, arg3, arg4) +#define MDDecl6(RET, NAME, arg0, arg1, arg2, arg3, arg4, arg5) static FCDECL7(RET, NAME, IMDInternalImport* pScope, arg0, arg1, arg2, arg3, arg4, arg5) +#define MDDecl7(RET, NAME, arg0, arg1, arg2, arg3, arg4, arg5, arg6) static FCDECL8(RET, NAME, IMDInternalImport* pScope, arg0, arg1, arg2, arg3, arg4, arg5, arg6) +#define MDDecl8(RET, NAME, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) static FCDECL9(RET, NAME, IMDInternalImport* pScope, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) +#define MDDecl9(RET, NAME, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) static FCDECL10(RET, NAME, IMDInternalImport* pScope, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) +#define MDDecl10(RET, NAME, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) static FCDECL11(RET, NAME, IMDInternalImport* pScope, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) + +#define MDImpl0(RET, NAME) FCIMPL1(RET, NAME, IMDInternalImport* pScope) +#define MDImpl1(RET, NAME, arg0) FCIMPL2(RET, NAME, IMDInternalImport* pScope, arg0) +#define MDImpl2(RET, NAME, arg0, arg1) FCIMPL3(RET, NAME, IMDInternalImport* pScope, arg0, arg1) +#define MDImpl3(RET, NAME, arg0, arg1, arg2) FCIMPL4(RET, NAME, IMDInternalImport* pScope, arg0, arg1, arg2) +#define MDImpl4(RET, NAME, arg0, arg1, arg2, arg3) FCIMPL5(RET, NAME, IMDInternalImport* pScope, arg0, arg1, arg2, arg3) +#define MDImpl5(RET, NAME, arg0, arg1, arg2, arg3, arg4) FCIMPL6(RET, NAME, IMDInternalImport* pScope, arg0, arg1, arg2, arg3, arg4) +#define MDImpl6(RET, NAME, arg0, arg1, arg2, arg3, arg4, arg5) FCIMPL7(RET, NAME, IMDInternalImport* pScope, arg0, arg1, arg2, arg3, arg4, arg5) +#define MDImpl7(RET, NAME, arg0, arg1, arg2, arg3, arg4, arg5, arg6) FCIMPL8(RET, NAME, IMDInternalImport* pScope, arg0, arg1, arg2, arg3, arg4, arg5, arg6) +#define MDImpl8(RET, NAME, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) FCIMPL9(RET, NAME, IMDInternalImport* pScope, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) +#define MDImpl9(RET, NAME, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) FCIMPL10(RET, NAME, IMDInternalImport* pScope, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) +#define MDImpl10(RET, NAME, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) FCIMPL11(RET, NAME, IMDInternalImport* pScope, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) + +class MetaDataImport +{ +public: + // + // GetXXXProps + // + MDDecl1(void, GetScopeProps, GUID* pmvid); + MDDecl4(void, GetTypeDefProps, mdTypeDef td, STRINGREF* pszTypeDef, DWORD* pdwTypeDefFlags, mdToken* ptkExtends); + MDDecl2(void, GetMemberRefProps, mdMemberRef mr, ConstArray* ppvSigBlob); + + + //// + //// EnumXXX + //// + MDDecl3(void, Enum, mdToken type, mdToken tkParent, MetadataEnumResult * pResult); + MDDecl3(void, GetCustomAttributeProps, mdCustomAttribute cv, mdToken* ptkType, ConstArray* ppBlob); + + //// + //// Misc + //// + + MDDecl4(Object *, GetDefaultValue, mdToken tk, INT64* pDefaultValue, INT32* pLength, INT32* pCorElementType); + MDDecl2(void, GetName, mdToken tk, LPCSTR* pszName); + MDDecl3(void, GetUserString, mdToken tk, LPCSTR* pszName, ULONG* pCount); + MDDecl2(void, GetNamespace, mdToken tk, LPCSTR* pszName); + MDDecl2(void, GetParentToken, mdToken tk, mdToken* ptk); + MDDecl3(void, GetParamDefProps, mdToken tk, INT32* pSequence, INT32* pAttributes); + MDDecl4(void, GetPinvokeMap, mdToken tk, DWORD* pMappingFlags, LPCSTR* pszImportName, LPCSTR* pszImportDll); + + MDDecl3(void, GetClassLayout, mdTypeDef td, DWORD* pdwPackSize, ULONG* pulClassSize); + MDDecl3(FC_BOOL_RET, GetFieldOffset, mdTypeDef td, mdFieldDef target, DWORD* pdwFieldOffset); + + MDDecl3(void, GetEventProps, mdToken tk, LPCSTR* pszName, INT32 *pdwEventFlags); + MDDecl2(void, GetGenericParamProps, mdToken tk, DWORD* pAttributes); + MDDecl2(void, GetFieldDefProps, mdToken tk, INT32 *pdwFieldFlags); + MDDecl4(void, GetPropertyProps, mdToken tk, LPCSTR* pszName, INT32 *pdwPropertyFlags, ConstArray* ppvSigBlob); + + MDDecl2(void, GetSignatureFromToken, mdToken tk, ConstArray* pSig); + MDDecl2(void, GetSigOfFieldDef, mdToken tk, ConstArray* pMarshalInfo); + MDDecl2(void, GetSigOfMethodDef, mdToken tk, ConstArray* pMarshalInfo); + MDDecl2(void, GetFieldMarshal, mdToken tk, ConstArray* pMarshalInfo); + MDDecl2(mdParamDef, GetParamForMethodIndex, mdMethodDef md, ULONG ulParamSeq); + MDDecl1(FC_BOOL_RET, IsValidToken, mdToken tk); + MDDecl1(mdTypeDef, GetNestedClassProps, mdTypeDef tdNestedClass); + MDDecl1(ULONG, GetNativeCallConvFromSig, ConstArray sig); + + static FCDECL11(void, GetMarshalAs, + BYTE* pvNativeType, + ULONG cbNativeType, + INT32* unmanagedType, + INT32* safeArraySubType, + STRINGREF* safeArrayUserDefinedSubType, + INT32* arraySubType, + INT32* sizeParamIndex, + INT32* sizeConst, + STRINGREF* marshalType, + STRINGREF* marshalCookie, + INT32* iidParamIndex); +}; + +#endif |