- va_start(args, type);
- if (type == JSON_TYPE_STRING)
- value = json_create_value_string(va_arg(args, char *));
- else if (type == JSON_TYPE_INTEGER)
- value = json_create_value_int(va_arg(args, long));
- else if (type == JSON_TYPE_FLOAT)
- value = json_create_value_float(va_arg(args, double));
- else if (type == JSON_TYPE_OBJECT)
- value = json_create_value_object(va_arg(args, struct json_object *));
- else
- value = json_create_value_array(va_arg(args, struct json_array *));
- va_end(args);
+ switch (arg->type) {
+ case JSON_TYPE_STRING:
+ value = json_create_value_string(arg->string);
+ break;
+ case JSON_TYPE_INTEGER:
+ value = json_create_value_int(arg->integer_number);
+ break;
+ case JSON_TYPE_FLOAT:
+ value = json_create_value_float(arg->float_number);
+ break;
+ case JSON_TYPE_OBJECT:
+ value = json_create_value_object(arg->object);
+ break;
+ default:
+ case JSON_TYPE_ARRAY:
+ value = json_create_value_array(arg->array);
+ break;
+ }