Example #1
0
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);
}
Example #2
0
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);
}
Example #3
0
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;
	}
}