fun calloc_array(ret_type: MType, arguments: Array[RuntimeVariable]) is abstract
- fun native_array_def(pname: String, ret_type: nullable MType, arguments: Array[RuntimeVariable]) is abstract
+ fun native_array_def(pname: String, ret_type: nullable MType, arguments: Array[RuntimeVariable]): Bool do return false
# Return an element of a native array.
# The method is unsafe and is just a direct wrapper for the specific implementation of native arrays
return true
end
else if cname == "NativeArray" then
- v.native_array_def(pname, ret, arguments)
- return true
+ return v.native_array_def(pname, ret, arguments)
else if cname == "Int8" then
if pname == "output" then
v.add("printf(\"%\"PRIi8 \"\\n\", {arguments.first});")
var recv = "((struct {arguments[0].mcasttype.c_name}*){arguments[0]})->values"
if pname == "[]" then
self.ret(self.new_expr("{recv}[{arguments[1]}]", ret_type.as(not null)))
- return
+ return true
else if pname == "[]=" then
self.add("{recv}[{arguments[1]}]={arguments[2]};")
- return
+ return true
else if pname == "length" then
self.ret(self.new_expr("((struct {arguments[0].mcasttype.c_name}*){arguments[0]})->length", ret_type.as(not null)))
- return
+ return true
else if pname == "copy_to" then
var recv1 = "((struct {arguments[1].mcasttype.c_name}*){arguments[1]})->values"
self.add("memmove({recv1},{recv},{arguments[2]}*sizeof({elttype.ctype}));")
- return
+ return true
end
+ return false
end
redef fun native_array_instance(elttype: MType, length: RuntimeVariable): RuntimeVariable
var res = self.new_expr("{recv}[{arguments[1]}]", compiler.mainmodule.object_type)
res.mcasttype = ret_type.as(not null)
self.ret(res)
- return
+ return true
else if pname == "[]=" then
self.add("{recv}[{arguments[1]}]={arguments[2]};")
- return
+ return true
else if pname == "length" then
self.ret(self.new_expr("((struct instance_{nclass.c_name}*){arguments[0]})->length", ret_type.as(not null)))
- return
+ return true
else if pname == "copy_to" then
var recv1 = "((struct instance_{nclass.c_name}*){arguments[1]})->values"
self.add("memmove({recv1}, {recv}, {arguments[2]}*sizeof({elttype.ctype}));")
- return
+ return true
end
+ return false
end
redef fun native_array_get(nat, i)