Merge: Modernize syntax
authorJean Privat <jean@pryen.org>
Tue, 15 Apr 2014 20:02:44 +0000 (16:02 -0400)
committerJean Privat <jean@pryen.org>
Tue, 15 Apr 2014 20:02:44 +0000 (16:02 -0400)
Lot of cleanup and modernization in the syntax of Nit

* depreciate old FFI syntax: `extern` without `class` and non-dotted extern notation (quad or space)
* reduce the usage of old style getters and setters (they will be disabled soon)
* remove the shortcut `=` for one-liner function
* hexadecimal literals `var x = 0x7F`

Conflicts: lib/jvm.nit
Pull-Request: #401
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>

1  2 
lib/jvm.nit

diff --cc lib/jvm.nit
@@@ -237,44 -277,6 +237,44 @@@ extern class JniEnv `{JNIEnv *`
                return (char*)(*recv)->GetStringUTFChars(recv, (jstring)jobj, NULL);
        `}
  
-       private fun convert_args_to_jni(args: nullable Array[nullable Object]): Pointer import Array[nullable Object] as not nullable, Array[nullable Object].[], Array[nullable Object].length, nullable Object.as(Int), nullable Object.as(Char), nullable Object.as(Bool), nullable Object.as(Float), nullable Object.as(JavaObject), nullable Object.as(String), String.to_cstring, String.length `{
++      private fun convert_args_to_jni(args: nullable Array[nullable Object]): Pointer import Array[nullable Object].as not nullable, Array[nullable Object].[], Array[nullable Object].length, nullable Object.as(Int), nullable Object.as(Char), nullable Object.as(Bool), nullable Object.as(Float), nullable Object.as(JavaObject), nullable Object.as(String), String.to_cstring, String.length `{
 +              if(nullable_Array_of_nullable_Object_is_null(args)){
 +                      return NULL;
 +              }
 +              Array_of_nullable_Object nit_array = nullable_Array_of_nullable_Object_as_Array_of_nullable_Object(args);
 +              int nit_array_length = Array_of_nullable_Object_length(nit_array);
 +              int i;
 +              jvalue *c_array = malloc(sizeof(jvalue)*(nit_array_length));
 +              for (i = 0; i < nit_array_length; i ++) {
 +                      nullable_Object nullable_obj = Array_of_nullable_Object__index(nit_array, i);
 +                      if(nullable_Object_is_a_Int(nullable_obj)) {
 +                              int val = nullable_Object_as_Int(nullable_obj);
 +                              c_array[i].i = val;
 +                      } else if (nullable_Object_is_a_Char(nullable_obj)){
 +                              char val = nullable_Object_as_Char(nullable_obj);
 +                              c_array[i].c = val;
 +                      } else if (nullable_Object_is_a_Bool(nullable_obj)){
 +                              int val = nullable_Object_as_Bool(nullable_obj);
 +                              c_array[i].z = val;
 +                      } else if(nullable_Object_is_a_Float(nullable_obj)){
 +                              float val = nullable_Object_as_Float(nullable_obj);
 +                              c_array[i].f = val;
 +                      } else if(nullable_Object_is_a_JavaObject(nullable_obj)){
 +                              jobject val = nullable_Object_as_JavaObject(nullable_obj);
 +                              c_array[i].l = val;
 +                      } else if(nullable_Object_is_a_String(nullable_obj)){
 +                              String val = nullable_Object_as_String(nullable_obj);
 +                              char* c = String_to_cstring(val);
 +                              jstring js = (*recv)->NewStringUTF(recv, c);
 +                              c_array[i].l = js;
 +                      } else {
 +                              fprintf(stderr, "NOT YET SUPPORTED: nit objects are not supported\n");
 +                              exit(1);
 +                      }
 +              }
 +              return c_array;
 +      `}
 +
        # Returns the field ID for an instance field of a class. The field is specified by its name and signature
        fun get_field_id(clazz: JClass, name: String, sign: String): JFieldID import String.to_cstring `{
                return (*recv)->GetFieldID(recv, clazz, String_to_cstring(name), String_to_cstring(sign));