Macros | Functions | Variables
json_object.c File Reference
#include <assert.h>
#include "config.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include "debug.h"
#include "printbuf.h"
#include "linkhash.h"
#include "arraylist.h"
#include "json_object.h"
#include "json_object_private.h"
#include "json_tokener.h"
Include dependency graph for json_object.c:

Go to the source code of this file.

Macros

#define _GNU_SOURCE
 
#define AC_BETTER_PRECISION
 

Functions

char * json_c_strndup (const char *str, size_t n)
 
static int json_escape_str (struct printbuf *pb, char *str)
 
int json_object_array_add (struct json_object *this, struct json_object *val)
 
static void json_object_array_delete (struct json_object *this)
 
static void json_object_array_entry_free (void *data)
 
struct json_objectjson_object_array_get_idx (struct json_object *this, int idx)
 
int json_object_array_length (struct json_object *this)
 
int json_object_array_put_idx (struct json_object *this, int idx, struct json_object *val)
 
static int json_object_array_to_json_string (struct json_object *this, struct printbuf *pb)
 
static int json_object_boolean_to_json_string (struct json_object *this, struct printbuf *pb)
 
static int json_object_double_to_json_string (struct json_object *this, struct printbuf *pb)
 
static void json_object_generic_delete (struct json_object *this)
 
struct json_objectjson_object_get (struct json_object *this)
 
struct array_listjson_object_get_array (struct json_object *this)
 
boolean json_object_get_boolean (struct json_object *this)
 
double json_object_get_double (struct json_object *this)
 
int json_object_get_int (struct json_object *this)
 
struct lh_tablejson_object_get_object (struct json_object *this)
 
char * json_object_get_string (struct json_object *this)
 
enum json_type json_object_get_type (struct json_object *this)
 
static int json_object_int_to_json_string (struct json_object *this, struct printbuf *pb)
 
int json_object_is_type (struct json_object *this, int type)
 
static void json_object_lh_entry_free (struct lh_entry *ent)
 
static struct json_objectjson_object_new (enum json_type o_type)
 
struct json_objectjson_object_new_array ()
 
struct json_objectjson_object_new_boolean (boolean b)
 
struct json_objectjson_object_new_double (double d)
 
struct json_objectjson_object_new_int (int i)
 
struct json_objectjson_object_new_object ()
 
struct json_objectjson_object_new_string (const char *s)
 
struct json_objectjson_object_new_string_len (const char *s, int len)
 
void json_object_object_add (struct json_object *this, const char *key, struct json_object *val)
 
void json_object_object_del (struct json_object *this, const char *key)
 
static void json_object_object_delete (struct json_object *this)
 
struct json_objectjson_object_object_get (struct json_object *this, const char *key)
 
static int json_object_object_to_json_string (struct json_object *this, struct printbuf *pb)
 
void json_object_put (struct json_object *this)
 
static void json_object_string_delete (struct json_object *this)
 
static int json_object_string_to_json_string (struct json_object *this, struct printbuf *pb)
 
const char * json_object_to_json_string (struct json_object *this)
 
void json_set_float_format (const char *f)
 

Variables

const char * float_format = "%e"
 
const char * json_hex_chars = "0123456789abcdef"
 
const char * json_number_chars = "0123456789.+-e"
 

Macro Definition Documentation

#define _GNU_SOURCE

Definition at line 17 of file json_object.c.

#define AC_BETTER_PRECISION

Function Documentation

char* json_c_strndup ( const char *  str,
size_t  n 
)

Definition at line 108 of file json_tokener.c.

static int json_escape_str ( struct printbuf pb,
char *  str 
)
static

Definition at line 90 of file json_object.c.

int json_object_array_add ( struct json_object obj,
struct json_object val 
)

Add an element to the end of a json_object of type json_type_array

The reference count will not be incremented. This is to make adding fields to objects in code more compact. If you want to retain a reference to an added object you must wrap the passed object with json_object_get

Parameters
objthe json_object instance
valthe json_object to be added

Definition at line 522 of file json_object.c.

static void json_object_array_delete ( struct json_object this)
static

Definition at line 488 of file json_object.c.

