android_common.cpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #include "jni/android_common/android_common.h"
  4. #include <string>
  5. #include <string_view>
  6. #include <jni.h>
  7. #include "common/string_util.h"
  8. #include "jni/id_cache.h"
  9. std::string GetJString(JNIEnv* env, jstring jstr) {
  10. if (!jstr) {
  11. return {};
  12. }
  13. const jchar* jchars = env->GetStringChars(jstr, nullptr);
  14. const jsize length = env->GetStringLength(jstr);
  15. const std::u16string_view string_view(reinterpret_cast<const char16_t*>(jchars), length);
  16. const std::string converted_string = Common::UTF16ToUTF8(string_view);
  17. env->ReleaseStringChars(jstr, jchars);
  18. return converted_string;
  19. }
  20. jstring ToJString(JNIEnv* env, std::string_view str) {
  21. const std::u16string converted_string = Common::UTF8ToUTF16(str);
  22. return env->NewString(reinterpret_cast<const jchar*>(converted_string.data()),
  23. static_cast<jint>(converted_string.size()));
  24. }
  25. jstring ToJString(JNIEnv* env, std::u16string_view str) {
  26. return ToJString(env, Common::UTF16ToUTF8(str));
  27. }
  28. double GetJDouble(JNIEnv* env, jobject jdouble) {
  29. return env->GetDoubleField(jdouble, IDCache::GetDoubleValueField());
  30. }
  31. jobject ToJDouble(JNIEnv* env, double value) {
  32. return env->NewObject(IDCache::GetDoubleClass(), IDCache::GetDoubleConstructor(), value);
  33. }