fun needs_preparation : Bool
do
return ni_type.local_class.primitive_info == null or
- ni_type.local_class.primitive_info.tagged or
+ not ni_type.local_class.primitive_info.tagged or
ni_type.is_nullable
end
v.body.add( "#include \"{path}\"\n" )
v.header.add( "#include \"{path}\"\n" )
end
+ if uses_ffi then
+ v.header.add( "#include <{cname}._ffi.h>\n" )
+ end
for local_class in local_classes do
### extern methods
end
end
+ v.compile_cached
+
v.header.add( "#endif\n" )
end
end
var cprogram : CProgram
+ # compiles cached types and callbacks
fun compile_cached
do
# types
# To be nested within a condition.
fun compile_condition_isa( var_name : String ) : String
do
- return "( ISOBJ( {var_name} ) ? OBJISA( {var_name}, {local_class.cname} ): VALISA( {var_name}, {local_class.cname} ) )"
+ return "( ISOBJ( {var_name} ) ? ISNULL( {var_name} ) || OBJISA( {var_name}, {local_class.cname} ): VALISA( {var_name}, {local_class.cname} ) )"
end
# Defines a friendly type in C for a given Nit type.