return value;
}
+static struct json_value *json_create_value_uint(unsigned long long number)
+{
+ struct json_value *value = malloc(sizeof(struct json_value));
+
+ if (value) {
+ value->type = JSON_TYPE_UINT;
+ value->uint_number = number;
+ } else
+ fail_and_notify();
+
+ return value;
+}
+
static struct json_value *json_create_value_float(long double number)
{
struct json_value *value = malloc(sizeof(struct json_value));
value = json_create_value_string(va_arg(args, char *));
else if (type == JSON_TYPE_INTEGER)
value = json_create_value_int(va_arg(args, long long));
+ else if (type == JSON_TYPE_UINT)
+ value = json_create_value_uint(va_arg(args, unsigned long long));
else if (type == JSON_TYPE_FLOAT)
value = json_create_value_float(va_arg(args, long double));
else if (type == JSON_TYPE_OBJECT)
value = json_create_value_string(va_arg(args, char *));
else if (type == JSON_TYPE_INTEGER)
value = json_create_value_int(va_arg(args, long long));
+ else if (type == JSON_TYPE_UINT)
+ value = json_create_value_uint(va_arg(args, unsigned long long));
else if (type == JSON_TYPE_FLOAT)
value = json_create_value_float(va_arg(args, double));
else if (type == JSON_TYPE_OBJECT)
case JSON_TYPE_INTEGER:
printf( "%lld", value->integer_number);
break;
+ case JSON_TYPE_UINT:
+ printf( "%llu", value->uint_number);
+ break;
case JSON_TYPE_FLOAT:
printf( "%.0Lf", value->float_number);
break;
#define JSON_TYPE_FLOAT 2
#define JSON_TYPE_OBJECT 3
#define JSON_TYPE_ARRAY 4
+#define JSON_TYPE_UINT 5
#define JSON_PARENT_TYPE_PAIR 0
#define JSON_PARENT_TYPE_ARRAY 1
struct json_value {
int type;
union {
long long integer_number;
+ unsigned long long uint_number;
long double float_number;
char *string;
struct json_object *object;
int json_object_add_value_type(struct json_object *obj, const char *name, int type, ...);
#define json_object_add_value_int(obj, name, val) \
json_object_add_value_type((obj), name, JSON_TYPE_INTEGER, (long long) (val))
+#define json_object_add_value_uint(obj, name, val) \
+ json_object_add_value_type((obj), name, JSON_TYPE_UINT, (unsigned long long) (val))
#define json_object_add_value_float(obj, name, val) \
json_object_add_value_type((obj), name, JSON_TYPE_FLOAT, (val))
#define json_object_add_value_string(obj, name, val) \
int json_array_add_value_type(struct json_array *array, int type, ...);
#define json_array_add_value_int(obj, val) \
json_array_add_value_type((obj), JSON_TYPE_INTEGER, (val))
+#define json_array_add_value_uint(obj, val) \
+ json_array_add_value_type((obj), JSON_TYPE_UINT, (val))
#define json_array_add_value_float(obj, val) \
json_array_add_value_type((obj), JSON_TYPE_FLOAT, (val))
#define json_array_add_value_string(obj, val) \