5#if defined(USE_ANDROID_JNI) && USE_ANDROID_JNI
8#include "Containers/Array.h"
35#define UE_JNI_MEMBER(Member) \
36 ::UE::Jni::FMember{Member, #Member}
38#define UE_JNI_NATIVE_METHOD(Method) \
39 ::UE::Jni::FNativeMethod{#Method, ::UE::Jni::Signature<decltype(Method)>.GetData(), (void*)Method}
41template <
typename T>
requires std::is_pointer_v<T>
60 template <
typename TRet,
typename...
TArgs>
64 static constexpr auto _Value = []
82 template <
typename TRet,
typename T,
typename...
TArgs>
87 template <
typename T,
typename...
TArgs>
90 template <
typename T,
typename U>
96 const char* Signature;
111 template <
typename T,
typename...
TArgs>
120 template <
typename T,
typename U>
requires std::is_function_v<U>
129 template <
typename T,
typename U>
143 using FClass = std::remove_pointer_t<jclass>;
144 using FObject = std::remove_pointer_t<jobject>;
145 using FString = std::remove_pointer_t<jstring>;
147 template <
typename T, std::
size_t Rank = 1>
requires(Rank >= 1)
152 template <
typename T>
153 struct TArray<T, 1>: std::remove_pointer_t<typename TTraits<T>::ArrayType>
157 template <
typename T>
163 template <
typename T>
175 template <
typename T>
179 static constexpr auto _Signature = []
185 Iterator = std::ranges::copy(
ClassName<T>, Iterator).out;
211 struct TTraits<
jbyte>
218 struct TTraits<
jchar>
239 struct TTraits<
jlong>
259 template <
typename T, std::
size_t Rank>
260 struct TTraits<
Java::Lang::TArray<T, Rank>*>
263 static constexpr auto _Signature = []
268 Iterator = std::fill_n(Iterator, Rank,
'[');
269 Iterator = std::ranges::copy(
Signature<T>, Iterator).out;
279 template <
typename T>
280 inline Java::Lang::TClass<T>*
Class;
284 template <
typename T>
288 inline thread_local const struct FEnv
294 FEnv& operator=(
const FEnv&) =
delete;
296 template <
typename T,
bool bIsOptional,
typename U>
301 if constexpr (
requires { T::Members; })
305 if constexpr (bIsOptional)
318 if constexpr (
requires { T::NativeMethods; })
322 if constexpr (bIsOptional)
336 template <
typename T,
bool bIsOptional =
requires {
requires T::bIsOptional; }>
339 if constexpr (std::is_base_of_v<Java::Lang::FObject, T>)
345 if constexpr (bIsOptional)
371 template <
typename T>
374 static_assert(std::is_base_of_v<Java::Lang::FObject, T>);
376 return reinterpret_cast<T*
>(
Value->NewGlobalRef(
Object));
379 template <
typename T>
385 template <
typename U,
typename T>
388 if constexpr (std::is_function_v<U>)
394 Value->ExceptionClear();
405 Value->ExceptionClear();
412 template <
typename U,
typename T>
415 if constexpr (std::is_function_v<U>)
421 Value->ExceptionClear();
432 Value->ExceptionClear();
448 JNIEnv* operator->()
const
459 friend void AndroidJavaEnv::InitializeJavaEnv();
460 template <
typename T>
472 inline void (*FEnv::InitializeChain)() = []
479 template <
typename T>
483 inline static void (*
const Chain)() = std::exchange(FEnv::InitializeChain, []
492 template <
typename T,
typename...
TArgs>
504 template <
typename T,
typename U>
515 void Set(Java::Lang::TClass<T>*
Class, U*
arg)
const
522 template <
typename T>
539 template <
typename T>
556 template <
typename T>
573 template <
typename T>
590 template <
typename T>
607 template <
typename T>
624 template <
typename T>
641 template <
typename T>
658 template <
typename T,
typename U>
676 template <
typename T>
693 template <
typename T>
710 template <
typename T>
727 template <
typename T>
744 template <
typename T>
761 template <
typename T>
778 template <
typename T>
795 template <
typename T>
812 template <
typename T,
typename TRet,
typename...
TArgs>
825 template <
typename T,
typename...
TArgs>
830 void operator()(Java::Lang::TClass<T>*
Class,
TArgs... args)
const
837 template <
typename T,
typename...
TArgs>
849 template <
typename T,
typename...
TArgs>
861 template <
typename T,
typename...
TArgs>
873 template <
typename T,
typename...
TArgs>
885 template <
typename T,
typename...
TArgs>
890 jint operator()(Java::Lang::TClass<T>*
Class,
TArgs... args)
const
897 template <
typename T,
typename...
TArgs>
909 template <
typename T,
typename...
TArgs>
921 template <
typename T,
typename...
TArgs>
933 template <
typename T,
typename TRet,
typename...
TArgs>
946 template <
typename T,
typename...
TArgs>
958 template <
typename T,
typename...
TArgs>
970 template <
typename T,
typename...
TArgs>
982 template <
typename T,
typename...
TArgs>
994 template <
typename T,
typename...
TArgs>
1006 template <
typename T,
typename...
TArgs>
1018 template <
typename T,
typename...
TArgs>
1030 template <
typename T,
typename...
TArgs>
1042 template <
typename T,
typename...
TArgs>
1054 namespace Java::Lang
1062 static constexpr FMember Members[]
1071template <
typename T>
requires std::is_pointer_v<T>
1086 template <
typename U>
requires std::is_base_of_v<U, std::remove_pointer_t<T>>
1092 template <
typename U>
requires std::is_base_of_v<std::remove_pointer_t<U>, std::remove_pointer_t<T>>
1115 UE::Jni::Env->DeleteLocalRef(
ObjRef);
1129 return std::exchange(
ObjRef,
nullptr);
1135 operator bool()
const
1149template <
typename T>
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define check(expr)
Definition AssertionMacros.h:314
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
UE_FORCEINLINE_HINT FLinearColor operator*(float Scalar, const FLinearColor &Color)
Definition Color.h:473
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
return true
Definition ExternalRpcRegistry.cpp:601
const bool
Definition NetworkReplayStreaming.h:178
auto GetData(const TStringConversion< Converter, DefaultConversionSize > &Conversion) -> decltype(Conversion.Get())
Definition StringConv.h:802
Definition ArrayView.h:139
Definition StaticArray.h:26
UE_REWRITE constexpr InElementType * begin()
Definition StaticArray.h:99
constexpr const CharType * GetData() const
Definition StringView.h:160
void exchange(FReal &f1, FReal &f2)
Definition FFT.cpp:78
Type
Definition PawnAction_Move.h:11
Definition RobinHoodHashTable.h:18
Definition FieldSystemNoiseAlgo.cpp:6
@ Member
Definition AssetDataTagMap.cpp:938
FORCEINLINE T * Get(const FObjectPtr &ObjectPtr)
Definition ObjectPtr.h:426
UStruct * FindClass(const FReadState &State)
Definition StructDeserializer.cpp:40
args
Definition TestServer.py:519
EType
Definition AccessDetection.h:11
FValue::Object FObject
Definition RapidJsonUtils.h:69
FValue::Member FMember
Definition RapidJsonUtils.h:62
UE_STRING_CLASS Result(Forward< LhsType >(Lhs), RhsLen)
Definition String.cpp.inl:732