cfile.add_include ("string.h");
generate_type_declaration (ssize_t_type, cfile);
- var null_id = new CCodeIdentifier("NULL");
- var free_func = new CCodeIdentifier("free_func");
+ var null_id = new CCodeIdentifier ("NULL");
+ var free_func = new CCodeIdentifier ("element_destroy_func");
var array_id = new CCodeIdentifier ("array");
var is_pointer_id = new CCodeIdentifier ("is_pointer");
push_function (fun);
var array = new CCodeCastExpression (array_id, "char*");
- var void_array = new CCodeCastExpression(array_id, "void**");
+ var void_array = new CCodeCastExpression (array_id, "void**");
var element_size = new CCodeIdentifier ("element_size");
var length = new CCodeIdentifier ("length");
var src = new CCodeIdentifier ("src");
var iterator_var = new CCodeIdentifier("i");
var init_expr = new CCodeAssignment(iterator_var, dest);
- var cond_expr = new CCodeBinaryExpression(CCodeBinaryOperator.LESS_THAN, iterator_var, src_end);
- var iter_expr = new CCodeUnaryExpression(CCodeUnaryOperator.POSTFIX_INCREMENT, iterator_var);
+ var cond_expr = new CCodeBinaryExpression (CCodeBinaryOperator.LESS_THAN, iterator_var, src_end);
+ var iter_expr = new CCodeUnaryExpression (CCodeUnaryOperator.POSTFIX_INCREMENT, iterator_var);
ccode.open_if (is_pointer_id);
ccode.add_else ();
- ccode.open_for(init_expr, cond_expr, iter_expr);
- var offset = new CCodeBinaryExpression(CCodeBinaryOperator.MUL, iterator_var, element_size);
+ ccode.open_for (init_expr, cond_expr, iter_expr);
+ var offset = new CCodeBinaryExpression (CCodeBinaryOperator.MUL, iterator_var, element_size);
var address_to_clean = new CCodeBinaryExpression (CCodeBinaryOperator.PLUS, array, offset);
- free_call = new CCodeFunctionCall(free_func);
+ free_call = new CCodeFunctionCall (free_func);
free_call.add_argument (address_to_clean);
ccode.add_expression (free_call);
- ccode.close();
- ccode.close();
+ ccode.close ();
+ ccode.close ();
- ccode.else_if(moving_back_overlapping);
+ ccode.else_if (moving_back_overlapping);
ccode.add_declaration (get_ccode_name (ssize_t_type), iterator_declarator);
- init_expr = new CCodeAssignment(iterator_var, dest);
- cond_expr = new CCodeBinaryExpression(CCodeBinaryOperator.LESS_THAN, iterator_var, src);
- iter_expr = new CCodeUnaryExpression(CCodeUnaryOperator.POSTFIX_INCREMENT, iterator_var);
+ init_expr = new CCodeAssignment (iterator_var, dest);
+ cond_expr = new CCodeBinaryExpression (CCodeBinaryOperator.LESS_THAN, iterator_var, src);
+ iter_expr = new CCodeUnaryExpression (CCodeUnaryOperator.POSTFIX_INCREMENT, iterator_var);
ccode.open_if (is_pointer_id);
ccode.open_for(init_expr, cond_expr, iter_expr);
- free_call = new CCodeFunctionCall(free_func);
- free_call.add_argument(accessed_element);
- ccode.add_expression(free_call);
+ free_call = new CCodeFunctionCall (free_func);
+ free_call.add_argument (accessed_element);
+ ccode.add_expression (free_call);
ccode.close();
ccode.add_else ();
- ccode.open_for(init_expr, cond_expr, iter_expr);
+ ccode.open_for (init_expr, cond_expr, iter_expr);
free_call = new CCodeFunctionCall(free_func);
free_call.add_argument (address_to_clean);
ccode.add_expression (free_call);
- ccode.close();
- ccode.close();
+ ccode.close ();
+ ccode.close ();
- ccode.else_if(move_without_overlapping);
+ ccode.else_if (move_without_overlapping);
ccode.add_declaration (get_ccode_name (ssize_t_type), iterator_declarator);
- init_expr = new CCodeAssignment(iterator_var, dest);
- cond_expr = new CCodeBinaryExpression(CCodeBinaryOperator.LESS_THAN, iterator_var, dest_end);
- iter_expr = new CCodeUnaryExpression(CCodeUnaryOperator.POSTFIX_INCREMENT, iterator_var);
+ init_expr = new CCodeAssignment (iterator_var, dest);
+ cond_expr = new CCodeBinaryExpression (CCodeBinaryOperator.LESS_THAN, iterator_var, dest_end);
+ iter_expr = new CCodeUnaryExpression (CCodeUnaryOperator.POSTFIX_INCREMENT, iterator_var);
ccode.open_if (is_pointer_id);
- ccode.open_for(init_expr, cond_expr, iter_expr);
- accessed_element = new CCodeElementAccess(void_array, iterator_var);
- free_call = new CCodeFunctionCall(free_func);
- free_call.add_argument(accessed_element);
- ccode.add_expression(free_call);
+ ccode.open_for (init_expr, cond_expr, iter_expr);
+ accessed_element = new CCodeElementAccess (void_array, iterator_var);
+ free_call = new CCodeFunctionCall (free_func);
+ free_call.add_argument (accessed_element);
+ ccode.add_expression (free_call);
- ccode.close(); /*close cycle*/
+ ccode.close (); /*close cycle*/
ccode.add_else ();
- ccode.open_for(init_expr, cond_expr, iter_expr);
- free_call = new CCodeFunctionCall(free_func);
+ ccode.open_for (init_expr, cond_expr, iter_expr);
+ free_call = new CCodeFunctionCall (free_func);
free_call.add_argument (address_to_clean);
ccode.add_expression (free_call);
- ccode.close(); /*close cycle*/
- ccode.close(); /*close is_pointer_check*/
+ ccode.close (); /*close cycle*/
+ ccode.close (); /*close is_pointer_check*/
- ccode.close(); /*close endif*/
- ccode.close(); /*close if for free_func_not_null_check*/
+ ccode.close (); /*close endif*/
+ ccode.close (); /*close if for free_func_not_null_check*/
var ccall = new CCodeFunctionCall (new CCodeIdentifier ("memmove"));
ccall.add_argument (dest_address);
GDestroyNotify destroy_func);
static void _vala_array_move (gpointer array,
gsize element_size,
- GDestroyNotify free_func,
+ GDestroyNotify element_destroy_func,
gboolean is_pointer,
gssize src,
gssize dest,
Bar* _tmp44_;
Bar* _tmp45_;
Bar* _tmp46_;
+ Bar* _tmp47_;
_tmp0_ = 1;
_tmp1_ = __int_dup0 (&_tmp0_);
_tmp2_ = 2;
_vala_assert ((*_tmp45_).bar == 1, "a2[2].bar == 1");
_tmp46_ = a2[3];
_vala_assert ((*_tmp46_).bar == 2, "a2[3].bar == 2");
+ _tmp47_ = a2[4];
+ _vala_assert ((*_tmp47_).bar == 3, "a2[4].bar == 3");
a2 = (_vala_array_free (a2, a2_length1, (GDestroyNotify) bar_free), NULL);
a1 = (_vala_array_free (a1, a1_length1, (GDestroyNotify) g_free), NULL);
}
test_explicit_copying ();
test_array_with_simple_move ();
test_array_with_struct_move ();
- test_array_with_boxed_move ();
test_array_resize ();
test_struct_array ();
test_fixed_array ();
static void
_vala_array_move (gpointer array,
gsize element_size,
- GDestroyNotify free_func,
+ GDestroyNotify element_destroy_func,
gboolean is_pointer,
gssize src,
gssize dest,
gssize length)
{
- if (free_func != NULL) {
+ if (element_destroy_func != NULL) {
if ((src < dest) && ((src + length) > dest)) {
gssize i;
if (is_pointer) {
for (i = dest; i < (src + length); i++) {
- free_func (((void**) array)[i]);
+ element_destroy_func (((void**) array)[i]);
}
} else {
for (i = dest; i < (src + length); i++) {
- free_func (((char*) array) + (i * element_size));
+ element_destroy_func (((char*) array) + (i * element_size));
}
}
} else if ((src > dest) && (src < (dest + length))) {
gssize i;
if (is_pointer) {
for (i = dest; i < src; i++) {
- free_func (((void**) array)[i]);
+ element_destroy_func (((void**) array)[i]);
}
} else {
for (i = dest; i < src; i++) {
- free_func (((char*) array) + (i * element_size));
+ element_destroy_func (((char*) array) + (i * element_size));
}
}
} else if (src != dest) {
gssize i;
if (is_pointer) {
for (i = dest; i < (dest + length); i++) {
- free_func (((void**) array)[i]);
+ element_destroy_func (((void**) array)[i]);
}
} else {
for (i = dest; i < (dest + length); i++) {
- free_func (((char*) array) + (i * element_size));
+ element_destroy_func (((char*) array) + (i * element_size));
}
}
}