rename `NativeString` to `CString`
[nit.git] / src / nitni / nitni_base.nit
index 699a8d9..41197ef 100644 (file)
@@ -67,7 +67,7 @@ redef class MType
        # Representation of this type in pure C on the FFI extern side
        #   Object -> Object
        #   Pointer -> void*
-       fun cname: String is abstract
+       fun cname: String do return cname_normal_class
 
        # Representation of this type in C for the internal of the system
        # Hides extern types.
@@ -83,6 +83,9 @@ redef class MType
        #   type Object is_primitive? false
        #   type Pointer is_primitive? true
        fun is_cprimitive: Bool do return false
+
+       # Name of this type in C for normal classes (not extern and not primitive)
+       protected fun cname_normal_class: String do return mangled_cname
 end
 
 redef class MClassType
@@ -94,7 +97,12 @@ 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 == "Int8" then return "int8_t"
+               if name == "Int16" then return "int16_t"
+               if name == "UInt16" then return "uint16_t"
+               if name == "Int32" then return "int32_t"
+               if name == "UInt32" then return "uint32_t"
+               if name == "CString" then return "char*"
                if mclass.kind == extern_kind then
                        var ctype = mclass.ctype
                        assert ctype != null
@@ -110,31 +118,32 @@ 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 == "Int8" then return "int8_t"
+               if name == "Int16" then return "int16_t"
+               if name == "UInt16" then return "uint16_t"
+               if name == "Int32" then return "int32_t"
+               if name == "UInt32" then return "uint32_t"
+               if name == "CString" then return "char*"
                if mclass.kind == extern_kind then return "void*"
                return super
        end
 
-       # Name of this type in C for normal classes (not extern and not primitive)
-       protected fun cname_normal_class: String do return mangled_cname
-
        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", "Byte"]).has(mclass.name)
+                       (once ["Bool", "Char", "Float", "Int", "CString",
+                              "Byte", "Int8", "Int16", "UInt16", "Int32", "UInt32"]).has(mclass.name)
 end
 
 redef class MNullableType
-       redef fun cname do return mangled_cname
        redef fun mangled_cname do return "nullable_{mtype.mangled_cname}"
 end
 
-redef class MVirtualType
+redef class MFormalType
        redef fun mangled_cname do return to_s
 end
 
 redef class MGenericType
-       redef fun cname do return mangled_cname
        redef fun mangled_cname
        do
                var base = super