/* * t_array_filter2_with_data * Filter a given target element for non-ordered arrays. */ TArray * t_array_filter2_with_data (TArray * array, tpointer target, TEqDataFunc eq_func, tpointer user_data) { int i; TArray *ret; ret = t_array_new (); for (i = 0; i < t_array_length (array); i++) { tpointer elem; elem = t_array_index (array, i); if (eq_func (elem, target, user_data)) t_array_append (ret, elem); } return ret; }
int lily_any_eq(lily_vm_state *vm, int *depth, lily_value *left, lily_value *right) { int ret; if (*depth == 100) lily_raise(vm->raiser, lily_RecursionError, "Infinite loop in comparison.\n"); lily_value *left_inner = left->value.any->inner_value; lily_value *right_inner = right->value.any->inner_value; if (left_inner->type == right_inner->type) { class_eq_func eq_func = left_inner->type->cls->eq_func; (*depth)++; ret = eq_func(vm, depth, left_inner, right_inner); (*depth)--; } else ret = 0; return ret; }