mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-21 05:09:34 -06:00
Android: Expose a proper interface for C++ IniFile class
Replaces the inflexible INI functions in NativeLibrary.
This commit is contained in:
@ -30,6 +30,12 @@ static jclass s_linked_hash_map_class;
|
||||
static jmethodID s_linked_hash_map_init;
|
||||
static jmethodID s_linked_hash_map_put;
|
||||
|
||||
static jclass s_ini_file_class;
|
||||
static jfieldID s_ini_file_pointer;
|
||||
static jclass s_ini_file_section_class;
|
||||
static jfieldID s_ini_file_section_pointer;
|
||||
static jmethodID s_ini_file_section_constructor;
|
||||
|
||||
namespace IDCache
|
||||
{
|
||||
JNIEnv* GetEnvForThread()
|
||||
@ -89,6 +95,7 @@ jmethodID GetAnalyticsValue()
|
||||
{
|
||||
return s_get_analytics_value;
|
||||
}
|
||||
|
||||
jclass GetGameFileClass()
|
||||
{
|
||||
return s_game_file_class;
|
||||
@ -129,6 +136,31 @@ jmethodID GetLinkedHashMapPut()
|
||||
return s_linked_hash_map_put;
|
||||
}
|
||||
|
||||
jclass GetIniFileClass()
|
||||
{
|
||||
return s_ini_file_class;
|
||||
}
|
||||
|
||||
jfieldID GetIniFilePointer()
|
||||
{
|
||||
return s_ini_file_pointer;
|
||||
}
|
||||
|
||||
jclass GetIniFileSectionClass()
|
||||
{
|
||||
return s_ini_file_section_class;
|
||||
}
|
||||
|
||||
jfieldID GetIniFileSectionPointer()
|
||||
{
|
||||
return s_ini_file_section_pointer;
|
||||
}
|
||||
|
||||
jmethodID GetIniFileSectionConstructor()
|
||||
{
|
||||
return s_ini_file_section_constructor;
|
||||
}
|
||||
|
||||
} // namespace IDCache
|
||||
|
||||
#ifdef __cplusplus
|
||||
@ -150,16 +182,19 @@ jint JNI_OnLoad(JavaVM* vm, void* reserved)
|
||||
s_do_rumble = env->GetStaticMethodID(s_native_library_class, "rumble", "(ID)V");
|
||||
s_get_update_touch_pointer =
|
||||
env->GetStaticMethodID(s_native_library_class, "updateTouchPointer", "()V");
|
||||
env->DeleteLocalRef(native_library_class);
|
||||
|
||||
const jclass game_file_class = env->FindClass("org/dolphinemu/dolphinemu/model/GameFile");
|
||||
s_game_file_class = reinterpret_cast<jclass>(env->NewGlobalRef(game_file_class));
|
||||
s_game_file_pointer = env->GetFieldID(game_file_class, "mPointer", "J");
|
||||
s_game_file_constructor = env->GetMethodID(game_file_class, "<init>", "(J)V");
|
||||
env->DeleteLocalRef(game_file_class);
|
||||
|
||||
const jclass game_file_cache_class =
|
||||
env->FindClass("org/dolphinemu/dolphinemu/model/GameFileCache");
|
||||
s_game_file_cache_class = reinterpret_cast<jclass>(env->NewGlobalRef(game_file_cache_class));
|
||||
s_game_file_cache_pointer = env->GetFieldID(game_file_cache_class, "mPointer", "J");
|
||||
env->DeleteLocalRef(game_file_cache_class);
|
||||
|
||||
const jclass analytics_class = env->FindClass("org/dolphinemu/dolphinemu/utils/Analytics");
|
||||
s_analytics_class = reinterpret_cast<jclass>(env->NewGlobalRef(analytics_class));
|
||||
@ -167,6 +202,20 @@ jint JNI_OnLoad(JavaVM* vm, void* reserved)
|
||||
env->GetStaticMethodID(s_analytics_class, "sendReport", "(Ljava/lang/String;[B)V");
|
||||
s_get_analytics_value = env->GetStaticMethodID(s_analytics_class, "getValue",
|
||||
"(Ljava/lang/String;)Ljava/lang/String;");
|
||||
env->DeleteLocalRef(analytics_class);
|
||||
|
||||
const jclass ini_file_class = env->FindClass("org/dolphinemu/dolphinemu/utils/IniFile");
|
||||
s_ini_file_class = reinterpret_cast<jclass>(env->NewGlobalRef(ini_file_class));
|
||||
s_ini_file_pointer = env->GetFieldID(ini_file_class, "mPointer", "J");
|
||||
env->DeleteLocalRef(ini_file_class);
|
||||
|
||||
const jclass ini_file_section_class =
|
||||
env->FindClass("org/dolphinemu/dolphinemu/utils/IniFile$Section");
|
||||
s_ini_file_section_class = reinterpret_cast<jclass>(env->NewGlobalRef(ini_file_section_class));
|
||||
s_ini_file_section_pointer = env->GetFieldID(ini_file_section_class, "mPointer", "J");
|
||||
s_ini_file_section_constructor = env->GetMethodID(
|
||||
ini_file_section_class, "<init>", "(Lorg/dolphinemu/dolphinemu/utils/IniFile;J)V");
|
||||
env->DeleteLocalRef(ini_file_section_class);
|
||||
|
||||
const jclass map_class = env->FindClass("java/util/LinkedHashMap");
|
||||
s_linked_hash_map_class = reinterpret_cast<jclass>(env->NewGlobalRef(map_class));
|
||||
@ -188,6 +237,8 @@ void JNI_OnUnload(JavaVM* vm, void* reserved)
|
||||
env->DeleteGlobalRef(s_game_file_cache_class);
|
||||
env->DeleteGlobalRef(s_analytics_class);
|
||||
env->DeleteGlobalRef(s_linked_hash_map_class);
|
||||
env->DeleteGlobalRef(s_ini_file_class);
|
||||
env->DeleteGlobalRef(s_ini_file_section_class);
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
Reference in New Issue
Block a user