#
# 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
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 == "NativeString" then return "char*"
if mclass.kind == extern_kind then
var ctype = mclass.ctype
assert ctype != null
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 == "NativeString" then return "char*"
if mclass.kind == extern_kind then return "void*"
return super
end
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", "NativeString",
+ "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}"
- redef fun is_cprimitive do return false
end
redef class MVirtualType