Defines | 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.

Defines

#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"

Define Documentation

#define _GNU_SOURCE

Definition at line 17 of file json_object.c.


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 
) [read]

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) [read]

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) [read]

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.

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) [read]

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, read]

Definition at line 166 of file json_object.c.

struct json_object* json_object_new_array ( void  ) [read]

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.

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) [read]

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) [read]

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  ) [read]

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) [read]

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 
) [read]

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 
) [read]

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 Mon Jan 16 2017 03:48:29