var cforiter = new CCodeAssignment (new CCodeIdentifier ("i"), new CCodeBinaryExpression (CCodeBinaryOperator.PLUS, new CCodeIdentifier ("i"), new CCodeConstant ("1")));
ccode.open_for (cforinit, cforcond, cforiter);
- var cptrarray = new CCodeCastExpression (new CCodeIdentifier ("array"), "gpointer*");
+ var cptrarray = new CCodeCastExpression (new CCodeIdentifier ("array"), "%s*".printf (get_ccode_name (pointer_type)));
var cea = new CCodeElementAccess (cptrarray, new CCodeIdentifier ("i"));
var cfreecond = new CCodeBinaryExpression (CCodeBinaryOperator.INEQUALITY, cea, new CCodeConstant ("NULL"));
var fun = new CCodeFunction ("_vala_array_destroy", "void");
fun.modifiers = CCodeModifiers.STATIC;
- fun.add_parameter (new CCodeParameter ("array", "gpointer"));
+ fun.add_parameter (new CCodeParameter ("array", get_ccode_name (pointer_type)));
fun.add_parameter (new CCodeParameter ("array_length", get_ccode_name (int_type)));
fun.add_parameter (new CCodeParameter ("destroy_func", "GDestroyNotify"));
fun = new CCodeFunction ("_vala_array_free", "void");
fun.modifiers = CCodeModifiers.STATIC;
- fun.add_parameter (new CCodeParameter ("array", "gpointer"));
+ fun.add_parameter (new CCodeParameter ("array", get_ccode_name (pointer_type)));
fun.add_parameter (new CCodeParameter ("array_length", get_ccode_name (int_type)));
fun.add_parameter (new CCodeParameter ("destroy_func", "GDestroyNotify"));
// FIXME will leak memory if that's not the case
var fun = new CCodeFunction ("_vala_array_move", "void");
fun.modifiers = CCodeModifiers.STATIC;
- fun.add_parameter (new CCodeParameter ("array", "gpointer"));
+ fun.add_parameter (new CCodeParameter ("array", get_ccode_name (pointer_type)));
fun.add_parameter (new CCodeParameter ("element_size", "gsize"));
fun.add_parameter (new CCodeParameter ("src", get_ccode_name (int_type)));
fun.add_parameter (new CCodeParameter ("dest", get_ccode_name (int_type)));
public override void append_vala_array_length () {
var fun = new CCodeFunction ("_vala_array_length", get_ccode_name (int_type));
fun.modifiers = CCodeModifiers.STATIC;
- fun.add_parameter (new CCodeParameter ("array", "gpointer"));
+ fun.add_parameter (new CCodeParameter ("array", get_ccode_name (pointer_type)));
push_function (fun);
var array_check = new CCodeIdentifier ("array");
ccode.open_if (array_check);
- var array_element_check = new CCodeElementAccess (new CCodeCastExpression (new CCodeIdentifier ("array"), "gpointer*"), new CCodeConstant ("length"));
+ var array_element_check = new CCodeElementAccess (new CCodeCastExpression (new CCodeIdentifier ("array"), "%s*".printf (get_ccode_name (pointer_type))), new CCodeConstant ("length"));
ccode.open_while (array_element_check);
ccode.add_expression (new CCodeUnaryExpression (CCodeUnaryOperator.POSTFIX_INCREMENT, new CCodeIdentifier ("length")));
ccode.close ();
public DataType regex_type;
public DataType float_type;
public DataType double_type;
+ public DataType pointer_type;
public TypeSymbol gtype_type;
public TypeSymbol gobject_type;
public ErrorType gerror_type;
dbus_proxy_type = (TypeSymbol) glib_ns.scope.lookup ("DBusProxy");
- delegate_target_type = new StructValueType ((Struct) glib_ns.scope.lookup ("pointer"));
+ pointer_type = new StructValueType ((Struct) glib_ns.scope.lookup ("pointer"));
+
+ delegate_target_type = pointer_type;
destroy_notify = (Delegate) glib_ns.scope.lookup ("DestroyNotify");
delegate_target_destroy_type = new DelegateType (destroy_notify);
} else {
- delegate_target_type = new PointerType (new VoidType ());
+ pointer_type = new PointerType (new VoidType ());
+
+ delegate_target_type = pointer_type;
destroy_notify = new Delegate ("ValaDestroyNotify", new VoidType ());
destroy_notify.add_parameter (new Parameter ("data", new PointerType (new VoidType ())));
destroy_notify.has_target = false;
if (m.coroutine) {
// capture async data to allow invoking callback from inside closure
- data.add_field ("gpointer", "_async_data_");
+ data.add_field (get_ccode_name (pointer_type), "_async_data_");
// async method is suspended while waiting for callback,
// so we never need to care about memory management of async data
var function = new CCodeFunction (destroy_func, "void");
function.modifiers = CCodeModifiers.STATIC;
- function.add_parameter (new CCodeParameter ("data", "gpointer"));
+ function.add_parameter (new CCodeParameter ("data", get_ccode_name (pointer_type)));
push_function (function);
ccode.add_declaration (get_ccode_name (type), new CCodeVariableDeclarator ("self"));
var function = new CCodeFunction (free0_func, "void");
function.modifiers = CCodeModifiers.STATIC;
- function.add_parameter (new CCodeParameter ("var", "gpointer"));
+ function.add_parameter (new CCodeParameter ("var", get_ccode_name (pointer_type)));
push_function (function);
if (dupid.name == "g_strdup") {
dup0_func = dupid.name;
} else if (add_wrapper (dup0_func)) {
- string pointer_cname = "gpointer";
- if (context.profile == Profile.POSIX) {
- pointer_cname = "void *";
- }
- var dup0_fun = new CCodeFunction (dup0_func, pointer_cname);
- dup0_fun.add_parameter (new CCodeParameter ("self", pointer_cname));
+ var dup0_fun = new CCodeFunction (dup0_func, get_ccode_name (pointer_type));
+ dup0_fun.add_parameter (new CCodeParameter ("self", get_ccode_name (pointer_type)));
dup0_fun.modifiers = CCodeModifiers.STATIC;
push_function (dup0_fun);
if (type is GenericType) {
// cast from gconstpointer to gpointer as GBoxedCopyFunc expects gpointer
- ccall.add_argument (new CCodeCastExpression (cexpr, "gpointer"));
+ ccall.add_argument (new CCodeCastExpression (cexpr, get_ccode_name (pointer_type)));
} else {
ccall.add_argument (cexpr);
}
// cast from gconstpointer to gpointer as methods in
// generic classes may not return gconstpointer
- cifnull = new CCodeCastExpression (cexpr, "gpointer");
+ cifnull = new CCodeCastExpression (cexpr, get_ccode_name (pointer_type));
}
if (is_ref_function_void (type)) {
unowned SemanticAnalyzer analyzer = context.analyzer;
var result = cexpr;
if (analyzer.is_signed_integer_type_argument (actual_type)) {
- result = new CCodeCastExpression (new CCodeCastExpression (cexpr, "gintptr"), "gpointer");
+ result = new CCodeCastExpression (new CCodeCastExpression (cexpr, "gintptr"), get_ccode_name (pointer_type));
} else if (analyzer.is_unsigned_integer_type_argument (actual_type)) {
- result = new CCodeCastExpression (new CCodeCastExpression (cexpr, "guintptr"), "gpointer");
+ result = new CCodeCastExpression (new CCodeCastExpression (cexpr, "guintptr"), get_ccode_name (pointer_type));
}
return result;
}