From a1948df0dc858c88078ef4bb6566bf2393b69c4e Mon Sep 17 00:00:00 2001 From: LoveSy Date: Wed, 6 Dec 2023 21:26:24 +0800 Subject: [PATCH] Fix call of JObjectArrayElement --- lsplant/src/main/jni/include/utils/jni_helper.hpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/lsplant/src/main/jni/include/utils/jni_helper.hpp b/lsplant/src/main/jni/include/utils/jni_helper.hpp index 6c3f466..ef775f7 100644 --- a/lsplant/src/main/jni/include/utils/jni_helper.hpp +++ b/lsplant/src/main/jni/include/utils/jni_helper.hpp @@ -82,6 +82,8 @@ private: DISALLOW_COPY_AND_ASSIGN(ScopedLocalRef); }; +class JObjectArrayElement; + template concept JArray = std::is_base_of_v, std::remove_pointer_t>; @@ -114,7 +116,9 @@ public: template concept ScopeOrRaw = std::is_convertible_v || (is_instance_v, ScopedLocalRef> - &&std::is_convertible_v::BaseType, U>); + &&std::is_convertible_v::BaseType, U>) || + (std::is_same_v, JObjectArrayElement> + &&std::is_convertible_v); template concept ScopeOrClass = ScopeOrRaw; @@ -141,6 +145,8 @@ template return x.data(); else if constexpr (is_instance_v, ScopedLocalRef>) return x.get(); + else if constexpr (std::is_same_v, JObjectArrayElement>) + return x.get(); else return std::forward(x); } @@ -1013,8 +1019,7 @@ private: DISALLOW_COPY_AND_ASSIGN(ScopedLocalRef); }; - -class JObjectArrayElement{ +class JObjectArrayElement { friend class ScopedLocalRef; auto obtain() {