Twitch SDK (Internal)
Classes | Namespaces | Macros | Functions | Variables
java_utility.h File Reference
#include "twitchsdk/core/types/errortypes.h"
#include "twitchsdk/core/mutex.h"
#include <vector>
#include <unordered_map>
#include <map>
#include <jni.h>

Go to the source code of this file.

Classes

struct  ttv::binding::java::ProxyContext< PROXY_TYPE >
 
struct  ttv::binding::java::ProxyContextWithListener< PROXY_TYPE, LISTENER_TYPE >
 
class  ttv::binding::java::JavaNativeProxyRegistry< NativeInstanceType, ContextType >
 
class  ttv::binding::java::JavaLocalReferenceDeleter
 
class  ttv::binding::java::ScopedJavaUTFStringConverter
 
class  ttv::binding::java::ScopedJavaWcharStringConverter
 
class  ttv::binding::java::ScopedJavaEnvironmentCacher
 
class  ttv::binding::java::AutoJEnv
 
class  ttv::binding::java::GlobalJavaObjectReference
 
struct  ttv::binding::java::ProxyContext< PROXY_TYPE >
 
struct  ttv::binding::java::ProxyContextWithListener< PROXY_TYPE, LISTENER_TYPE >
 
class  ttv::binding::java::JavaNativeProxyRegistry< NativeInstanceType, ContextType >
 
struct  ttv::binding::java::JavaNativeProxyRegistry< NativeInstanceType, ContextType >::Entry
 
struct  ttv::binding::java::JavaClassInfo
 

Namespaces

 ttv
 JSON (JavaScript Object Notation).
 
 ttv::binding
 
 ttv::binding::java
 

Macros

#define TTV_JNI_RETURN_ON_NULL(jni, ptr, err)   { if ( (ptr) == nullptr) { ASSERT_ON_ERROR(err); return GetJavaInstance_ErrorCode(jni, err); } }
 
#define TTV_JNI_RETURN_ON_NOT_NULL(jni, ptr, err)   { if ( (ptr) != nullptr) { ASSERT_ON_ERROR(err); return GetJavaInstance_ErrorCode(jni, err); } }
 
#define TTV_JNI_RETURN_ON_FALSE(jni, val, err)   { if (!val) { return GetJavaInstance_ErrorCode(jni, err); } }
 
#define AUTO_DELETE_LOCAL_REF(JENV, TYPE, VAR, VALUE)
 
#define AUTO_DELETE_LOCAL_REF_NO_DECLARE(JENV, TYPE, VAR)   JavaLocalReferenceDeleter VAR##_Deleter(JENV, VAR, #VAR);
 

Functions

bool ttv::binding::java::CacheJavaVirtualMachine (JNIEnv *jEnv)
 
bool ttv::binding::java::LookupJavaClass (JNIEnv *jEnv, JavaClassInfo &info, const char *klass)
 
bool ttv::binding::java::LookupJavaMethod (JNIEnv *jEnv, JavaClassInfo &info, const char *method, const char *signature)
 
bool ttv::binding::java::LookupJavaStaticMethod (JNIEnv *jEnv, JavaClassInfo &info, const char *method, const char *signature)
 
bool ttv::binding::java::LookupJavaField (JNIEnv *jEnv, JavaClassInfo &info, const char *field, const char *signature)
 
JavaClassInfo & ttv::binding::java::GetJavaClassInfo_Boolean (JNIEnv *jEnv)
 
JavaClassInfo & ttv::binding::java::GetJavaClassInfo_Integer (JNIEnv *jEnv)
 
JavaClassInfo & ttv::binding::java::GetJavaClassInfo_Long (JNIEnv *jEnv)
 
JavaClassInfo & ttv::binding::java::GetJavaClassInfo_Float (JNIEnv *jEnv)
 
JavaClassInfo & ttv::binding::java::GetJavaClassInfo_Double (JNIEnv *jEnv)
 
JavaClassInfo & ttv::binding::java::GetJavaClassInfo_String (JNIEnv *jEnv)
 
JavaClassInfo & ttv::binding::java::GetJavaClassInfo_Charset (JNIEnv *jEnv)
 
