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; }
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; }
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; }
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; }