java :: JavaString :: defaultinit
# A standard Java string `java.lang.String`
#
# Converted to a Nit string using `to_s`, or to a C string with `to_cstring`.
# Created using `String::to_java_string` or `CString::to_java_string`.
extern class JavaString in "Java" `{ java.lang.String `}
super JavaObject
# Get the string from Java and copy it to Nit memory
fun to_cstring: CString import sys, Sys.jni_env `{
Sys sys = JavaString_sys(self);
JNIEnv *env = Sys_jni_env(sys);
// Get the data from Java
const char *java_cstr = (*env)->GetStringUTFChars(env, self, NULL);
jsize len = (*env)->GetStringUTFLength(env, self);
// Copy it in control of Nit
char *nit_cstr = (char*)malloc(len+1);
memcpy(nit_cstr, java_cstr, len);
nit_cstr[len] = '\0';
// Free JNI ref and return
(*env)->ReleaseStringUTFChars(env, self, java_cstr);
return nit_cstr;
`}
redef fun to_s
do
if is_java_null then return "<{inspect_head}:null>"
return to_cstring.to_s
end
end
lib/java/ffi_support.nit:89,1--120,3