1
0
mirror of https://github.com/vcmi/vcmi.git synced 2026-06-19 22:57:37 +02:00
Files
vcmi/lib/CAndroidVMHelper.h
T

57 lines
1.4 KiB
C++
Raw Normal View History

2017-05-25 19:57:20 +02:00
/*
* CAndroidVMHelper.h, part of VCMI engine
*
* Authors: listed in file AUTHORS in main folder
*
* License: GNU General Public License v2.0 or later
* Full text of license available in license.txt file, in main folder
*
*/
#pragma once
2017-07-22 21:27:25 +02:00
#include "Global.h"
#ifdef VCMI_ANDROID
2017-05-25 19:57:20 +02:00
#include <jni.h>
#include <string>
2023-02-26 12:18:24 +03:00
VCMI_LIB_NAMESPACE_BEGIN
2017-05-25 19:57:20 +02:00
/// helper class that allows access to java vm to communicate with java code from native
2023-02-25 10:15:09 +03:00
class DLL_LINKAGE CAndroidVMHelper
2017-05-25 19:57:20 +02:00
{
JNIEnv * envPtr;
bool detachInDestructor;
jclass findClass(const std::string & name, bool classloaded);
public:
CAndroidVMHelper();
~CAndroidVMHelper();
JNIEnv * get();
jclass findClassloadedClass(const std::string & name);
void callStaticVoidMethod(const std::string & cls, const std::string & method, bool classloaded = false);
std::string callStaticStringMethod(const std::string & cls, const std::string & method, bool classloaded = false);
void callCustomMethod(const std::string & cls, const std::string & method, const std::string & signature,
std::function<void(JNIEnv *, jclass, jmethodID)> fun, bool classloaded = false);
2017-05-25 19:57:20 +02:00
static void cacheVM(JNIEnv * env);
static void initClassloader(void * baseEnv);
static bool alwaysUseLoadedClass;
2017-05-25 19:57:20 +02:00
static constexpr const char * NATIVE_METHODS_DEFAULT_CLASS = "eu/vcmi/vcmi/NativeMethods";
};
2023-02-26 12:18:24 +03:00
VCMI_LIB_NAMESPACE_END
#endif