JavaClassInfo & ttv::binding::java::GetJavaClassInfo_HashSet (JNIEnv *jEnv)
 
JavaClassInfo & ttv::binding::java::GetJavaClassInfo_HashMap (JNIEnv *jEnv)
 
jobject ttv::binding::java::GetJavaInstance_Boolean (JNIEnv *jEnv, bool value)
 
jobject ttv::binding::java::GetJavaInstance_Integer (JNIEnv *jEnv, int32_t value)
 
jobject ttv::binding::java::GetJavaInstance_Integer (JNIEnv *jEnv, uint32_t value)
 
jobject ttv::binding::java::GetJavaInstance_Long (JNIEnv *jEnv, uint64_t value)
 
jobject ttv::binding::java::GetJavaInstance_Long (JNIEnv *jEnv, int64_t value)
 
jobject ttv::binding::java::GetJavaInstance_Float (JNIEnv *jEnv, float value)
 
jobject ttv::binding::java::GetJavaInstance_Double (JNIEnv *jEnv, double value)
 
jstring ttv::binding::java::GetJavaInstance_StringWithEncoding (JNIEnv *jEnv, const std::string &str)
 
jstring ttv::binding::java::GetJavaInstance_String (JNIEnv *jEnv, const char *str)
 
jstring ttv::binding::java::GetJavaInstance_String (JNIEnv *jEnv, const std::string &str)
 
jobject ttv::binding::java::GetJavaInstance_EnumValue (JNIEnv *jEnv, const ttv::EnumValue &value)
 
jobjectArray ttv::binding::java::GetJavaInstance_EnumValueArray (JNIEnv *jEnv, const std::vector< ttv::EnumValue > &arr)
 
jobject ttv::binding::java::GetJavaInstance_ErrorCode (JNIEnv *jEnv, TTV_ErrorCode err)
 
jobjectArray ttv::binding::java::GetJavaInstance_StringArray (JNIEnv *jEnv, const std::vector< std::string > &arr)
 
jobject ttv::binding::java::GetJavaInstance_StringHashMap (JNIEnv *jEnv, const std::map< std::string, std::string > &map)
 
jobject ttv::binding::java::GetJavaInstance_ResultContainer (JNIEnv *jEnv)
 
jobject ttv::binding::java::GetJavaInstance_GetResultFromResultContainer (JNIEnv *jEnv, jobject jResultContainer)
 
void ttv::binding::java::GetNativeInstance_HttpRequestResult (JNIEnv *jEnv, jobject jRequestResult, uint &statusCode, std::map< std::string, std::string > &resultHeaders, std::vector< char > &response)
 
void ttv::binding::java::GetNativeInstance_StringVector (JNIEnv *jEnv, jobjectArray jArray, std::vector< std::string > &result)
 
void ttv::binding::java::SetResultContainerResult (JNIEnv *jEnv, jobject jResultContainer, jobject jResult)
 
jobjectArray ttv::binding::java::GetJavaInstance_Array (JNIEnv *jEnv, JavaClassInfo &javaArrayTypeClassInfo, const uint32_t size, std::function< jobject(uint32_t index)> entryFunc)
 
void ttv::binding::java::GetNativeFromJava_ByteArray (JNIEnv *jEnv, jbyteArray jSource, std::vector< uint8_t > &dest)
 
void ttv::binding::java::LoadAllUtilityJavaClassInfo (JNIEnv *jEnv)
 
template<typename... ArgTypes>
std::function< void(ArgTypes...)> ttv::binding::java::CreateJavaCallbackWrapper (JNIEnv *jEnv, jobject jCallback, JavaClassInfo &callbackInfo)
 
template<typename ContainerType , typename KVTransformerType >
jobject ttv::binding::java::GetJavaInstance_HashMap (JNIEnv *jEnv, const ContainerType &container, const KVTransformerType &transformer)
 
template<typename T >
jobject ttv::binding::java::GetJavaInstance_SimpleEnum (JNIEnv *jEnv, JavaClassInfo &info, T val)
 
