#include #include "json_helpers.h" #include "game.h" #include "string.h" #include "heap.h" json_t *get_json_object_value(json_t *obj, char *key) { json_t *value = json_object_get(obj, key); THROW_ZERO(value, EXC_KEYERROR, ""); THROW_ZERO(json_is_object(value), EXC_ATTRIBUTEERROR, ""); return value; } bool get_json_boolean_value(json_t *obj, char *key) { json_t *value = json_object_get(obj, key); THROW_ZERO(value, EXC_KEYERROR, ""); THROW_ZERO(json_is_boolean(value), EXC_ATTRIBUTEERROR, ""); bool i = json_boolean_value(value); json_decref(value); return i; } int get_json_integer_value(json_t *obj, char *key) { json_t *value = json_object_get(obj, key); THROW_ZERO(value, EXC_KEYERROR, ""); THROW_ZERO(json_is_integer(value), EXC_ATTRIBUTEERROR, ""); int i = json_integer_value(value); json_decref(value); return i; } float get_json_number_value(json_t *obj, char *key) { json_t *value = json_object_get(obj, key); float f; THROW_ZERO(value, EXC_KEYERROR, ""); THROW_ZERO(json_is_number(value), EXC_ATTRIBUTEERROR, ""); f = json_number_value(value); json_decref(value); return f; } string *get_json_string_value(json_t *obj, char *key) { string *s = heap_next_string(); json_t *value = json_object_get(obj, key); THROW_ZERO(value, EXC_KEYERROR, key); THROW_ZERO(json_is_string(value), EXC_ATTRIBUTEERROR, key); strncpy(s->data, (char *)json_string_value(value), MAX_STRING_LENGTH); json_decref(value); return s; } json_t *get_json_array_value(json_t *obj, char *key) { json_t *value = json_object_get(obj, key); THROW_ZERO(value, EXC_KEYERROR, key); THROW_ZERO(json_is_array(value), EXC_ATTRIBUTEERROR, key); return value; } json_t *get_json_array_index_object(json_t *array, int index) { json_t *value = json_array_get(array, index); THROW_ZERO(value, EXC_INDEXERROR, ""); THROW_ZERO(json_is_object(value), EXC_ATTRIBUTEERROR, ""); return value; } int get_json_array_index_integer(json_t *array, int index) { int i; json_t *value = json_array_get(array, index); THROW_ZERO(value, EXC_INDEXERROR, ""); THROW_ZERO(json_is_integer(value), EXC_ATTRIBUTEERROR, ""); i = json_integer_value(value); json_decref(value); return i; }