# extern class declaration
var is_extern_hybrid : Bool writable = false
+ # Uses foreign function interface
+ fun uses_ffi : Bool is abstract
+
protected init(name: Symbol, dir: MMDirectory, context: MMContext, loc: Location)
do
_name = name
redef class MMModule
# extern code blocks in module
var extern_code_blocks : Set[ExternCode] = new HashSet[ExternCode]
+ redef var uses_ffi : Bool = false
end
redef class MMLocalClass
"Cannot implement the non extern method {method.full_name} with extern code" )
else
method.extern_implementation = n_extern_code_block.to_extern_code
+ method.mmmodule.uses_ffi = true
end
end
end
"Cannot define an extern equivalent in the non extern class {local_class.name}" )
else
local_class.extern_type = extern_code_block.to_extern_code
+ local_class.mmmodule.uses_ffi = true
end
end
end
super
# extern code blocks
+ if not node.n_extern_code_blocks.is_empty then uses_ffi = true
for n_extern_code_block in node.n_extern_code_blocks do
extern_code_blocks.add( n_extern_code_block.to_extern_code )
end