}
public void complete_async () {
- var async_result_expr = new CCodeMemberAccess.pointer (new CCodeIdentifier ("_data_"), "_async_result");
+ var data_var = new CCodeIdentifier ("_data_");
+ var async_result_expr = new CCodeMemberAccess.pointer (data_var, "_async_result");
if (context.require_glib_version (2, 36)) {
var finish_call = new CCodeFunctionCall (new CCodeIdentifier ("g_task_return_pointer"));
finish_call.add_argument (async_result_expr);
- finish_call.add_argument (new CCodeIdentifier ("_data_"));
+ finish_call.add_argument (data_var);
finish_call.add_argument (new CCodeConstant ("NULL"));
ccode.add_expression (finish_call);
// Preserve the "complete now" behavior if state != 0, do so by
// iterating the GTask's main context till the task is complete.
- var state = new CCodeMemberAccess.pointer (new CCodeIdentifier ("_data_"), "_state_");
+ var state = new CCodeMemberAccess.pointer (data_var, "_state_");
var zero = new CCodeConstant ("0");
var state_is_not_zero = new CCodeBinaryExpression (CCodeBinaryOperator.INEQUALITY, state, zero);
ccode.open_if (state_is_not_zero);
task_complete.add_argument (async_result_expr);
task_is_complete = new CCodeBinaryExpression (CCodeBinaryOperator.INEQUALITY, task_complete, new CCodeConstant ("TRUE"));
} else {
- var task_complete = new CCodeMemberAccess.pointer (new CCodeIdentifier ("_data_"), "_task_complete_");
+ var task_complete = new CCodeMemberAccess.pointer (data_var, "_task_complete_");
task_is_complete = new CCodeBinaryExpression (CCodeBinaryOperator.INEQUALITY, task_complete, new CCodeConstant ("TRUE"));
}
ccode.close ();
} else {
- var state = new CCodeMemberAccess.pointer (new CCodeIdentifier ("_data_"), "_state_");
+ var state = new CCodeMemberAccess.pointer (data_var, "_state_");
var zero = new CCodeConstant ("0");
var state_is_zero = new CCodeBinaryExpression (CCodeBinaryOperator.EQUALITY, state, zero);
ccode.open_if (state_is_zero);
push_function (readyfunc);
+ var data_var = new CCodeIdentifier ("_data_");
+
ccode.add_declaration (dataname + "*", new CCodeVariableDeclarator ("_data_"));
- ccode.add_assignment (new CCodeIdentifier ("_data_"), new CCodeIdentifier ("_user_data_"));
- ccode.add_assignment (new CCodeMemberAccess.pointer (new CCodeIdentifier ("_data_"), "_source_object_"), new CCodeIdentifier ("source_object"));
- ccode.add_assignment (new CCodeMemberAccess.pointer (new CCodeIdentifier ("_data_"), "_res_"), new CCodeIdentifier ("_res_"));
+ ccode.add_assignment (data_var, new CCodeIdentifier ("_user_data_"));
+ ccode.add_assignment (new CCodeMemberAccess.pointer (data_var, "_source_object_"), new CCodeIdentifier ("source_object"));
+ ccode.add_assignment (new CCodeMemberAccess.pointer (data_var, "_res_"), new CCodeIdentifier ("_res_"));
if (context.require_glib_version (2, 36) && !context.require_glib_version (2, 44)) {
- ccode.add_assignment (new CCodeMemberAccess.pointer (new CCodeIdentifier ("_data_"), "_task_complete_"), new CCodeConstant ("TRUE"));
+ ccode.add_assignment (new CCodeMemberAccess.pointer (data_var, "_task_complete_"), new CCodeConstant ("TRUE"));
}
var ccall = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_real_name (m) + "_co"));
- ccall.add_argument (new CCodeIdentifier ("_data_"));
+ ccall.add_argument (data_var);
ccode.add_expression (ccall);
readyfunc.modifiers |= CCodeModifiers.STATIC;