amodule.ensure_compile_ffi_wrapper
compile_ffi_method(mmodule)
- assert self isa AExternPropdef
-
# nitni - Compile missing callbacks
mmodule.ensure_compile_nitni_base(v)
var ccu = mmodule.nitni_ccu.as(not null)
redef fun compile_externmeth_to_c(v, mpropdef, arguments)
do
- var mmodule = mpropdef.mclassdef.mmodule
-
# if using the old native interface fallback on previous implementation
- var nextern = self.n_extern
- if nextern != null then
- super
- return
- end
+ if n_extern_code_block == null then return super
+ var mmodule = mpropdef.mclassdef.mmodule
mmodule.uses_ffi = true
var mclass_type = mpropdef.mclassdef.bound_mtype
end
compile_ffi_support_to_c(v)
+ return true
end
redef fun compile_externinit_to_c(v, mpropdef, arguments)
do
- var mmodule = mpropdef.mclassdef.mmodule
-
# if using the old native interface fallback on previous implementation
- var nextern = self.n_extern
- if nextern != null then
- super
- return
- end
+ if n_extern_code_block == null then return super
+ var mmodule = mpropdef.mclassdef.mmodule
mmodule.uses_ffi = true
var mclass_type = mpropdef.mclassdef.bound_mtype
v.ret(recv_var)
compile_ffi_support_to_c(v)
+ return true
end
end
var base_cname = "null_{mtype.mangled_cname}"
var full_cname = "NIT_NULL___{base_cname}"
- # In nitni files, declare internal function as extern
+ # In nitni files, declare internal function as extern
var full_friendly_csignature = "{cname_blind} {full_cname}()"
ccu.header_decl.add("extern {full_friendly_csignature};\n")
var mproperty = mproperty
assert mproperty isa MMethod
- # In nitni files, declare internal function as extern
+ # In nitni files, declare internal function as extern
var full_friendly_csignature = mproperty.build_csignature(recv_mtype, v.compiler.mainmodule, null, long_signature, internal_call_context)
ccu.header_decl.add("extern {full_friendly_csignature};\n")
## check type
#
- # In nitni files, declare internal function as extern
+ # In nitni files, declare internal function as extern
var full_friendly_csignature = "int {v.compiler.mainmodule.name }___{from.mangled_cname}_is_a_{to.mangled_cname}({from.cname_blind})"
ccu.header_decl.add("extern {full_friendly_csignature};\n")