34 JNI_context const & jni, rtl_uString ** out_ustr, jstring jstr )
38 rtl_uString_new( out_ustr );
42 jsize len = jni->GetStringLength( jstr );
43 std::unique_ptr< rtl_mem > mem(
45 sizeof (rtl_uString) + (len *
sizeof (
sal_Unicode)) ) );
46 rtl_uString * ustr =
reinterpret_cast<rtl_uString *
>(mem.get());
47 jni->GetStringRegion( jstr, 0, len, reinterpret_cast<jchar *>(ustr->buffer) );
51 ustr->buffer[ len ] =
'\0';
53 if (
nullptr != *out_ustr)
54 rtl_uString_release( *out_ustr );
62 rtl_uString * ustr =
nullptr;
64 return OUString( ustr, SAL_NO_ACQUIRE );
70 jstring jstr = jni->NewString( reinterpret_cast<jchar const *>(ustr->buffer), ustr->length );
79 JNI_context const & jni,
char const * class_name,
bool inException =
false )
85 if (info ==
nullptr) {
97 return jni.
findClass(class_name, c, m, inException);
106 jobject jo_type = jni->NewObjectA(
113 JNI_context const & jni, typelib_TypeDescriptionReference * type )
118 args[ 0 ].i = type->eTypeClass;
120 jni, jni->CallStaticObjectMethodA(
127 args[ 0 ].l = jo_type_name.
get();
128 args[ 1 ].l = jo_type_class.get();
129 jobject jo_type = jni->NewObjectA(
141 jobject jo_oid = jni->CallStaticObjectMethodA(
jstring ustring_to_jstring(JNI_context const &jni, rtl_uString const *ustr)
OUString jstring_to_oustring(JNI_context const &jni, jstring jstr)
jobject compute_oid(JNI_context const &jni, jobject jo)
jclass m_class_UnoRuntime
jobject create_type(JNI_context const &jni, jclass clazz)
JNI_info const * get_info() const
jmethodID m_method_UnoRuntime_generateOid
jmethodID m_method_TypeClass_fromInt
jmethodID m_method_Class_forName
jmethodID m_ctor_Type_with_Class
void jstring_to_ustring(JNI_context const &jni, rtl_uString **out_ustr, jstring jstr)
void ensure_no_exception() const
jclass findClass(char const *name, jclass classClass, jmethodID methodForName, bool inException) const
jmethodID m_ctor_Type_with_Name_TypeClass
void getClassForName(jclass *classClass, jmethodID *methodForName) const
static rtl_mem * allocate(std::size_t bytes)
jclass find_class(JNI_context const &jni, char const *class_name, bool inException=false)