GFXprim
2D bitmap graphics library with emphasis on speed and correctness
|
A JSON writer. More...
#include <utils/gp_json_common.h>
Go to the source code of this file.
Data Structures | |
struct | gp_json_writer |
A JSON writer. More... | |
Macros | |
#define | GP_JSON_WRITER_INIT(vout, vout_priv) |
A gp_json_writer initializer with default values. | |
Functions | |
gp_json_writer * | gp_json_writer_vec_new (void) |
Allocates a JSON writer with a vector as a storage. | |
void | gp_json_writer_vec_free (gp_json_writer *self) |
Frees a JSON writer with a vector as a storage. | |
static char * | gp_json_writer_vec (gp_json_writer *self) |
Returns a pointer to a vector storage. | |
gp_json_writer * | gp_json_writer_file_open (const char *path) |
Allocates a JSON file writer. | |
int | gp_json_writer_file_close (gp_json_writer *self) |
Closes and frees a JSON file writer. | |
static int | gp_json_writer_err (gp_json_writer *self) |
Returns true if writer error happened. | |
int | gp_json_obj_start (gp_json_writer *self, const char *id) |
Starts a JSON object. | |
int | gp_json_obj_finish (gp_json_writer *self) |
Finishes a JSON object. | |
int | gp_json_arr_start (gp_json_writer *self, const char *id) |
Starts a JSON array. | |
int | gp_json_arr_finish (gp_json_writer *self) |
Finishes a JSON array. | |
int | gp_json_null_add (gp_json_writer *self, const char *id) |
Adds a null value. | |
int | gp_json_int_add (gp_json_writer *self, const char *id, long val) |
Adds an integer value. | |
int | gp_json_bool_add (gp_json_writer *self, const char *id, int val) |
Adds a bool value. | |
int | gp_json_float_add (gp_json_writer *self, const char *id, double val) |
Adds a float value. | |
int | gp_json_str_add (gp_json_writer *self, const char *id, const char *str) |
Adds a string value. | |
int | gp_json_writer_finish (gp_json_writer *self) |
Finalizes json writer. | |
A JSON writer.
All the function that add values return zero on success and non-zero on a failure. Once an error has happened all subsequent attempts to add more values return with non-zero exit status immediatelly. This is designed so that we can add several values without checking each return value and only check if error has happened at the end of the sequence.
Failures may occur:
Definition in file gp_json_writer.h.
#define GP_JSON_WRITER_INIT | ( | vout, | |
vout_priv | |||
) |
A gp_json_writer initializer with default values.
vout | A pointer to function to write out the data. |
vout_priv | An user pointer passed to the out function. |
Definition at line 53 of file gp_json_writer.h.
int gp_json_arr_finish | ( | gp_json_writer * | self | ) |
Finishes a JSON array.
The call will fail if we are currenlty not writing out an array.
self | A JSON writer. |
int gp_json_arr_start | ( | gp_json_writer * | self, |
const char * | id | ||
) |
Starts a JSON array.
For a top level array the id must be NULL, every other array has to have non-NULL id. The call will also fail if maximal recursion depth GP_JSON_RECURSION_MAX has been reached.
self | A JSON writer. |
id | An array name. |
int gp_json_bool_add | ( | gp_json_writer * | self, |
const char * | id, | ||
int | val | ||
) |
Adds a bool value.
The id must be NULL inside of an array, and must be non-NULL inside of an object.
self | A JSON writer. |
id | An boolean value name. |
val | A boolean value. |
int gp_json_float_add | ( | gp_json_writer * | self, |
const char * | id, | ||
double | val | ||
) |
Adds a float value.
The id must be NULL inside of an array, and must be non-NULL inside of an object.
self | A JSON writer. |
id | A floating point value name. |
val | A floating point value. |
int gp_json_int_add | ( | gp_json_writer * | self, |
const char * | id, | ||
long | val | ||
) |
Adds an integer value.
The id must be NULL inside of an array, and must be non-NULL inside of an object.
self | A JSON writer. |
id | An integer value name. |
val | An integer value. |
int gp_json_null_add | ( | gp_json_writer * | self, |
const char * | id | ||
) |
Adds a null value.
The id must be NULL inside of an array, and must be non-NULL inside of an object.
self | A JSON writer. |
id | A null value name. |
int gp_json_obj_finish | ( | gp_json_writer * | self | ) |
Finishes a JSON object.
The call will fail if we are currenlty not writing out an object.
self | A JSON writer. |
int gp_json_obj_start | ( | gp_json_writer * | self, |
const char * | id | ||
) |
Starts a JSON object.
For a top level object the id must be NULL, every other object has to have non-NULL id. The call will also fail if maximal recursion depth GP_JSON_RECURSION_MAX has been reached.
self | A JSON writer. |
id | An object name. |
int gp_json_str_add | ( | gp_json_writer * | self, |
const char * | id, | ||
const char * | str | ||
) |
Adds a string value.
The id must be NULL inside of an array, and must be non-NULL inside of an object.
self | A JSON writer. |
id | A string value name. |
str | A UTF8 string value. |
|
inlinestatic |
Returns true if writer error happened.
self | A JSON writer. |
Definition at line 115 of file gp_json_writer.h.
int gp_json_writer_file_close | ( | gp_json_writer * | self | ) |
Closes and frees a JSON file writer.
self | A gp_json_writer file writer. |
gp_json_writer * gp_json_writer_file_open | ( | const char * | path | ) |
Allocates a JSON file writer.
The call may fail either when file cannot be opened for writing or if allocation has failed. In all cases errno should be set correctly.
path | A path to the file, file is opened for writing and created if it does not exist. |
int gp_json_writer_finish | ( | gp_json_writer * | self | ) |
Finalizes json writer.
Finalizes the json writer, throws possible errors through the error printing function.
self | A JSON writer. |
|
inlinestatic |
Returns a pointer to a vector storage.
self | A JSON writer. |
Definition at line 81 of file gp_json_writer.h.
void gp_json_writer_vec_free | ( | gp_json_writer * | self | ) |
Frees a JSON writer with a vector as a storage.
self | A gp_json_writer with vector as a storage. |
gp_json_writer * gp_json_writer_vec_new | ( | void | ) |
Allocates a JSON writer with a vector as a storage.