diff options
| author | JosJuice <josjuice@gmail.com> | 2020-07-07 12:26:38 +0200 |
|---|---|---|
| committer | JosJuice <josjuice@gmail.com> | 2020-09-06 13:29:56 +0200 |
| commit | c6a308380c1f73cf9c707ec2223ee9c8b6ac75d3 (patch) | |
| tree | fa2ac6b51e18d75edf76c5d7396af5e2d34c491a /Source/Android/jni/IniFile.cpp | |
| parent | 74f197caedf00df80c411f6cfb299fae5822adba (diff) | |
Android: Replace Java INI parser with C++ INI parser
Fixes https://bugs.dolphin-emu.org/issues/12096.
Diffstat (limited to 'Source/Android/jni/IniFile.cpp')
| -rw-r--r-- | Source/Android/jni/IniFile.cpp | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/Source/Android/jni/IniFile.cpp b/Source/Android/jni/IniFile.cpp index 0237fec4dc..d275dcff00 100644 --- a/Source/Android/jni/IniFile.cpp +++ b/Source/Android/jni/IniFile.cpp @@ -29,6 +29,20 @@ static jobject SectionToJava(JNIEnv* env, jobject ini_file, IniFile::Section* se } template <typename T> +static T GetInSection(JNIEnv* env, jobject obj, jstring key, T default_value) +{ + T result; + GetSectionPointer(env, obj)->Get(GetJString(env, key), &result, default_value); + return result; +} + +template <typename T> +static void SetInSection(JNIEnv* env, jobject obj, jstring key, T new_value) +{ + GetSectionPointer(env, obj)->Set(GetJString(env, key), new_value); +} + +template <typename T> static T Get(JNIEnv* env, jobject obj, jstring section_name, jstring key, T default_value) { T result; @@ -50,6 +64,66 @@ static void Set(JNIEnv* env, jobject obj, jstring section_name, jstring key, T n extern "C" { #endif +JNIEXPORT jboolean JNICALL Java_org_dolphinemu_dolphinemu_utils_IniFile_00024Section_exists( + JNIEnv* env, jobject obj, jstring key) +{ + return static_cast<jboolean>(GetSectionPointer(env, obj)->Exists(GetJString(env, key))); +} + +JNIEXPORT jboolean JNICALL Java_org_dolphinemu_dolphinemu_utils_IniFile_00024Section_delete( + JNIEnv* env, jobject obj, jstring key) +{ + return static_cast<jboolean>(GetSectionPointer(env, obj)->Delete(GetJString(env, key))); +} + +JNIEXPORT jstring JNICALL Java_org_dolphinemu_dolphinemu_utils_IniFile_00024Section_getString( + JNIEnv* env, jobject obj, jstring key, jstring default_value) +{ + return ToJString(env, GetInSection(env, obj, key, GetJString(env, default_value))); +} + +JNIEXPORT jboolean JNICALL Java_org_dolphinemu_dolphinemu_utils_IniFile_00024Section_getBoolean( + JNIEnv* env, jobject obj, jstring key, jboolean default_value) +{ + return static_cast<jboolean>(GetInSection(env, obj, key, static_cast<bool>(default_value))); +} + +JNIEXPORT jint JNICALL Java_org_dolphinemu_dolphinemu_utils_IniFile_00024Section_getInt( + JNIEnv* env, jobject obj, jstring key, jint default_value) +{ + return GetInSection(env, obj, key, default_value); +} + +JNIEXPORT jfloat JNICALL Java_org_dolphinemu_dolphinemu_utils_IniFile_00024Section_getFloat( + JNIEnv* env, jobject obj, jstring key, jfloat default_value) +{ + return GetInSection(env, obj, key, default_value); +} + +JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_utils_IniFile_00024Section_setString( + JNIEnv* env, jobject obj, jstring key, jstring new_value) +{ + SetInSection(env, obj, key, GetJString(env, new_value)); +} + +JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_utils_IniFile_00024Section_setBoolean( + JNIEnv* env, jobject obj, jstring key, jboolean new_value) +{ + SetInSection(env, obj, key, static_cast<bool>(new_value)); +} + +JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_utils_IniFile_00024Section_setInt( + JNIEnv* env, jobject obj, jstring key, jint new_value) +{ + SetInSection(env, obj, key, new_value); +} + +JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_utils_IniFile_00024Section_setFloat( + JNIEnv* env, jobject obj, jstring key, jfloat new_value) +{ + SetInSection(env, obj, key, new_value); +} + JNIEXPORT jboolean JNICALL Java_org_dolphinemu_dolphinemu_utils_IniFile_load( JNIEnv* env, jobject obj, jstring path, jboolean keep_current_data) { @@ -64,6 +138,41 @@ JNIEXPORT jboolean JNICALL Java_org_dolphinemu_dolphinemu_utils_IniFile_save(JNI return static_cast<jboolean>(GetIniFilePointer(env, obj)->Save(GetJString(env, path))); } +JNIEXPORT jobject JNICALL Java_org_dolphinemu_dolphinemu_utils_IniFile_getOrCreateSection( + JNIEnv* env, jobject obj, jstring section_name) +{ + return SectionToJava( + env, obj, GetIniFilePointer(env, obj)->GetOrCreateSection(GetJString(env, section_name))); +} + +JNIEXPORT jboolean JNICALL Java_org_dolphinemu_dolphinemu_utils_IniFile_exists__Ljava_lang_String_2( + JNIEnv* env, jobject obj, jstring section_name) +{ + return static_cast<jboolean>(GetIniFilePointer(env, obj)->Exists(GetJString(env, section_name))); +} + +JNIEXPORT jboolean JNICALL +Java_org_dolphinemu_dolphinemu_utils_IniFile_exists__Ljava_lang_String_2Ljava_lang_String_2( + JNIEnv* env, jobject obj, jstring section_name, jstring key) +{ + return static_cast<jboolean>( + GetIniFilePointer(env, obj)->Exists(GetJString(env, section_name), GetJString(env, key))); +} + +JNIEXPORT jboolean JNICALL Java_org_dolphinemu_dolphinemu_utils_IniFile_deleteSection( + JNIEnv* env, jobject obj, jstring section_name) +{ + return static_cast<jboolean>( + GetIniFilePointer(env, obj)->DeleteSection(GetJString(env, section_name))); +} + +JNIEXPORT jboolean JNICALL Java_org_dolphinemu_dolphinemu_utils_IniFile_deleteKey( + JNIEnv* env, jobject obj, jstring section_name, jstring key) +{ + return static_cast<jboolean>( + GetIniFilePointer(env, obj)->DeleteKey(GetJString(env, section_name), GetJString(env, key))); +} + JNIEXPORT jstring JNICALL Java_org_dolphinemu_dolphinemu_utils_IniFile_getString( JNIEnv* env, jobject obj, jstring section_name, jstring key, jstring default_value) { @@ -84,6 +193,12 @@ JNIEXPORT jint JNICALL Java_org_dolphinemu_dolphinemu_utils_IniFile_getInt(JNIEn return Get(env, obj, section_name, key, default_value); } +JNIEXPORT jfloat JNICALL Java_org_dolphinemu_dolphinemu_utils_IniFile_getFloat( + JNIEnv* env, jobject obj, jstring section_name, jstring key, jfloat default_value) +{ + return Get(env, obj, section_name, key, default_value); +} + JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_utils_IniFile_setString( JNIEnv* env, jobject obj, jstring section_name, jstring key, jstring new_value) { @@ -104,6 +219,12 @@ JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_utils_IniFile_setInt(JNIEn Set(env, obj, section_name, key, new_value); } +JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_utils_IniFile_setFloat( + JNIEnv* env, jobject obj, jstring section_name, jstring key, jfloat new_value) +{ + Set(env, obj, section_name, key, new_value); +} + JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_utils_IniFile_finalize(JNIEnv* env, jobject obj) { @@ -116,6 +237,13 @@ JNIEXPORT jlong JNICALL Java_org_dolphinemu_dolphinemu_utils_IniFile_newIniFile( return reinterpret_cast<jlong>(new IniFile); } +JNIEXPORT jlong JNICALL Java_org_dolphinemu_dolphinemu_utils_IniFile_copyIniFile(JNIEnv* env, + jobject obj, + jobject other) +{ + return reinterpret_cast<jlong>(new IniFile(*GetIniFilePointer(env, other))); +} + #ifdef __cplusplus } #endif |
