# Conflicts: # Source/Platforms/DotNet/NUnit/agents/net40/nunit-agent.exe # Source/Platforms/DotNet/NUnit/agents/net40/nunit.engine.api.dll # Source/Platforms/DotNet/NUnit/agents/net40/nunit.engine.core.dll # Source/Platforms/DotNet/NUnit/agents/net7.0/nunit.agent.addins # Source/Platforms/DotNet/NUnit/nunit.engine.api.dll # Source/Platforms/DotNet/NUnit/nunit.engine.core.dll # Source/Platforms/DotNet/NUnit/nunit.engine.dll # Source/Platforms/DotNet/NUnit/nunit3-console.exe # Source/Platforms/DotNet/NUnit/nunit3-console.exe.config # Source/Platforms/DotNet/NUnit/testcentric.engine.metadata.dll # Source/Tools/Flax.Build/Deps/Downloader.cs # Source/Tools/Flax.Stats/CodeFrame.cs # Source/Tools/Flax.Stats/CodeFrameNode.cs # Source/Tools/Flax.Stats/Flax.Stats.Build.cs # Source/Tools/Flax.Stats/Languages.cs # Source/Tools/Flax.Stats/Program.cs # Source/Tools/Flax.Stats/TaskType.cs # Source/Tools/Flax.Stats/Tools.cs # Source/Tools/FlaxEngine.Tests/TestEditorUtils.cs
68 lines
2.2 KiB
C++
68 lines
2.2 KiB
C++
// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "Engine/Core/Types/String.h"
|
|
#include "Engine/Core/Collections/Array.h"
|
|
#include "Engine/Scripting/Types.h"
|
|
|
|
#if USE_NETCORE
|
|
|
|
#if defined(_WIN32)
|
|
#define CORECLR_DELEGATE_CALLTYPE __stdcall
|
|
#define FLAX_CORECLR_STRING String
|
|
#else
|
|
#define CORECLR_DELEGATE_CALLTYPE
|
|
#define FLAX_CORECLR_STRING StringAnsi
|
|
#endif
|
|
|
|
class CoreCLR
|
|
{
|
|
private:
|
|
public:
|
|
static bool LoadHostfxr(const String& library_path);
|
|
static bool InitHostfxr(const String& config_path, const String& library_path);
|
|
|
|
/// <summary>
|
|
/// Returns the function pointer to the managed static method in NativeInterop class.
|
|
/// </summary>
|
|
static void* GetStaticMethodPointer(const String& methodName);
|
|
|
|
/// <summary>
|
|
/// Calls the managed static method in NativeInterop class with given parameters.
|
|
/// </summary>
|
|
template<typename RetType, typename ...Args>
|
|
static inline RetType CallStaticMethodByName(const String& methodName, Args... args)
|
|
{
|
|
typedef RetType(CORECLR_DELEGATE_CALLTYPE* fun)(Args...);
|
|
return ((fun)GetStaticMethodPointer(methodName))(args...);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Calls the managed static method with given parameters.
|
|
/// </summary>
|
|
template<typename RetType, typename ...Args>
|
|
static inline RetType CallStaticMethod(void* methodPtr, Args... args)
|
|
{
|
|
typedef RetType(CORECLR_DELEGATE_CALLTYPE* fun)(Args...);
|
|
return ((fun)methodPtr)(args...);
|
|
}
|
|
|
|
static void RegisterNativeLibrary(const char* moduleName, const char* modulePath);
|
|
|
|
static const char* GetClassFullname(void* klass);
|
|
static void* Allocate(int size);
|
|
static void Free(void* ptr);
|
|
static MGCHandle NewGCHandle(void* obj, bool pinned);
|
|
static MGCHandle NewGCHandleWeakref(void* obj, bool track_resurrection);
|
|
static void* GetGCHandleTarget(const MGCHandle& MGCHandle);
|
|
static void FreeGCHandle(const MGCHandle& MGCHandle);
|
|
|
|
static bool HasCustomAttribute(void* klass, void* attribClass);
|
|
static bool HasCustomAttribute(void* klass);
|
|
static void* GetCustomAttribute(void* klass, void* attribClass);
|
|
static Array<MObject*> GetCustomAttributes(void* klass);
|
|
};
|
|
|
|
#endif
|