Merge: Light FFI for the interpreter
[nit.git] / src / nitni / nitni_base.nit
index 846f944..a64c3df 100644 (file)
@@ -82,7 +82,7 @@ redef class MType
        #
        #   type Object is_primitive? false
        #   type Pointer is_primitive? true
-       fun is_cprimitive: Bool is abstract
+       fun is_cprimitive: Bool do return false
 end
 
 redef class MClassType
@@ -94,7 +94,7 @@ redef class MClassType
                if name == "Float" then return "double"
                if name == "Int" then return "long"
                if name == "Byte" then return "unsigned char"
-               if name == "NativeString" then return "unsigned char*"
+               if name == "NativeString" then return "char*"
                if mclass.kind == extern_kind then
                        var ctype = mclass.ctype
                        assert ctype != null
@@ -110,7 +110,7 @@ redef class MClassType
                if name == "Float" then return "double"
                if name == "Int" then return "long"
                if name == "Byte" then return "unsigned char"
-               if name == "NativeString" then return "unsigned char*"
+               if name == "NativeString" then return "char*"
                if mclass.kind == extern_kind then return "void*"
                return super
        end
@@ -121,13 +121,12 @@ redef class MClassType
        redef fun mangled_cname do return mclass.name
 
        redef fun is_cprimitive do return mclass.kind == extern_kind or
-                       (once ["Bool", "Char", "Float", "Int", "NativeString"]).has(mclass.name)
+                       (once ["Bool", "Char", "Float", "Int", "NativeString", "Byte"]).has(mclass.name)
 end
 
 redef class MNullableType
        redef fun cname do return mangled_cname
        redef fun mangled_cname do return "nullable_{mtype.mangled_cname}"
-       redef fun is_cprimitive do return false
 end
 
 redef class MVirtualType