Esempio n. 1
0
static int func_getvar2 (void *vo, NCD_string_id_t name, NCDValMem *mem, NCDValRef *out)
{
    struct instance *o = vo;
    
    if (name == NCD_STRING_EMPTY) {
        *out = NCDVal_NewList(mem, o->num);
        if (NCDVal_IsInvalid(*out)) {
            goto fail;
        }
        for (size_t j = 0; j < o->num; j++) {
            struct substring *elem = &((struct substring *)o->arr.v)[j];
            NCDValRef str = NCDVal_NewStringBin(mem, (uint8_t *)elem->data, elem->len);
            if (NCDVal_IsInvalid(str)) {
                goto fail;
            }
            if (!NCDVal_ListAppend(*out, str)) {
                goto fail;
            }
        }
        return 1;
    }
    
    return 0;
    
fail:
    *out = NCDVal_NewInvalid();
    return 1;
}
Esempio n. 2
0
static int func_getvar2 (void *vo, NCD_string_id_t name, NCDValMem *mem, NCDValRef *out)
{
    struct instance *o = vo;
    
    if (name == NCD_STRING_EMPTY) {
        *out = NCDVal_NewStringBin(mem, (uint8_t *)o->result, o->result_len);
        return 1;
    }
    
    return 0;
}
Esempio n. 3
0
static int read_func_getvar2 (void *vo, NCD_string_id_t name, NCDValMem *mem, NCDValRef *out)
{
    struct read_instance *o = vo;
    
    if (name == NCD_STRING_EMPTY) {
        *out = NCDVal_NewStringBin(mem, o->file_data, o->file_len);
        return 1;
    }
    
    return 0;
}
Esempio n. 4
0
static int substr_func_getvar (void *vo, NCD_string_id_t name, NCDValMem *mem, NCDValRef *out)
{
    struct substr_instance *o = vo;
    
    if (name == NCD_STRING_EMPTY) {
        if (o->is_external) {
            *out = NCDVal_NewExternalString(mem, o->data, o->length, o->external_ref_target);
        } else {
            *out = NCDVal_NewStringBin(mem, (const uint8_t *)o->data, o->length);
        }
        return 1;
    }
    
    return 0;
}