static void json_object_array_entry_free ( void *  data)
static

Definition at line 483 of file json_object.c.

struct json_object* json_object_array_get_idx ( struct json_object obj,
int  idx 
)

Get the element at specificed index of the array (a json_object of type json_type_array)

Parameters
objthe json_object instance
idxthe index to get the element at
Returns
the json_object at the specified index (or NULL)

Definition at line 535 of file json_object.c.

int json_object_array_length ( struct json_object obj)

Get the length of a json_object of type json_type_array

Parameters
objthe json_object instance
Returns
an int

Definition at line 516 of file json_object.c.

int json_object_array_put_idx ( struct json_object obj,
int  idx,
struct json_object val 
)

Insert or replace an element at a specified index in an array (a json_object of type json_type_array)

The reference count will not be incremented. This is to make adding fields to objects in code more compact. If you want to retain a reference to an added object you must wrap the passed object with json_object_get

The reference count of a replaced object will be decremented.

The array size will be automatically be expanded to the size of the index if the index is larger than the current size.

Parameters
objthe json_object instance
idxthe index to insert the element at
valthe json_object to be added

Definition at line 528 of file json_object.c.

static int json_object_array_to_json_string ( struct json_object this,
struct printbuf pb 
)
static

Definition at line 466 of file json_object.c.

static int json_object_boolean_to_json_string ( struct json_object this,
struct printbuf pb 
)
static

Definition at line 290 of file json_object.c.

static int json_object_double_to_json_string ( struct json_object this,
struct printbuf pb 
)
static

Definition at line 368 of file json_object.c.

static void json_object_generic_delete ( struct json_object this)
static

Definition at line 155 of file json_object.c.

struct json_object* json_object_get ( struct json_object obj)

Increment the reference count of json_object

Parameters
objthe json_object instance

Definition at line 136 of file json_object.c.

struct array_list* json_object_get_array ( struct json_object obj)

Get the arraylist of a json_object of type json_type_array

Parameters
objthe json_object instance
Returns
an arraylist

Definition at line 505 of file json_object.c.

boolean json_object_get_boolean ( struct json_object obj)

Get the boolean value of a json_object

The type is coerced to a boolean if the passed object is not a boolean. integer and double objects will return FALSE if there value is zero or TRUE otherwise. If the passed object is a string it will return TRUE if it has a non zero length. If any other object type is passed TRUE will be returned if the object is not NULL.

Parameters
objthe json_object instance
Returns
a boolean

Definition at line 306 of file json_object.c.

double json_object_get_double ( struct json_object obj)

Get the double value of a json_object

The type is coerced to a double if the passed object is not a double. integer objects will return their dboule conversion. Strings will be parsed as a double. If no conversion exists then 0.0 is returned.

Parameters
objthe json_object instance
Returns
an double

Definition at line 395 of file json_object.c.

int json_object_get_int ( struct json_object obj)

Get the int value of a json_object

The type is coerced to a int if the passed object is not a int. double objects will return their integer conversion. Strings will be parsed as an integer. If no conversion exists then 0 is returned.

Parameters
objthe json_object instance
Returns
an int

Definition at line 341 of file json_object.c.

struct lh_table* json_object_get_object ( struct json_object obj)

Get the hashtable of a json_object of type json_type_object

Parameters
objthe json_object instance
Returns
a linkhash

Definition at line 259 of file json_object.c.

char* json_object_get_string ( struct json_object obj)

Get the string value of a json_object

If the passed object is not of type json_type_string then the JSON representation of the object is returned.

The returned string memory is managed by the json_object and will be freed when the reference count of the json_object drops to zero.

Parameters
objthe json_object instance
Returns
a string

Definition at line 452 of file json_object.c.

enum json_type json_object_get_type ( struct json_object obj)

Get the type of the json_object

Parameters
objthe json_object instance
Returns
type being one of: json_type_boolean, json_type_double, json_type_int, json_type_object, json_type_array, json_type_string,

Definition at line 190 of file json_object.c.

static int json_object_int_to_json_string ( struct json_object this,
struct printbuf pb 
)
static

Definition at line 326 of file json_object.c.

