extern class NativeBundle in "Java" `{ android.os.Bundle `}
super JavaObject
- redef type SELF: NativeBundle
fun clone: JavaObject in "Java" `{ return recv.clone(); `}
fun size: Int in "Java" `{ return recv.size(); `}
fun put_byte(key: JavaString, value: Int) in "Java" `{
recv.putByte(key, (byte) value);
`}
+ # FIXME: Java's `char` are encoded on 16-bits whereas Nit's are on 8-bits.
fun put_char(key: JavaString, value: Char) in "Java" `{
recv.putChar(key, value);
`}
fun put_integer_array_list(key: JavaString, value: Array[Int])
import Array[Int].length, Array[Int].[] in "Java" `{
ArrayList<Integer> java_array =
- new ArrayList<Integer>(Array_of_Int_length(value));
+ new ArrayList<Integer>((int) Array_of_Int_length(value));
for(int i=0; i < java_array.size(); ++i)
java_array.add((int) Array_of_Int__index(value, i));
`}
fun put_string_array_list(key: JavaString, value: Array[JavaString])
import Array[JavaString].length, Array[JavaString].[] in "Java" `{
- ArrayList<String> java_array = new ArrayList<String>(Array_of_JavaString_length(value));
+ ArrayList<String> java_array = new ArrayList<String>((int)Array_of_JavaString_length(value));
for(int i=0; i < java_array.size(); ++i)
java_array.add(Array_of_JavaString__index(value, i));
fun put_char_sequence_array_list(key: JavaString, value: Array[JavaString])
import Array[JavaString].length, Array[JavaString].[] in "Java" `{
ArrayList<CharSequence> java_array =
- new ArrayList<CharSequence>(Array_of_JavaString_length(value));
+ new ArrayList<CharSequence>((int)Array_of_JavaString_length(value));
for(int i=0; i < java_array.size(); ++i)
java_array.add(Array_of_JavaString__index(value, i));
`}
fun put_boolean_array(key: JavaString, value: Array[Bool])
import Array[Bool].length, Array[Bool].[] in "Java" `{
- boolean[] java_array = new boolean[Array_of_Bool_length(value)];
+ boolean[] java_array = new boolean[(int)Array_of_Bool_length(value)];
for(int i=0; i < java_array.length; ++i)
java_array[i] = Array_of_Bool__index(value, i);
`}
fun put_byte_array(key: JavaString, value: Array[Int])
import Array[Int].length, Array[Int].[] in "Java" `{
- byte[] java_array = new byte[Array_of_Int_length(value)];
+ byte[] java_array = new byte[(int)Array_of_Int_length(value)];
for(int i=0; i < java_array.length; ++i)
java_array[i] = (byte) Array_of_Int__index(value, i);
`}
fun put_short_array(key: JavaString, value: Array[Int])
import Array[Int].length, Array[Int].[] in "Java" `{
- short[] java_array = new short[Array_of_Int_length(value)];
+ short[] java_array = new short[(int)Array_of_Int_length(value)];
for(int i=0; i < java_array.length; ++i)
java_array[i] = (short) Array_of_Int__index(value, i);
recv.putShortArray(key, java_array);
`}
+ # FIXME: Java's `char` are encoded on 16-bits whereas Nit's are on 8-bits.
fun put_char_array(key: JavaString, value: Array[Char])
import Array[Char].length, Array[Char].[] in "Java" `{
- char[] java_array = new char[Array_of_Char_length(value)];
+ char[] java_array = new char[(int)Array_of_Char_length(value)];
for(int i=0; i < java_array.length; ++i)
java_array[i] = Array_of_Char__index(value, i);
`}
fun put_int_array(key: JavaString, value: Array[Int])
import Array[Int].length, Array[Int].[] in "Java" `{
- int[] java_array = new int[Array_of_Int_length(value)];
+ int[] java_array = new int[(int)Array_of_Int_length(value)];
for(int i=0; i < java_array.length; ++i)
java_array[i] = (int) Array_of_Int__index(value, i);
`}
fun put_long_array(key: JavaString, value: Array[Int])
import Array[Int].length, Array[Int].[] in "Java" `{
- long[] java_array = new long[Array_of_Int_length(value)];
+ long[] java_array = new long[(int)Array_of_Int_length(value)];
for(int i=0; i < java_array.length; ++i)
java_array[i] = Array_of_Int__index(value, i);
`}
fun put_float_array(key: JavaString, value: Array[Float])
import Array[Float].length, Array[Float].[] in "Java" `{
- float[] java_array = new float[Array_of_Float_length(value)];
+ float[] java_array = new float[(int)Array_of_Float_length(value)];
for(int i=0; i < java_array.length; ++i)
java_array[i] = (float) Array_of_Float__index(value, i);
`}
fun put_double_array(key: JavaString, value: Array[Float])
import Array[Float].length, Array[Float].[] in "Java" `{
- double[] java_array = new double[Array_of_Float_length(value)];
+ double[] java_array = new double[(int)Array_of_Float_length(value)];
for(int i=0; i < java_array.length; ++i)
java_array[i] = Array_of_Float__index(value, i);
`}
fun put_string_array(key: JavaString, value: Array[JavaString])
import Array[JavaString].length, Array[JavaString].[] in "Java" `{
- String[] java_array = new String[Array_of_JavaString_length(value)];
+ String[] java_array = new String[(int)Array_of_JavaString_length(value)];
for(int i=0; i < java_array.length; ++i)
java_array[i] = Array_of_JavaString__index(value, i);
`}
fun put_char_sequence_array(key: JavaString, value: Array[JavaString])
import Array[JavaString].length, Array[JavaString].[] in "Java" `{
- CharSequence[] java_array = new CharSequence[Array_of_JavaString_length(value)];
+ CharSequence[] java_array = new CharSequence[(int)Array_of_JavaString_length(value)];
for(int i=0; i < java_array.length; ++i)
java_array[i] = Array_of_JavaString__index(value, i);
fun get_byte_with_def_value(key: JavaString, def_value: Int): Int in "Java" `{
return recv.getByte(key, (byte) def_value);
`}
+ # FIXME: Java's `char` are encoded on 16-bits whereas Nit's are on 8-bits.
fun get_char(key: JavaString): Char in "Java" `{ return recv.getChar(key); `}
+ # FIXME: Java's `char` are encoded on 16-bits whereas Nit's are on 8-bits.
fun get_char_with_def_value(key: JavaString, def_value: Char): Char in "Java" `{
return recv.getChar(key, def_value);
`}
`}
fun get_int(key: JavaString): Int in "Java" `{ return recv.getInt(key); `}
fun get_int_with_def_value(key: JavaString, def_value: Int): Int in "Java" `{
- return (int) recv.getInt(key, (int) def_value);
+ return recv.getInt(key, (int) def_value);
`}
- # FIXME: Get rid of the int cast as soon as the ffi is fixed
- fun get_long(key: JavaString): Int in "Java" `{ return (int) recv.getLong(key); `}
- # FIXME: Get rid of the int cast as soon as the ffi is fixed
+ fun get_long(key: JavaString): Int in "Java" `{ return recv.getLong(key); `}
fun get_long_with_def_value(key: JavaString, def_value: Int): Int in "Java" `{
- return (int) recv.getLong(key);
+ return recv.getLong(key);
`}
fun get_float(key: JavaString): Float in "Java" `{
return (float) recv.getFloat(key);
return nit_array;
`}
- fun get_string_array_list(key: JavaString): Array[JavaString]
- import Array[JavaString], Array[JavaString].add in "Java" `{
+ fun get_string_array_list(key: JavaString): Array[String]
+ import StringCopyArray, StringCopyArray.add, StringCopyArray.collection in "Java" `{
ArrayList<String> java_array = recv.getStringArrayList(key);
- int nit_array = new_Array_of_JavaString();
+ int nit_array = new_StringCopyArray();
if (java_array == null) return nit_array;
for (String element: java_array)
- Array_of_JavaString_add(nit_array, element);
+ StringCopyArray_add(nit_array, element);
- return nit_array;
+ return StringCopyArray_collection(nit_array);
`}
- fun get_char_sequence_array_list(key: JavaString): Array[JavaString]
- import Array[JavaString], Array[JavaString].add in "Java" `{
+ fun get_char_sequence_array_list(key: JavaString): Array[String]
+ import StringCopyArray, StringCopyArray.add, StringCopyArray.collection in "Java" `{
ArrayList<CharSequence> java_array = recv.getCharSequenceArrayList(key);
- int nit_array = new_Array_of_JavaString();
+ int nit_array = new_StringCopyArray();
if (java_array == null) return nit_array;
for (CharSequence element: java_array)
- Array_of_JavaString_add(nit_array, (String) element);
+ StringCopyArray_add(nit_array, (String) element);
- return nit_array;
+ return StringCopyArray_collection(nit_array);
`}
fun get_boolean_array(key: JavaString): Array[Bool]
import Array[Bool], Array[Bool].add in "Java" `{
if (java_array == null) return nit_array;
for(int i=0; i < java_array.length; ++i)
- Array_of_Int_add(nit_array, (int) java_array[i]);
+ Array_of_Int_add(nit_array, java_array[i]);
return nit_array;
`}
if (java_array == null) return nit_array;
for(int i=0; i < java_array.length; ++i)
- Array_of_Int_add(nit_array, (int) java_array[i]);
+ Array_of_Int_add(nit_array, java_array[i]);
return nit_array;
`}
+ # FIXME: Java's `char` are encoded on 16-bits whereas Nit's are on 8-bits.
fun get_char_array(key: JavaString): Array[Char]
import Array[Char], Array[Char].add in "Java" `{
char[] java_array = recv.getCharArray(key);
if (java_array == null) return nit_array;
for(int i=0; i < java_array.length; ++i)
- Array_of_Int_add(nit_array, (int) java_array[i]);
+ Array_of_Int_add(nit_array, java_array[i]);
return nit_array;
`}
return nit_array;
`}
- fun get_string_array(key: JavaString): Array[JavaString]
- import Array[JavaString], Array[JavaString].add in "Java" `{
+ fun get_string_array(key: JavaString): Array[String]
+ import StringCopyArray, StringCopyArray.add, StringCopyArray.collection in "Java" `{
String[] java_array = recv.getStringArray(key);
- int nit_array = new_Array_of_JavaString();
+ int nit_array = new_StringCopyArray();
if (java_array == null) return nit_array;
for(int i=0; i < java_array.length; ++i)
- Array_of_JavaString_add(nit_array, java_array[i]);
+ StringCopyArray_add(nit_array, java_array[i]);
- return nit_array;
+ return StringCopyArray_collection(nit_array);
`}
- fun get_char_sequence_array(key: JavaString): Array[JavaString]
- import Array[JavaString], Array[JavaString].add in "Java" `{
+ fun get_char_sequence_array(key: JavaString): Array[String]
+ import StringCopyArray, StringCopyArray.add, StringCopyArray.collection in "Java" `{
CharSequence[] java_array = recv.getCharSequenceArray(key);
- int nit_array = new_Array_of_JavaString();
+ int nit_array = new_StringCopyArray();
if (java_array == null) return nit_array;
for(int i=0; i < java_array.length; ++i)
- Array_of_JavaString_add(nit_array, (String) java_array[i]);
+ StringCopyArray_add(nit_array, (String)java_array[i]);
- return nit_array;
+ return StringCopyArray_collection(nit_array);
`}
fun describe_contents: Int in "Java" `{ return recv.describeContents(); `}
fun to_string: JavaString in "Java" `{ return recv.toString(); `}
+
+ # HACK for bug #845
+ redef fun new_global_ref import sys, Sys.jni_env `{
+ Sys sys = NativeBundle_sys(recv);
+ JNIEnv *env = Sys_jni_env(sys);
+ return (*env)->NewGlobalRef(env, recv);
+ `}
end
# A class mapping `String` keys to various value types
if return_value == "" then return null
- return return_value.to_s
+ return return_value
end
# Retrieves the `Bool` value corresponding to the given key
# Retrieves the `Char` value corresponding to the given key
# Returns the `def_value` if none or if it's the wrong value type
+ # FIXME: Java's `char` are encoded on 16-bits whereas Nit's are on 8-bits.
fun char(key: String, def_value: Char): Char
do
sys.jni_env.push_local_frame(1)
# Retrieves the `Array[Char]` value corresponding to the given key
# Returns the `null` if none or if it's the wrong value type
+ # FIXME: Java's `char` are encoded on 16-bits whereas Nit's are on 8-bits.
fun array_of_char(key: String): nullable Array[Char]
do
sys.jni_env.push_local_frame(1)
# Returns the `null` if none or if it's the wrong value type
fun array_of_string(key: String): nullable Array[String]
do
- var string_array = new Array[String]
sys.jni_env.push_local_frame(1)
- var return_value = native_bundle.get_string_array(key.to_java_string)
-
- for element in return_value
- do
- string_array.add(element.to_s)
- end
+ var return_value = native_bundle.get_string_array(key.to_java_string)
sys.jni_env.pop_local_frame
if return_value.is_empty then return null
- return string_array
+ return return_value
end
end
end
end
end
+
+# Allows JavaString collection copy through FFI with Java
+private class StringCopyArray
+ var collection = new Array[String]
+ fun add(element: JavaString) do collection.add element.to_s
+end