template<typename T >
ttv::binding::java::GetNativeFromJava_SimpleEnum (JNIEnv *jEnv, JavaClassInfo &info, jobject jEnumValue, T defaultValue)
 

Variables

JavaVM * ttv::binding::java::gGlobalJavaVirtualMachine
 The Java virtual machine. More...
 
JNIEnv * ttv::binding::java::gActiveJavaEnvironment
 This is cached on every call into native code so that it's current. Never use from another thread. More...
 

Class Documentation

◆ ttv::binding::java::ProxyContext

struct ttv::binding::java::ProxyContext

template<typename PROXY_TYPE>
struct ttv::binding::java::ProxyContext< PROXY_TYPE >

Class Members
shared_ptr< PROXY_TYPE > instance

◆ ttv::binding::java::ProxyContextWithListener

struct ttv::binding::java::ProxyContextWithListener

template<typename PROXY_TYPE, typename LISTENER_TYPE>
struct ttv::binding::java::ProxyContextWithListener< PROXY_TYPE, LISTENER_TYPE >

Class Members
shared_ptr< PROXY_TYPE > instance
shared_ptr< LISTENER_TYPE > nativeListener

◆ ttv::binding::java::ProxyContext

struct ttv::binding::java::ProxyContext

template<typename PROXY_TYPE>
struct ttv::binding::java::ProxyContext< PROXY_TYPE >

Class Members
shared_ptr< PROXY_TYPE > instance

◆ ttv::binding::java::ProxyContextWithListener

struct ttv::binding::java::ProxyContextWithListener

template<typename PROXY_TYPE, typename LISTENER_TYPE>
struct ttv::binding::java::ProxyContextWithListener< PROXY_TYPE, LISTENER_TYPE >

Class Members
shared_ptr< PROXY_TYPE > instance
shared_ptr< LISTENER_TYPE > nativeListener

◆ ttv::binding::java::JavaNativeProxyRegistry::Entry

struct ttv::binding::java::JavaNativeProxyRegistry::Entry

template<typename NativeInstanceType, typename ContextType>
struct ttv::binding::java::JavaNativeProxyRegistry< NativeInstanceType, ContextType >::Entry

Class Members
GlobalJavaObjectReference javaInstance
shared_ptr< ContextType > nativeContext
shared_ptr< NativeInstanceType > nativeInstance

◆ ttv::binding::java::JavaClassInfo

struct ttv::binding::java::JavaClassInfo
Class Members
unordered_map< string, jfieldID > fields
jclass klass
unordered_map< string, jmethodID > methods
unordered_map< string, jmethodID > staticMethods

Macro Definition Documentation

◆ AUTO_DELETE_LOCAL_REF

#define AUTO_DELETE_LOCAL_REF (   JENV,
  TYPE,
  VAR,
  VALUE 
)
Value:
TYPE VAR = static_cast<TYPE>(VALUE); \
JavaLocalReferenceDeleter VAR##_Deleter(JENV, VAR, #VAR);

◆ AUTO_DELETE_LOCAL_REF_NO_DECLARE

#define AUTO_DELETE_LOCAL_REF_NO_DECLARE (   JENV,
  TYPE,
  VAR 
)    JavaLocalReferenceDeleter VAR##_Deleter(JENV, VAR, #VAR);

◆ TTV_JNI_RETURN_ON_FALSE

#define TTV_JNI_RETURN_ON_FALSE (   jni,
  val,
  err 
)    { if (!val) { return GetJavaInstance_ErrorCode(jni, err); } }

◆ TTV_JNI_RETURN_ON_NOT_NULL

#define TTV_JNI_RETURN_ON_NOT_NULL (   jni,
  ptr,
  err 
)    { if ( (ptr) != nullptr) { ASSERT_ON_ERROR(err); return GetJavaInstance_ErrorCode(jni, err); } }

◆ TTV_JNI_RETURN_ON_NULL

#define TTV_JNI_RETURN_ON_NULL (   jni,
  ptr,
  err 
)    { if ( (ptr) == nullptr) { ASSERT_ON_ERROR(err); return GetJavaInstance_ErrorCode(jni, err); } }