summaryrefslogtreecommitdiff
path: root/src/vm/managedmdimport.hpp
diff options
context:
space:
mode:
authordotnet-bot <dotnet-bot@microsoft.com>2015-01-30 14:14:42 -0800
committerdotnet-bot <dotnet-bot@microsoft.com>2015-01-30 14:14:42 -0800
commitef1e2ab328087c61a6878c1e84f4fc5d710aebce (patch)
treedee1bbb89e9d722e16b0d1485e3cdd1b6c8e2cfa /src/vm/managedmdimport.hpp
downloadcoreclr-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.hpp123
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