Exemple #1
0
static void func_new (void *vo, NCDModuleInst *i, const struct NCDModuleInst_new_params *params)
{
    struct instance *o = vo;
    o->i = i;
    
    // check arguments
    NCDValRef str1_arg;
    NCDValRef str2_arg;
    if (!NCDVal_ListRead(params->args, 2, &str1_arg, &str2_arg)) {
        ModuleLog(i, BLOG_ERROR, "wrong arity");
        goto fail0;
    }
    if (!NCDVal_IsString(str1_arg) || !NCDVal_IsString(str2_arg)) {
        ModuleLog(i, BLOG_ERROR, "wrong type");
        goto fail0;
    }
    
    // compare
    o->result = (NCDVal_Compare(str1_arg, str2_arg) == 0);
    
    // signal up
    NCDModuleInst_Backend_Up(i);
    return;
    
fail0:
    NCDModuleInst_Backend_DeadError(i);
}
Exemple #2
0
static void value_compare_eval (NCDCall call, value_compare_func func)
{
    if (NCDCall_ArgCount(&call) != 2) {
        return FunctionLog(&call, BLOG_ERROR, "value_compare: need two arguments");
    }
    NCDValRef vals[2];
    for (int i = 0; i < 2; i++) {
        vals[i] = NCDCall_EvalArg(&call, i, NCDCall_ResMem(&call));
        if (NCDVal_IsInvalid(vals[i])) {
            return;
        }
    }
    int res = func(NCDVal_Compare(vals[0], vals[1]));
    NCDCall_SetResult(&call, ncd_make_boolean(NCDCall_ResMem(&call), res));
}
Exemple #3
0
static int compute_different (NCDValRef v1, NCDValRef v2)
{
    return NCDVal_Compare(v1, v2) != 0;
}
Exemple #4
0
static int compute_equal (NCDValRef v1, NCDValRef v2)
{
    return NCDVal_Compare(v1, v2) == 0;
}
Exemple #5
0
static int compute_greater_equal (NCDValRef v1, NCDValRef v2)
{
    return NCDVal_Compare(v1, v2) >= 0;
}
Exemple #6
0
static int compute_lesser_equal (NCDValRef v1, NCDValRef v2)
{
    return NCDVal_Compare(v1, v2) <= 0;
}
Exemple #7
0
static int compute_lesser (NCDValRef v1, NCDValRef v2)
{
    return NCDVal_Compare(v1, v2) < 0;
}
Exemple #8
0
static int val_comparator (void *user, NCDValRef *v1, NCDValRef *v2)
{
    return NCDVal_Compare(*v1, *v2);
}