Property definitions

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