summaryrefslogtreecommitdiff
path: root/src/vm/commodule.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/vm/commodule.h')
-rw-r--r--src/vm/commodule.h143
1 files changed, 143 insertions, 0 deletions
diff --git a/src/vm/commodule.h b/src/vm/commodule.h
new file mode 100644
index 0000000000..255b22dfbf
--- /dev/null
+++ b/src/vm/commodule.h
@@ -0,0 +1,143 @@
+// 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.
+////////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef _COMModule_H_
+#define _COMModule_H_
+
+#include "invokeutil.h"
+
+class Module;
+
+class COMModule
+{
+public:
+ // Attaches an unmanaged symwriter to a newly created dynamic module.
+ static FCDECL2(LPVOID, nCreateISymWriterForDynamicModule, ReflectModuleBaseObject* reflectionModuleUNSAFE, StringObject* filenameUNSAFE);
+
+#ifdef FEATURE_MULTIMODULE_ASSEMBLIES
+ // DefineDynamicModule
+ // This method will create a dynamic module given an assembly
+ static
+ void QCALLTYPE DefineDynamicModule(QCall::AssemblyHandle pContainingAssembly, BOOL emitSymbolInfo, LPCWSTR pModuleName, LPCWSTR pFilename, QCall::StackCrawlMarkHandle stackMark, LPVOID* ppInternalSymWriter, QCall::ObjectHandleOnStack retModule, BOOL fIsTransient, INT32* ptkFile);
+#endif // FEATURE_MULTIMODULE_ASSEMBLIES
+
+ // IsTransient
+ // Determine if a Module is transient
+ static
+ BOOL QCALLTYPE IsTransient(QCall::ModuleHandle pModule);
+
+ // GetTypeRef
+ // This function will return the class token for the named element.
+ static
+ mdTypeRef QCALLTYPE GetTypeRef(QCall::ModuleHandle pModule,
+ LPCWSTR wszFullName,
+ QCall::ModuleHandle pRefedModule,
+ LPCWSTR wszRefedModuleFileName,
+ INT32 tkResolution);
+
+ // LoadInMemoryTypeByName
+ // This function will return the class token for the named element.
+ static
+ void QCALLTYPE LoadInMemoryTypeByName(QCall::ModuleHandle pModule, LPCWSTR wszFullName);
+
+
+ // SetFieldRVAContent
+ // This function is used to set the FieldRVA with the content data
+ static
+ void QCALLTYPE SetFieldRVAContent(QCall::ModuleHandle pModule, INT32 tkField, LPCBYTE pContent, INT32 length);
+
+
+ //GetArrayMethodToken
+ static
+ INT32 QCALLTYPE GetArrayMethodToken(QCall::ModuleHandle pModule,
+ INT32 tkTypeSpec,
+ LPCWSTR wszMethodName,
+ LPCBYTE pSignature,
+ INT32 sigLength);
+
+ // GetMemberRefToken
+ // This function will return the MemberRef token
+ static
+ INT32 QCALLTYPE GetMemberRef(QCall::ModuleHandle pModule, QCall::ModuleHandle pRefedModule, INT32 tr, INT32 token);
+
+ // This function return a MemberRef token given a MethodInfo describing a array method
+ static
+ INT32 QCALLTYPE GetMemberRefOfMethodInfo(QCall::ModuleHandle pModule, INT32 tr, MethodDesc * method);
+
+
+ // GetMemberRefOfFieldInfo
+ // This function will return a memberRef token given a FieldInfo
+ static
+ mdMemberRef QCALLTYPE GetMemberRefOfFieldInfo(QCall::ModuleHandle pModule, mdTypeDef tr, EnregisteredTypeHandle th, mdFieldDef tkField);
+
+ // GetMemberRefFromSignature
+ // This function will return the MemberRef token given the signature from managed code
+ static
+ INT32 QCALLTYPE GetMemberRefFromSignature(QCall::ModuleHandle pModule,
+ INT32 tr,
+ LPCWSTR wszMemberName,
+ LPCBYTE pSignature,
+ INT32 sigLength);
+
+ // GetTokenFromTypeSpec
+ static
+ mdTypeSpec QCALLTYPE GetTokenFromTypeSpec(QCall::ModuleHandle pModule, LPCBYTE pSignature, INT32 sigLength);
+
+ // GetType
+ // Given a class type, this method will look for that type
+ // with in the module.
+ static
+ void QCALLTYPE GetType(QCall::ModuleHandle pModule, LPCWSTR wszName, BOOL bThrowOnError, BOOL bIgnoreCase, QCall::ObjectHandleOnStack retType, QCall::ObjectHandleOnStack keepAlive);
+
+ // Get class will return an array contain all of the classes
+ // that are defined within this Module.
+ static FCDECL1(Object*, GetTypes, ReflectModuleBaseObject* pModuleUNSAFE);
+
+ // GetStringConstant
+ // If this is a dynamic module, this routine will define a new
+ // string constant or return the token of an existing constant.
+ static
+ mdString QCALLTYPE GetStringConstant(QCall::ModuleHandle pModule, LPCWSTR pwzValue, INT32 iLength);
+
+#if defined(FEATURE_X509) && defined(FEATURE_CAS_POLICY)
+ /*X509Certificate*/
+ static
+ void QCALLTYPE GetSignerCertificate(QCall::ModuleHandle pModule, QCall::ObjectHandleOnStack retData);
+#endif // #if defined(FEATURE_X509) && defined(FEATURE_CAS_POLICY)
+
+ static
+ void QCALLTYPE SetModuleName(QCall::ModuleHandle pModule, LPCWSTR wszModuleName);
+
+ static FCDECL1(FC_BOOL_RET, IsResource, ReflectModuleBaseObject* pModuleUNSAFE);
+
+ static FCDECL1(Object*, GetMethods, ReflectModuleBaseObject* refThisUNSAFE);
+
+ static
+ void QCALLTYPE GetScopeName(QCall::ModuleHandle pModule, QCall::StringHandleOnStack retString);
+
+ static
+ void QCALLTYPE GetFullyQualifiedName(QCall::ModuleHandle pModule, QCall::StringHandleOnStack retString);
+
+ static
+ HINSTANCE QCALLTYPE GetHINSTANCE(QCall::ModuleHandle pModule);
+
+ static void DefineTypeRefHelper(
+ IMetaDataEmit *pEmit, // given emit scope
+ mdTypeDef td, // given typedef in the emit scope
+ mdTypeRef *ptr); // return typeref
+
+};
+
+class COMPunkSafeHandle
+{
+ public:
+#ifdef FEATURE_CORECLR
+ static FCDECL0(void*, nGetDReleaseTarget);
+#endif
+};
+
+#endif