# Common things for NIT compilation and C generation
package primitive_info
-#FIXME Split this package into 2: one in metamodel and one in compiling
+#FIXME Split this module into 2: one in metamodel and one in compiling
import metamodel
var i = ctypes.iterator
while i.is_ok do
var n = i.key
- if module.has_global_class_named(n) then
- var c = module.class_by_name(n)
+ if mmmodule.has_global_class_named(n) then
+ var c = mmmodule.class_by_name(n)
if cshe < c then
_primitive_info_cache = i.item
_primitive_info_b = true
private fun primitive_ctypes: HashMap[Symbol, PrimitiveInfo]
do
var res = new HashMap[Symbol, PrimitiveInfo]
- var pnames = ["Int", "Char", "Bool", "Float", "NativeString", "NativeArray", "Pointer"]
- var tagged = [true, true, true, false, false, false, false]
- var cnames = ["bigint", "char", "int", "float", "char *", "val_t *", "void *"]
+ var pnames = ["Int", "Char", "Bool", "Float", "NativeString", "Pointer"]
+ var tagged = [true, true, true, false, false, false]
+ var cnames = ["bigint", "char", "int", "float", "char *", "void *"]
for i in [0..pnames.length[ do
var n = pnames[i].to_symbol
var pi = new PrimitiveInfo(n, tagged[i], cnames[i])
end
end
+ # Is the type tagged?
+ fun is_tagged: Bool
+ do
+ if is_nullable then return false
+ var pi = local_class.primitive_info
+ return pi != null and pi.tagged
+ end
+
# The default c value for uninitialized types.
# Return "null" for non primitive types and something more specific for primitive types
fun default_cvalue: String