json related updates

This commit is contained in:
east 2014-09-18 16:11:22 +02:00
parent d161005658
commit 6ab9279211
2 changed files with 28 additions and 1 deletions

View file

@ -222,6 +222,7 @@ function build(settings)
-- build the small libraries
wavpack = Compile(settings, Collect("src/engine/external/wavpack/*.c"))
pnglite = Compile(settings, Collect("src/engine/external/pnglite/*.c"))
jsonparser = Compile(settings, Collect("src/engine/external/json-parser/*.c"))
-- build game components
engine_settings = settings:Copy()
@ -308,7 +309,7 @@ function build(settings)
-- build client, server, version server and master server
client_exe = Link(client_settings, "DDNet", game_shared, game_client,
engine, client, game_editor, zlib, pnglite, wavpack,
client_link_other, client_osxlaunch)
client_link_other, client_osxlaunch, jsonparser)
server_exe = Link(server_settings, "DDNet-Server", engine, server,
game_shared, game_server, zlib, server_link_other)

View file

@ -31,6 +31,8 @@
#ifndef _JSON_H
#define _JSON_H
#include <string.h>
#ifndef json_char
#define json_char char
#endif
@ -182,6 +184,30 @@ json_value * json_parse_ex
void json_value_free (json_value *);
inline const struct _json_value *json_object_get (const json_value * object, const char * index)
{
if (object->type != json_object)
return &json_value_none;
unsigned int i;
for (i = 0; i < object->u.object.length; ++ i)
if (!strcmp (object->u.object.values [i].name, index))
return object->u.object.values [i].value;
return &json_value_none;
}
inline const struct _json_value *json_array_get (const json_value * array, int index)
{
if (array->type != json_array || index >= (int)array->u.array.length)
return &json_value_none;
return array->u.array.values[index];
}
inline int json_array_length (const json_value * array) { return array->u.array.length; }
inline const char * json_string_get (const json_value * string) { return string->u.string.ptr; }
inline int json_int_get (const json_value * integer) { return integer->u.integer; }
#ifdef __cplusplus
} /* extern "C" */