compiler_ffi: factorize code in compile_extern_helper_functions
[nit.git] / src / compiler_ffi.nit
index 227d3a3..ee2f52f 100644 (file)
@@ -305,13 +305,15 @@ redef class MNullableType
        do
                super
 
+               var base_cname = "null_{mtype.mangled_cname}"
+               var full_cname = "NIT_NULL___{base_cname}"
+
                # In nitni files, declare internal function as extern 
-               var full_friendly_csignature = "{cname} {v.compiler.mainmodule.name}___null_{mtype.mangled_cname}()"
+               var full_friendly_csignature = "{cname_blind} {full_cname}()"
                ccu.header_decl.add("extern {full_friendly_csignature};\n")
 
                # In nitni files, #define friendly as extern
-               var base_cname = "null_{mtype.mangled_cname}"
-               ccu.header_decl.add("#define {base_cname} {v.compiler.mainmodule.name}___{base_cname}\n")
+               ccu.header_decl.add("#define {base_cname} {full_cname}\n")
 
                # FIXME: This is ugly an broke the separate compilation principle
                # The real function MUST be compiled only once, #define pragma only protect the compiler, not the loader
@@ -322,7 +324,7 @@ redef class MNullableType
                # Internally, implement internal function
                var nitni_visitor = v.compiler.new_visitor
                nitni_visitor.frame = v.frame
-               var full_internal_csignature = "{cname_blind} {v.compiler.mainmodule.name}___null_{mtype.mangled_cname}()"
+               var full_internal_csignature = "{cname_blind} {full_cname}()"
                nitni_visitor.add("{full_internal_csignature} \{")
                nitni_visitor.add("struct nitni_instance* ret_for_c;")
                nitni_visitor.add("ret_for_c = malloc(sizeof(struct nitni_instance));")