return;
}
- var gnew = new CCodeFunctionCall (new CCodeIdentifier ("g_new0"));
- gnew.add_argument (new CCodeIdentifier (expr.element_type.get_cname ()));
+ CCodeFunctionCall gnew;
+ if (context.profile == Profile.POSIX) {
+ source_declarations.add_include ("stdlib.h");
+ gnew = new CCodeFunctionCall (new CCodeIdentifier ("calloc"));
+ } else {
+ gnew = new CCodeFunctionCall (new CCodeIdentifier ("g_new0"));
+ gnew.add_argument (new CCodeIdentifier (expr.element_type.get_cname ()));
+ }
+
bool first = true;
CCodeExpression cexpr = null;
gnew.add_argument (cexpr);
+ if (context.profile == Profile.POSIX) {
+ var csizeof = new CCodeFunctionCall (new CCodeIdentifier ("sizeof"));
+ csizeof.add_argument (new CCodeIdentifier (expr.element_type.get_cname ()));
+ gnew.add_argument (csizeof);
+ }
+
if (expr.initializer_list != null) {
var ce = new CCodeCommaExpression ();
var temp_var = get_temp_variable (expr.value_type, true, expr);
return new CCodeIdentifier (func_name);
}
} else if (type is ArrayType) {
- return new CCodeIdentifier ("g_free");
+ if (context.profile == Profile.POSIX) {
+ return new CCodeIdentifier ("free");
+ } else {
+ return new CCodeIdentifier ("g_free");
+ }
} else if (type is PointerType) {
- return new CCodeIdentifier ("g_free");
+ if (context.profile == Profile.POSIX) {
+ return new CCodeIdentifier ("free");
+ } else {
+ return new CCodeIdentifier ("g_free");
+ }
} else {
return new CCodeConstant ("NULL");
}