void setup(void) { array_t *a = array_create(0); list_null = datalist_create(NULL); check_list(list_null, 0); array_push(a, str_wrap("test")); array_push(a, data_true()); array_push(a, data_null()); array_push(a, int_to_data(42)); list_array = datalist_create(a); check_list(list_array, array_size(a)); list_valist = (datalist_t *) data_create(List, 2, str_wrap("test"), int_to_data(42)); check_list(list_valist, 2); }
data_t * _any_reduce(data_t *self, char _unused_ *name, arguments_t *args) { data_t *initial = (arguments_args_size(args) > 1) ? arguments_get_arg(args, 1) : data_null(); return data_reduce(self, arguments_get_arg(args, 0), initial); }
static void _data(uint8_t** buf, ujvalue* v, int i) { uint16_t n; uint8_t* sizefield; switch(v->type) { case uj_true: data_bool(buf, 1); break; case uj_false: data_bool(buf, 0); break; case uj_null: data_null(buf); break; case uj_number: switch(v->numbertype) { case uj_uint8: data_uint8(buf, v->data_as.uint8); break; case uj_int8: data_int8(buf, v->data_as.int8); break; case uj_uint16: data_uint16(buf, v->data_as.uint16); break; case uj_int16: data_int16(buf, v->data_as.int16); break; case uj_uint32: data_uint32(buf, v->data_as.uint32); break; case uj_int32: data_int32(buf, v->data_as.int32); break; case uj_uint64: data_uint64(buf, v->data_as.uint64); break; case uj_int64: data_int64(buf, v->data_as.int64); break; case uj_float: data_float(buf, v->data_as.f); break; case uj_double: data_double(buf, v->data_as.d); break; } break; case uj_string: data_string(buf, v->data_as.string); break; case uj_array: sizefield = *buf; (*buf) += 2; for (n = 0; n < array_length(v->data_as.array); n++) _data(buf, v->data_as.array->values[n], i+1); _data_size(sizefield, (uint16_t)((*buf) - sizefield - 2)); break; case uj_object: sizefield = *buf; (*buf) += 2; for (n = 0; n < v->data_as.object->size; n++) { data_string(buf, (ujstring*)v->data_as.object->data[n*2]); _data(buf, v->data_as.object->data[n*2+1], i+1); } _data_size(sizefield, (uint16_t)((*buf) - sizefield - 2)); break; } }