int json_object_is_type ( struct json_object obj,
int  type 
)

Check if the json_object is of a given type

Parameters
objthe json_object instance
typeone of: json_type_boolean, json_type_double, json_type_int, json_type_object, json_type_array, json_type_string,

Definition at line 184 of file json_object.c.

static void json_object_lh_entry_free ( struct lh_entry ent)
static

Definition at line 236 of file json_object.c.

static struct json_object * json_object_new ( enum json_type  o_type)
static

Definition at line 166 of file json_object.c.

struct json_object* json_object_new_array ( void  )

Create a new empty json_object of type json_type_array

Returns
a json_object of type json_type_array

Definition at line 495 of file json_object.c.

struct json_object* json_object_new_boolean ( boolean  b)

Create a new empty json_object of type json_type_boolean

Parameters
ba boolean TRUE or FALSE (0 or 1)
Returns
a json_object of type json_type_boolean

Definition at line 297 of file json_object.c.

struct json_object* json_object_new_double ( double  d)

Create a new empty json_object of type json_type_double

Parameters
dthe double
Returns
a json_object of type json_type_double

Definition at line 386 of file json_object.c.

struct json_object* json_object_new_int ( int  i)

Create a new empty json_object of type json_type_int

Parameters
ithe integer
Returns
a json_object of type json_type_int

Definition at line 332 of file json_object.c.

struct json_object* json_object_new_object ( void  )

Create a new empty object

Returns
a json_object of type json_type_object

Definition at line 248 of file json_object.c.

struct json_object* json_object_new_string ( const char *  s)

Create a new empty json_object of type json_type_string

A copy of the string is made and the memory is managed by the json_object

Parameters
sthe string
Returns
a json_object of type json_type_string

Definition at line 432 of file json_object.c.

struct json_object* json_object_new_string_len ( const char *  s,
int  len 
)

Definition at line 442 of file json_object.c.

void json_object_object_add ( struct json_object obj,
const char *  key,
struct json_object val 
)

Add an object field to a json_object of type json_type_object

The reference count will not be incremented. This is to make adding fields to objects in code more compact. If you want to retain a reference to an added object you must wrap the passed object with json_object_get

Parameters
objthe json_object instance
keythe object field name (a private copy will be duplicated)
vala json_object or NULL member to associate with the given field

Definition at line 270 of file json_object.c.

void json_object_object_del ( struct json_object obj,
const char *  key 
)

Delete the given json_object field

The reference count will be decremented for the deleted object

Parameters
objthe json_object instance
keythe object field name

Definition at line 282 of file json_object.c.

static void json_object_object_delete ( struct json_object this)
static

Definition at line 242 of file json_object.c.

struct json_object* json_object_object_get ( struct json_object obj,
const char *  key 
)

Get the json_object associate with a given object field

Parameters
objthe json_object instance
keythe object field name
Returns
the json_object associated with the given field name

Definition at line 277 of file json_object.c.

static int json_object_object_to_json_string ( struct json_object this,
struct printbuf pb 
)
static

Definition at line 214 of file json_object.c.

void json_object_put ( struct json_object obj)

Decrement the reference count of json_object and free if it reaches zero

Parameters
objthe json_object instance

Definition at line 144 of file json_object.c.

static void json_object_string_delete ( struct json_object this)
static

Definition at line 426 of file json_object.c.

static int json_object_string_to_json_string ( struct json_object this,
struct printbuf pb 
)
static

Definition at line 417 of file json_object.c.

const char* json_object_to_json_string ( struct json_object obj)

Stringify object to json format

Parameters
objthe json_object instance
Returns
a string in JSON format

Definition at line 199 of file json_object.c.

void json_set_float_format ( const char *  f)

Definition at line 362 of file json_object.c.

Variable Documentation

const char* float_format = "%e"

Definition at line 360 of file json_object.c.

const char* json_hex_chars = "0123456789abcdef"

Definition at line 41 of file json_object.c.

const char* json_number_chars = "0123456789.+-e"

Definition at line 40 of file json_object.c.



csm
Author(s): Andrea Censi
autogenerated on Tue May 11 2021 02:18:23