summaryrefslogtreecommitdiff
path: root/src/common/android/android_common.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/android/android_common.cpp')
-rw-r--r--src/common/android/android_common.cpp65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/common/android/android_common.cpp b/src/common/android/android_common.cpp
new file mode 100644
index 000000000..e79005658
--- /dev/null
+++ b/src/common/android/android_common.cpp
@@ -0,0 +1,65 @@
1// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
2// SPDX-License-Identifier: GPL-2.0-or-later
3
4#include "android_common.h"
5
6#include <string>
7#include <string_view>
8
9#include <jni.h>
10
11#include "common/android/id_cache.h"
12#include "common/string_util.h"
13
14namespace Common::Android {
15
16std::string GetJString(JNIEnv* env, jstring jstr) {
17 if (!jstr) {
18 return {};
19 }
20
21 const jchar* jchars = env->GetStringChars(jstr, nullptr);
22 const jsize length = env->GetStringLength(jstr);
23 const std::u16string_view string_view(reinterpret_cast<const char16_t*>(jchars),
24 static_cast<u32>(length));
25 const std::string converted_string = Common::UTF16ToUTF8(string_view);
26 env->ReleaseStringChars(jstr, jchars);
27
28 return converted_string;
29}
30
31jstring ToJString(JNIEnv* env, std::string_view str) {
32 const std::u16string converted_string = Common::UTF8ToUTF16(str);
33 return env->NewString(reinterpret_cast<const jchar*>(converted_string.data()),
34 static_cast<jint>(converted_string.size()));
35}
36
37jstring ToJString(JNIEnv* env, std::u16string_view str) {
38 return ToJString(env, Common::UTF16ToUTF8(str));
39}
40
41double GetJDouble(JNIEnv* env, jobject jdouble) {
42 return env->GetDoubleField(jdouble, GetDoubleValueField());
43}
44
45jobject ToJDouble(JNIEnv* env, double value) {
46 return env->NewObject(GetDoubleClass(), GetDoubleConstructor(), value);
47}
48
49s32 GetJInteger(JNIEnv* env, jobject jinteger) {
50 return env->GetIntField(jinteger, GetIntegerValueField());
51}
52
53jobject ToJInteger(JNIEnv* env, s32 value) {
54 return env->NewObject(GetIntegerClass(), GetIntegerConstructor(), value);
55}
56
57bool GetJBoolean(JNIEnv* env, jobject jboolean) {
58 return env->GetBooleanField(jboolean, GetBooleanValueField());
59}
60
61jobject ToJBoolean(JNIEnv* env, bool value) {
62 return env->NewObject(GetBooleanClass(), GetBooleanConstructor(), value);
63}
64
65} // namespace Common::Android