コード例 #1
0
ファイル: tarray.c プロジェクト: godievski/legend-of-katty
/*
 * 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;
}
コード例 #2
0
ファイル: lily_cls_any.c プロジェクト: fmutant/scriptorium
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;
}