Operator Console
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Friends | List of all members
JSONNode Class Reference

#include <JSONNode.h>

Classes

struct  const_iterator
 
struct  iterator
 
struct  reverse_const_iterator
 
struct  reverse_iterator
 

Public Types

typedef iterator json_iterator
 
typedef iterator json_iterator
 

Public Member Functions

 JSONNode (char mytype=JSON_NODE) json_nothrow json_hot
 
 JSONNode (const JSONNode &orig) json_nothrow json_hot
 
 ~JSONNode (void) json_nothrow json_hot
 
json_index_t size (void) const json_nothrow json_read_priority
 
bool empty (void) const json_nothrow json_read_priority
 
void clear (void) json_nothrow json_cold
 
unsigned char type (void) const json_nothrow json_read_priority
 
json_string name (void) const json_nothrow json_read_priority
 
void set_name (const json_string &newname) json_nothrow json_write_priority
 
void set_comment (const json_string &comment) json_nothrow
 
json_string get_comment (void) const json_nothrow
 
void preparse (void) json_nothrow json_read_priority
 
json_string as_string (void) const json_nothrow json_read_priority
 
json_int_t as_int (void) const json_nothrow json_read_priority
 
json_number as_float (void) const json_nothrow json_read_priority
 
bool as_bool (void) const json_nothrow json_read_priority
 
JSONNode as_node (void) const json_nothrow json_read_priority
 
JSONNode as_array (void) const json_nothrow json_read_priority
 
void cast (char newtype) json_nothrow
 
std::string as_binary (void) const json_nothrow json_cold
 
void set_binary (const unsigned char *bin, size_t bytes) json_nothrow json_cold
 
const JSONNodeoperator[] (json_index_t pos) const json_nothrow
 
const JSONNodeoperator[] (const json_string &name_t) const json_nothrow
 
void push_back (const JSONNode &node) json_nothrow
 
void reserve (json_index_t siz) json_nothrow
 
void nullify (void) json_nothrow
 
void swap (JSONNode &other) json_nothrow
 
void merge (JSONNode &other) json_nothrow json_cold
 
void merge (unsigned int num,...) json_nothrow json_cold
 
JSONNode duplicate (void) const json_nothrow
 
const_iterator begin (void) const json_nothrow
 
const_iterator end (void) const json_nothrow
 
reverse_const_iterator rbegin (void) const json_nothrow
 
reverse_const_iterator rend (void) const json_nothrow
 
reverse_iterator rbegin (void) json_nothrow
 
reverse_iterator rend (void) json_nothrow
 
const_iterator find (const json_string &name_t) const json_nothrow
 
const_iterator find_nocase (const json_string &name_t) const json_nothrow
 
reverse_iterator erase (reverse_iterator pos) json_nothrow
 
reverse_iterator erase (reverse_iterator start, const reverse_iterator &end) json_nothrow
 
iterator insert (iterator pos, const JSONNode &x) json_nothrow
 
reverse_iterator insert (reverse_iterator pos, const JSONNode &x) json_nothrow
 
iterator insert (iterator pos, const reverse_iterator &_start, const reverse_iterator &_end) json_nothrow
 
reverse_iterator insert (reverse_iterator pos, const iterator &_start, const iterator &_end) json_nothrow
 
reverse_iterator insert (reverse_iterator pos, const reverse_iterator &_start, const reverse_iterator &_end) json_nothrow
 
json_iterator insert (json_iterator pos, const const_iterator &_start, const const_iterator &_end) json_nothrow
 
reverse_iterator insert (reverse_iterator pos, const const_iterator &_start, const const_iterator &_end) json_nothrow
 
json_iterator insert (json_iterator pos, const reverse_const_iterator &_start, const reverse_const_iterator &_end) json_nothrow
 
reverse_iterator insert (reverse_iterator pos, const reverse_const_iterator &_start, const reverse_const_iterator &_end) json_nothrow
 
json_iterator begin (void) json_nothrow
 
json_iterator end (void) json_nothrow
 
json_iterator find (const json_string &name_t) json_nothrow
 
json_iterator find_nocase (const json_string &name_t) json_nothrow
 
json_iterator erase (json_iterator pos) json_nothrow
 
json_iterator erase (json_iterator start, const json_iterator &end) json_nothrow
 
json_iterator insert (json_iterator pos, const json_iterator &_start, const json_iterator &_end) json_nothrow
 
json_string write (size_t approxsize=DEFAULT_APPROX_SIZE) const json_nothrow json_write_priority
 
json_string write_formatted (size_t approxsize=DEFAULT_APPROX_SIZE_FORMATTED) const json_nothrow json_write_priority
 
 JSONNode (const json_string &unparsed) json_nothrow
 
 JSONNode (internalJSONNode *internal_t) json_nothrow
 
 JSONNode (bool, JSONNode &orig) json_nothrow json_hot
 
void decRef (void) json_nothrow json_hot
 
void makeUniqueInternal (void) json_nothrow
 
void merge (JSONNode *other) json_nothrow json_cold
 
json_iterator insertFRR (json_iterator pos, JSONNode **const _start, JSONNode **const _end) json_nothrow
 
reverse_iterator insertRRR (reverse_iterator pos, JSONNode **const _start, JSONNode **const _end) json_nothrow
 
reverse_iterator insertRFF (reverse_iterator pos, JSONNode **const _start, JSONNode **const _end) json_nothrow
 
json_iterator insertFFF (json_iterator pos, JSONNode **const _start, JSONNode **const _end) json_nothrow
 
void clear_name (void) json_nothrow
 
 JSONNode (char mytype=JSON_NODE) json_nothrow json_hot
 
 JSONNode (const JSONNode &orig) json_nothrow json_hot
 
 ~JSONNode (void) json_nothrow json_hot
 
json_index_t size (void) const json_nothrow json_read_priority
 
bool empty (void) const json_nothrow json_read_priority
 
void clear (void) json_nothrow json_cold
 
unsigned char type (void) const json_nothrow json_read_priority
 
json_string name (void) const json_nothrow json_read_priority
 
void set_name (const json_string &newname) json_nothrow json_write_priority
 
void set_comment (const json_string &comment) json_nothrow
 
json_string get_comment (void) const json_nothrow
 
void preparse (void) json_nothrow json_read_priority
 
json_string as_string (void) const json_nothrow json_read_priority
 
json_int_t as_int (void) const json_nothrow json_read_priority
 
json_number as_float (void) const json_nothrow json_read_priority
 
bool as_bool (void) const json_nothrow json_read_priority
 
JSONNode as_node (void) const json_nothrow json_read_priority
 
JSONNode as_array (void) const json_nothrow json_read_priority
 
void cast (char newtype) json_nothrow
 
std::string as_binary (void) const json_nothrow json_cold
 
void set_binary (const unsigned char *bin, size_t bytes) json_nothrow json_cold
 
const JSONNodeoperator[] (json_index_t pos) const json_nothrow
 
const JSONNodeoperator[] (const json_string &name_t) const json_nothrow
 
void push_back (const JSONNode &node) json_nothrow
 
void reserve (json_index_t siz) json_nothrow
 
void nullify (void) json_nothrow
 
void swap (JSONNode &other) json_nothrow
 
void merge (JSONNode &other) json_nothrow json_cold
 
void merge (unsigned int num,...) json_nothrow json_cold
 
JSONNode duplicate (void) const json_nothrow
 
const_iterator begin (void) const json_nothrow
 
const_iterator end (void) const json_nothrow
 
reverse_const_iterator rbegin (void) const json_nothrow
 
reverse_const_iterator rend (void) const json_nothrow
 
reverse_iterator rbegin (void) json_nothrow
 
reverse_iterator rend (void) json_nothrow
 
const_iterator find (const json_string &name_t) const json_nothrow
 
const_iterator find_nocase (const json_string &name_t) const json_nothrow
 
reverse_iterator erase (reverse_iterator pos) json_nothrow
 
reverse_iterator erase (reverse_iterator start, const reverse_iterator &end) json_nothrow
 
iterator insert (iterator pos, const JSONNode &x) json_nothrow
 
reverse_iterator insert (reverse_iterator pos, const JSONNode &x) json_nothrow
 
iterator insert (iterator pos, const reverse_iterator &_start, const reverse_iterator &_end) json_nothrow
 
reverse_iterator insert (reverse_iterator pos, const iterator &_start, const iterator &_end) json_nothrow
 
reverse_iterator insert (reverse_iterator pos, const reverse_iterator &_start, const reverse_iterator &_end) json_nothrow
 
json_iterator insert (json_iterator pos, const const_iterator &_start, const const_iterator &_end) json_nothrow
 
reverse_iterator insert (reverse_iterator pos, const const_iterator &_start, const const_iterator &_end) json_nothrow
 
json_iterator insert (json_iterator pos, const reverse_const_iterator &_start, const reverse_const_iterator &_end) json_nothrow
 
reverse_iterator insert (reverse_iterator pos, const reverse_const_iterator &_start, const reverse_const_iterator &_end) json_nothrow
 
json_iterator begin (void) json_nothrow
 
json_iterator end (void) json_nothrow
 
json_iterator find (const json_string &name_t) json_nothrow
 
json_iterator find_nocase (const json_string &name_t) json_nothrow
 
json_iterator erase (json_iterator pos) json_nothrow
 
json_iterator erase (json_iterator start, const json_iterator &end) json_nothrow
 
json_iterator insert (json_iterator pos, const json_iterator &_start, const json_iterator &_end) json_nothrow
 
json_string write (size_t approxsize=DEFAULT_APPROX_SIZE) const json_nothrow json_write_priority
 
json_string write_formatted (size_t approxsize=DEFAULT_APPROX_SIZE_FORMATTED) const json_nothrow json_write_priority
 
 JSONNode (const json_string &unparsed) json_nothrow
 
 JSONNode (internalJSONNode *internal_t) json_nothrow
 
 JSONNode (bool, JSONNode &orig) json_nothrow json_hot
 
void decRef (void) json_nothrow json_hot
 
void makeUniqueInternal (void) json_nothrow
 
void merge (JSONNode *other) json_nothrow json_cold
 
json_iterator insertFRR (json_iterator pos, JSONNode **const _start, JSONNode **const _end) json_nothrow
 
reverse_iterator insertRRR (reverse_iterator pos, JSONNode **const _start, JSONNode **const _end) json_nothrow
 
reverse_iterator insertRFF (reverse_iterator pos, JSONNode **const _start, JSONNode **const _end) json_nothrow
 
json_iterator insertFFF (json_iterator pos, JSONNode **const _start, JSONNode **const _end) json_nothrow
 
void clear_name (void) json_nothrow
 

Static Public Member Functions

static void deleteJSONNode (JSONNode *ptr) json_nothrow json_hot
 
static JSONNodenewJSONNode_Shallow (const JSONNode &orig) json_hot
 
static JSON_PRIVATE JSONNodenewJSONNode (const JSONNode &orig JSON_MUTEX_COPY_DECL2) json_hot
 
static JSONNodenewJSONNode (internalJSONNode *internal_t) json_hot
 
static void deleteJSONNode (JSONNode *ptr) json_nothrow json_hot
 
static JSONNodenewJSONNode_Shallow (const JSONNode &orig) json_hot
 
static JSON_PRIVATE JSONNodenewJSONNode (const JSONNode &orig JSON_MUTEX_COPY_DECL2) json_hot
 
static JSONNodenewJSONNode (internalJSONNode *internal_t) json_hot
 

Public Attributes

JSONNode &at(json_index_t pos)
json_throws(std const JSONNode
&at(json_index_t pos) const
json_throws(std JSONNode
operator[] (json_index_t pos) json_nothrow
 
JSONNode &at(const json_string
&name_t) json_throws(std const
JSONNode &at(const json_string
&name_t) const json_throws(std
JSONNode &at_nocase(const
json_string &name_t)
json_throws(std const JSONNode
&at_nocase(const json_string
&name_t) const json_throws(std
JSONNode
operator[] (const json_string &name_t) json_nothrow
 
JSONNode JSON_PTR_LIB pop_back(json_index_t
pos) json_throws(std JSONNode
JSON_PTR_LIB pop_back(const
json_string &name_t)
json_throws(std JSONNode
JSON_PTR_LIB pop_back_nocase(const
json_string &name_t)
json_throws(std JSONNode
operator= (const JSONNode &) json_nothrow
 
internalJSONNodeinternal
 

Friends

class JSONWorker
 
class internalJSONNode
 

Member Typedef Documentation

Constructor & Destructor Documentation

JSONNode::JSONNode ( char  mytype = JSON_NODE)
inlineexplicit

References incAllocCount, JSON_ARRAY, JSON_ASSERT, JSON_BOOL, JSON_NODE, JSON_NULL, JSON_NUMBER, JSON_STRING, and JSON_TEXT.

Referenced by _newJSONNode(), as_array(), as_node(), newJSONNode(), and newJSONNode_Shallow().

605  : internal(internalJSONNode::newInternal(mytype)){
606  JSON_ASSERT((mytype == JSON_NULL) ||
607  (mytype == JSON_STRING) ||
608  (mytype == JSON_NUMBER) ||
609  (mytype == JSON_BOOL) ||
610  (mytype == JSON_ARRAY) ||
611  (mytype == JSON_NODE), JSON_TEXT("Not a proper JSON type"));
612  incAllocCount();
613 }
#define JSON_TEXT(s)
Definition: Strings_Defs.h:30
#define JSON_BOOL
Definition: JSONDefs.h:24
static internalJSONNode * newInternal(char mytype=JSON_NULL) json_hot
Definition: internalJSONNode.cpp:704
#define incAllocCount()
Definition: internalJSONNode.h:64
#define JSON_NODE
Definition: JSONDefs.h:26
#define JSON_NULL
Definition: JSONDefs.h:21
#define JSON_ASSERT(condition, msg)
Definition: JSONDebug.h:53
#define JSON_STRING
Definition: JSONDefs.h:22
#define JSON_NUMBER
Definition: JSONDefs.h:23
#define JSON_ARRAY
Definition: JSONDefs.h:25

Here is the caller graph for this function:

JSONNode::JSONNode ( const JSONNode orig)
inline

References incAllocCount.

615  : internal(orig.internal -> incRef()){
616  incAllocCount();
617 }
internalJSONNode * internal
Definition: JSONNode.h:586
#define incAllocCount()
Definition: internalJSONNode.h:64
JSONNode::~JSONNode ( void  )
inline

References decAllocCount, and decRef().

Referenced by deleteJSONNode().

625  {
626  if (internal != 0) decRef();
627  decAllocCount();
628 }
#define decAllocCount()
Definition: internalJSONNode.h:65
void decRef(void) json_nothrow json_hot
Definition: JSONNode.h:831

Here is the call graph for this function:

Here is the caller graph for this function:

JSONNode::JSONNode ( const json_string &  unparsed)
inline

References incAllocCount.

550  : internal(internalJSONNode::newInternal(unparsed)){ //root, specialized because it can only be array or node
551  incAllocCount();
552  }
static internalJSONNode * newInternal(char mytype=JSON_NULL) json_hot
Definition: internalJSONNode.cpp:704
#define incAllocCount()
Definition: internalJSONNode.h:64
JSONNode::JSONNode ( internalJSONNode internal_t)
inline

References incAllocCount.

554  : internal(internal_t){ //do not increment anything, this is only used in one case and it's already taken care of
555  incAllocCount();
556  }
#define incAllocCount()
Definition: internalJSONNode.h:64
JSONNode::JSONNode ( bool  ,
JSONNode orig 
)
inline

References incAllocCount.

620  : internal(orig.internal){
621  orig.internal = 0;
622  incAllocCount();
623 }
internalJSONNode * internal
Definition: JSONNode.h:586
#define incAllocCount()
Definition: internalJSONNode.h:64
JSONNode::JSONNode ( char  mytype = JSON_NODE)
explicit
JSONNode::JSONNode ( const JSONNode orig)
JSONNode::~JSONNode ( void  )
JSONNode::JSONNode ( const json_string &  unparsed)
inline

References incAllocCount.

550  : internal(internalJSONNode::newInternal(unparsed)){ //root, specialized because it can only be array or node
551  incAllocCount();
552  }
static internalJSONNode * newInternal(char mytype=JSON_NULL) json_hot
Definition: internalJSONNode.cpp:704
#define incAllocCount()
Definition: internalJSONNode.h:64
JSONNode::JSONNode ( internalJSONNode internal_t)
inline

References incAllocCount.

554  : internal(internal_t){ //do not increment anything, this is only used in one case and it's already taken care of
555  incAllocCount();
556  }
#define incAllocCount()
Definition: internalJSONNode.h:64
JSONNode::JSONNode ( bool  ,
JSONNode orig 
)

Member Function Documentation

JSONNode JSONNode::as_array ( void  ) const

References CHILDREN, clear_name(), duplicate(), internal, JSON_ARRAY, JSON_CHECK_INTERNAL, json_foreach, JSON_NODE, JSONNode(), and type().

Referenced by getIntFromArray(), ImageTest::GetString(), ImageTest::ParseFailures(), SFRplusTest::ParseOverlay(), and BlemishTest::ParseResults().

84  {
86  if (type() == JSON_ARRAY){
87  return *this;
88  } else if (type() == JSON_NODE){
89  JSONNode res(duplicate());
90  res.internal -> _type = JSON_ARRAY;
91  json_foreach(res.internal -> CHILDREN, runner){
92  (*runner) -> clear_name();
93  }
94  return res;
95  }
96  #ifdef JSON_MUTEX_CALLBACKS
97  if (internal -> mylock != 0){
98  JSONNode res(JSON_ARRAY);
99  res.set_mutex(internal -> mylock);
100  return res;
101  }
102  #endif
103  return JSONNode(JSON_ARRAY);
104  }
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
#define json_foreach(chldrn, itrtr)
Definition: JSONChildren.h:15
unsigned char type(void) const json_nothrow json_read_priority
Definition: JSONNode.h:648
Definition: JSONNode.h:132
#define JSON_NODE
Definition: JSONDefs.h:26
JSONNode(char mytype=JSON_NODE) json_nothrow json_hot
Definition: JSONNode.h:605
JSONNode duplicate(void) const json_nothrow
Definition: JSONNode.cpp:175
void clear_name(void) json_nothrow
Definition: JSONNode.h:580
#define CHILDREN
Definition: internalJSONNode.h:79
#define JSON_ARRAY
Definition: JSONDefs.h:25

Here is the call graph for this function:

Here is the caller graph for this function:

JSONNode JSONNode::as_array ( void  ) const
std::string JSONNode::as_binary ( void  ) const
inline

References as_string(), JSON_ASSERT_SAFE, JSON_CHECK_INTERNAL, JSONBase64::json_decode64(), json_global, JSON_STRING, JSON_TEXT, and type().

705  {
706  JSON_ASSERT_SAFE(type() == JSON_STRING, JSON_TEXT("using as_binary for a non-string type"), return json_global(EMPTY_STD_STRING););
709  }
static std::string json_decode64(const json_string &encoded) json_nothrow json_cold
Definition: JSON_Base64.cpp:64
#define JSON_TEXT(s)
Definition: Strings_Defs.h:30
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
#define json_global(NAME)
Definition: JSONGlobals.h:26
unsigned char type(void) const json_nothrow json_read_priority
Definition: JSONNode.h:648
#define JSON_STRING
Definition: JSONDefs.h:22
#define JSON_ASSERT_SAFE(condition, msg, code)
Definition: JSONDebug.h:49
json_string as_string(void) const json_nothrow json_read_priority
Definition: JSONNode.h:678

Here is the call graph for this function:

std::string JSONNode::as_binary ( void  ) const
bool JSONNode::as_bool ( void  ) const
bool JSONNode::as_bool ( void  ) const
inline

References JSON_CHECK_INTERNAL.

Referenced by ImageTest::ParseFailures(), and BlemishTest::ParseResults().

693  {
695  return static_cast<bool>(*internal);
696  }
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25

Here is the caller graph for this function:

json_number JSONNode::as_float ( void  ) const
json_number JSONNode::as_float ( void  ) const
inline

References JSON_CHECK_INTERNAL.

Referenced by getFloatArray(), and SFRplusTest::ParseOverlay().

688  {
690  return static_cast<json_number>(*internal);
691  }
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
double json_number
Definition: JSONDefs.h:91

Here is the caller graph for this function:

json_int_t JSONNode::as_int ( void  ) const
json_int_t JSONNode::as_int ( void  ) const
inline

References JSON_CHECK_INTERNAL.

Referenced by getIntFromArray(), and sumArrayInt().

683  {
685  return static_cast<json_int_t>(*internal);
686  }
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
long json_int_t
Definition: JSONDefs.h:121

Here is the caller graph for this function:

JSONNode JSONNode::as_node ( void  ) const
JSONNode JSONNode::as_node ( void  ) const

References duplicate(), internal, JSON_ARRAY, JSON_CHECK_INTERNAL, JSON_NODE, JSONNode(), and type().

65  {
67  if (type() == JSON_NODE){
68  return *this;
69  } else if (type() == JSON_ARRAY){
70  JSONNode res(duplicate());
71  res.internal -> _type = JSON_NODE;
72  return res;
73  }
74  #ifdef JSON_MUTEX_CALLBACKS
75  if (internal -> mylock != 0){
76  JSONNode res(JSON_NODE);
77  res.set_mutex(internal -> mylock);
78  return res;
79  }
80  #endif
81  return JSONNode(JSON_NODE);
82  }
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
unsigned char type(void) const json_nothrow json_read_priority
Definition: JSONNode.h:648
Definition: JSONNode.h:132
#define JSON_NODE
Definition: JSONDefs.h:26
JSONNode(char mytype=JSON_NODE) json_nothrow json_hot
Definition: JSONNode.h:605
JSONNode duplicate(void) const json_nothrow
Definition: JSONNode.cpp:175
#define JSON_ARRAY
Definition: JSONDefs.h:25

Here is the call graph for this function:

json_string JSONNode::as_string ( void  ) const
inline

References JSON_CHECK_INTERNAL.

Referenced by as_binary(), and ImageTest::GetString().

678  {
680  return static_cast<json_string>(*internal);
681  }
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25

Here is the caller graph for this function:

json_string JSONNode::as_string ( void  ) const
const_iterator JSONNode::begin ( void  ) const
JSONNode::const_iterator JSONNode::begin ( void  ) const
inline

References JSON_ARRAY, JSON_ASSERT, JSON_CHECK_INTERNAL, json_global, JSON_NODE, JSON_TEXT, and type().

Referenced by begin(), and rend().

866  {
868  JSON_ASSERT(type() == JSON_NODE || type() == JSON_ARRAY, json_global(ERROR_NON_ITERATABLE) + JSON_TEXT("begin"));
869  return JSONNode::const_iterator(internal -> begin());
870  }
#define JSON_TEXT(s)
Definition: Strings_Defs.h:30
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
#define json_global(NAME)
Definition: JSONGlobals.h:26
unsigned char type(void) const json_nothrow json_read_priority
Definition: JSONNode.h:648
Definition: JSONNode.h:226
#define JSON_NODE
Definition: JSONDefs.h:26
#define JSON_ASSERT(condition, msg)
Definition: JSONDebug.h:53
const_iterator begin(void) const json_nothrow
Definition: JSONNode.h:866
#define JSON_ARRAY
Definition: JSONDefs.h:25

Here is the call graph for this function:

Here is the caller graph for this function:

JSONNode::json_iterator JSONNode::begin ( void  )
inline

References begin(), JSON_ARRAY, JSON_ASSERT, JSON_CHECK_INTERNAL, json_global, JSON_NODE, JSON_TEXT, makeUniqueInternal(), and type().

851  {
853  JSON_ASSERT(type() == JSON_NODE || type() == JSON_ARRAY, json_global(ERROR_NON_ITERATABLE) + JSON_TEXT("begin"));
855  return json_iterator(internal -> begin());
856  }
#define JSON_TEXT(s)
Definition: Strings_Defs.h:30
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
#define json_global(NAME)
Definition: JSONGlobals.h:26
unsigned char type(void) const json_nothrow json_read_priority
Definition: JSONNode.h:648
void makeUniqueInternal(void) json_nothrow
Definition: JSONNode.h:844
#define JSON_NODE
Definition: JSONDefs.h:26
#define JSON_ASSERT(condition, msg)
Definition: JSONDebug.h:53
const_iterator begin(void) const json_nothrow
Definition: JSONNode.h:866
iterator json_iterator
Definition: JSONNode.h:331
#define JSON_ARRAY
Definition: JSONDefs.h:25

Here is the call graph for this function:

json_iterator JSONNode::begin ( void  )
void JSONNode::cast ( char  newtype)

References JSON_ARRAY, JSON_BOOL, JSON_CHECK_INTERNAL, JSON_FAIL, JSON_NODE, JSON_NULL, JSON_NUMBER, JSON_STRING, and JSON_TEXT.

106  {
108  if (newtype == type()) return;
109 
110  switch(newtype){
111  case JSON_NULL:
112  nullify();
113  return;
114  case JSON_STRING:
115  *this = as_string();
116  return;
117  case JSON_NUMBER:
118  *this = as_float();
119  return;
120  case JSON_BOOL:
121  *this = as_bool();
122  return;
123  case JSON_ARRAY:
124  *this = as_array();
125  return;
126  case JSON_NODE:
127  *this = as_node();
128  return;
129  }
130  JSON_FAIL(JSON_TEXT("cast to unknown type"));
131  }
bool as_bool(void) const json_nothrow json_read_priority
Definition: JSONNode.h:693
#define JSON_TEXT(s)
Definition: Strings_Defs.h:30
#define JSON_BOOL
Definition: JSONDefs.h:24
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
unsigned char type(void) const json_nothrow json_read_priority
Definition: JSONNode.h:648
void nullify(void) json_nothrow
Definition: JSONNode.h:817
#define JSON_NODE
Definition: JSONDefs.h:26
JSONNode as_array(void) const json_nothrow json_read_priority
Definition: JSONNode.cpp:84
#define JSON_NULL
Definition: JSONDefs.h:21
#define JSON_STRING
Definition: JSONDefs.h:22
JSONNode as_node(void) const json_nothrow json_read_priority
Definition: JSONNode.cpp:65
json_number as_float(void) const json_nothrow json_read_priority
Definition: JSONNode.h:688
json_string as_string(void) const json_nothrow json_read_priority
Definition: JSONNode.h:678
#define JSON_NUMBER
Definition: JSONDefs.h:23
#define JSON_FAIL(msg)
Definition: JSONDebug.h:54
#define JSON_ARRAY
Definition: JSONDefs.h:25
void JSONNode::cast ( char  newtype)
void JSONNode::clear ( void  )
void JSONNode::clear ( void  )
inline

References CHILDREN, empty(), JSON_CHECK_INTERNAL, and makeUniqueInternal().

640  {
642  if (!empty()){
644  internal -> CHILDREN -> clear();
645  }
646 }
bool empty(void) const json_nothrow json_read_priority
Definition: JSONNode.h:635
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
void makeUniqueInternal(void) json_nothrow
Definition: JSONNode.h:844
void clear(void) json_nothrow json_cold
Definition: JSONNode.h:640
#define CHILDREN
Definition: internalJSONNode.h:79

Here is the call graph for this function:

void JSONNode::clear_name ( void  )
inline

References JSON_CHECK_INTERNAL, and makeUniqueInternal().

Referenced by as_array().

580  {
583  internal -> clearname();
584  }
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
void makeUniqueInternal(void) json_nothrow
Definition: JSONNode.h:844

Here is the call graph for this function:

Here is the caller graph for this function:

void JSONNode::clear_name ( void  )
inline

References JSON_CHECK_INTERNAL, and makeUniqueInternal().

580  {
583  internal -> clearname();
584  }
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
void makeUniqueInternal(void) json_nothrow
Definition: JSONNode.h:844

Here is the call graph for this function:

void JSONNode::decRef ( void  )
inline

References internalJSONNode::deleteInternal(), internalJSONNode::hasNoReferences(), and JSON_CHECK_INTERNAL.

Referenced by ~JSONNode().

831  { //decrements internal's counter, deletes it if needed
833  #ifdef JSON_REF_COUNT
834  internal -> decRef();
835  if (internal -> hasNoReferences()){
837  }
838  #else
840  #endif
841 }
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
void decRef(void) json_nothrow json_hot
Definition: JSONNode.h:831
static void deleteInternal(internalJSONNode *ptr) json_nothrow json_hot
Definition: internalJSONNode.cpp:692

Here is the call graph for this function:

Here is the caller graph for this function:

void JSONNode::decRef ( void  )
void JSONNode::deleteJSONNode ( JSONNode ptr)
static

References ~JSONNode().

Referenced by jsonChildren::deleteAll(), and auto_delete::~auto_delete().

325  {
326  #ifdef JSON_MEMORY_POOL
327  ptr -> ~JSONNode();
328  json_node_mempool.deallocate((void*)ptr);
329  #elif defined(JSON_MEMORY_CALLBACKS)
330  ptr -> ~JSONNode();
331  libjson_free<JSONNode>(ptr);
332  #else
333  delete ptr;
334  #endif
335 }
~JSONNode(void) json_nothrow json_hot
Definition: JSONNode.h:625

Here is the call graph for this function:

Here is the caller graph for this function:

static void JSONNode::deleteJSONNode ( JSONNode ptr)
static
JSONNode JSONNode::duplicate ( void  ) const
JSONNode JSONNode::duplicate ( void  ) const

References internal, JSON_ASSERT, JSON_CHECK_INTERNAL, JSON_TEXT, and makeUniqueInternal().

Referenced by as_array(), and as_node().

175  {
177  JSONNode mycopy(*this);
178  #ifdef JSON_REF_COUNT
179  JSON_ASSERT(internal == mycopy.internal, JSON_TEXT("copy ctor failed to ref count correctly"));
180  mycopy.makeUniqueInternal();
181  #endif
182  JSON_ASSERT(internal != mycopy.internal, JSON_TEXT("makeUniqueInternal failed"));
183  return mycopy;
184 }
#define JSON_TEXT(s)
Definition: Strings_Defs.h:30
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
Definition: JSONNode.h:132
#define JSON_ASSERT(condition, msg)
Definition: JSONDebug.h:53

Here is the call graph for this function:

Here is the caller graph for this function:

bool JSONNode::empty ( void  ) const
bool JSONNode::empty ( void  ) const
inline

References JSON_CHECK_INTERNAL.

Referenced by clear().

635  {
637  return internal -> empty();
638 }
bool empty(void) const json_nothrow json_read_priority
Definition: JSONNode.h:635
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25

Here is the caller graph for this function:

const_iterator JSONNode::end ( void  ) const
JSONNode::const_iterator JSONNode::end ( void  ) const
inline

References JSON_ARRAY, JSON_ASSERT, JSON_CHECK_INTERNAL, json_global, JSON_NODE, JSON_TEXT, and type().

Referenced by end(), and rbegin().

872  {
874  JSON_ASSERT(type() == JSON_NODE || type() == JSON_ARRAY, json_global(ERROR_NON_ITERATABLE) + JSON_TEXT("end"));
875  return JSONNode::const_iterator(internal -> end());
876  }
#define JSON_TEXT(s)
Definition: Strings_Defs.h:30
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
#define json_global(NAME)
Definition: JSONGlobals.h:26
unsigned char type(void) const json_nothrow json_read_priority
Definition: JSONNode.h:648
Definition: JSONNode.h:226
const_iterator end(void) const json_nothrow
Definition: JSONNode.h:872
#define JSON_NODE
Definition: JSONDefs.h:26
#define JSON_ASSERT(condition, msg)
Definition: JSONDebug.h:53
#define JSON_ARRAY
Definition: JSONDefs.h:25

Here is the call graph for this function:

Here is the caller graph for this function:

JSONNode::json_iterator JSONNode::end ( void  )
inline

References end(), JSON_ARRAY, JSON_ASSERT, JSON_CHECK_INTERNAL, json_global, JSON_NODE, JSON_TEXT, makeUniqueInternal(), and type().

858  {
860  JSON_ASSERT(type() == JSON_NODE || type() == JSON_ARRAY, json_global(ERROR_NON_ITERATABLE) + JSON_TEXT("end"));
862  return json_iterator(internal -> end());
863  }
#define JSON_TEXT(s)
Definition: Strings_Defs.h:30
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
#define json_global(NAME)
Definition: JSONGlobals.h:26
unsigned char type(void) const json_nothrow json_read_priority
Definition: JSONNode.h:648
const_iterator end(void) const json_nothrow
Definition: JSONNode.h:872
void makeUniqueInternal(void) json_nothrow
Definition: JSONNode.h:844
#define JSON_NODE
Definition: JSONDefs.h:26
#define JSON_ASSERT(condition, msg)
Definition: JSONDebug.h:53
iterator json_iterator
Definition: JSONNode.h:331
#define JSON_ARRAY
Definition: JSONDefs.h:25

Here is the call graph for this function:

json_iterator JSONNode::end ( void  )
JSONNode::reverse_iterator JSONNode::erase ( reverse_iterator  pos)

References CHILDREN, JSON_ARRAY, JSON_ASSERT, JSON_ASSERT_SAFE, JSON_ASSERT_UNIQUE, JSON_CHECK_INTERNAL, json_global, JSON_NODE, and JSON_TEXT.

124  {
126  JSON_ASSERT(type() == JSON_NODE || type() == JSON_ARRAY, json_global(ERROR_NON_ITERATABLE) + JSON_TEXT("erase"));
127  JSON_ASSERT_UNIQUE("erase 2");
128  JSON_ASSERT_SAFE(pos < rend(), JSON_TEXT("erase out of range"), return rend(););
129  JSON_ASSERT_SAFE(pos >= rbegin(), JSON_TEXT("erase out of range"), return rbegin(););
130  deleteJSONNode(*(pos.it));
131  internal -> CHILDREN -> erase(pos.it);
132  return (empty()) ? rend() : pos + 1;
133  }
#define JSON_TEXT(s)
Definition: Strings_Defs.h:30
bool empty(void) const json_nothrow json_read_priority
Definition: JSONNode.h:635
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
static void deleteJSONNode(JSONNode *ptr) json_nothrow json_hot
Definition: JSONNode.cpp:325
#define json_global(NAME)
Definition: JSONGlobals.h:26
unsigned char type(void) const json_nothrow json_read_priority
Definition: JSONNode.h:648
reverse_const_iterator rend(void) const json_nothrow
Definition: JSONNode.h:898
#define JSON_NODE
Definition: JSONDefs.h:26
#define JSON_ASSERT(condition, msg)
Definition: JSONDebug.h:53
reverse_iterator erase(reverse_iterator pos) json_nothrow
Definition: JSONIterators.cpp:124
reverse_const_iterator rbegin(void) const json_nothrow
Definition: JSONNode.h:892
#define JSON_ASSERT_SAFE(condition, msg, code)
Definition: JSONDebug.h:49
#define JSON_ASSERT_UNIQUE(x)
Definition: JSONIterators.cpp:5
#define CHILDREN
Definition: internalJSONNode.h:79
#define JSON_ARRAY
Definition: JSONDefs.h:25
reverse_iterator JSONNode::erase ( reverse_iterator  pos)
JSONNode::reverse_iterator JSONNode::erase ( reverse_iterator  start,
const reverse_iterator end 
)

References CHILDREN, JSON_ARRAY, JSON_ASSERT, JSON_ASSERT_SAFE, JSON_ASSERT_UNIQUE, JSON_CHECK_INTERNAL, json_global, JSON_NODE, and JSON_TEXT.

135  {
136  if (_start == _end) return _start;
138  JSON_ASSERT(type() == JSON_NODE || type() == JSON_ARRAY, json_global(ERROR_NON_ITERATABLE) + JSON_TEXT("erase"));
139  JSON_ASSERT_UNIQUE("erase 4");
140  JSON_ASSERT_SAFE(_start <= rend(), JSON_TEXT("erase out of lo range"), return rend(););
141  JSON_ASSERT_SAFE(_end <= rend(), JSON_TEXT("erase out of hi range"), return rend(););
142  JSON_ASSERT_SAFE(_start >= rbegin(), JSON_TEXT("erase out of lo range"), return rbegin(););
143  JSON_ASSERT_SAFE(_end >= rbegin(), JSON_TEXT("erase out of hi range"), return rbegin(););
144  for (JSONNode ** pos = _start.it; pos > _end.it; --pos){
145  deleteJSONNode(*pos);
146  }
147  const json_index_t num = (json_index_t)(_start.it - _end.it);
148  internal -> CHILDREN -> erase(_end.it + 1, num, _start.it);
149  return (empty()) ? rend() : _start + num;
150  }
#define JSON_TEXT(s)
Definition: Strings_Defs.h:30
bool empty(void) const json_nothrow json_read_priority
Definition: JSONNode.h:635
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
static void deleteJSONNode(JSONNode *ptr) json_nothrow json_hot
Definition: JSONNode.cpp:325
#define json_global(NAME)
Definition: JSONGlobals.h:26
unsigned char type(void) const json_nothrow json_read_priority
Definition: JSONNode.h:648
reverse_const_iterator rend(void) const json_nothrow
Definition: JSONNode.h:898
Definition: JSONNode.h:132
#define JSON_NODE
Definition: JSONDefs.h:26
#define JSON_ASSERT(condition, msg)
Definition: JSONDebug.h:53
reverse_iterator erase(reverse_iterator pos) json_nothrow
Definition: JSONIterators.cpp:124
reverse_const_iterator rbegin(void) const json_nothrow
Definition: JSONNode.h:892
#define JSON_ASSERT_SAFE(condition, msg, code)
Definition: JSONDebug.h:49
#define JSON_ASSERT_UNIQUE(x)
Definition: JSONIterators.cpp:5
unsigned int json_index_t
Definition: JSONDefs.h:109
#define CHILDREN
Definition: internalJSONNode.h:79
#define JSON_ARRAY
Definition: JSONDefs.h:25
reverse_iterator JSONNode::erase ( reverse_iterator  start,
const reverse_iterator end 
)
JSONNode::json_iterator JSONNode::erase ( json_iterator  pos)

References CHILDREN, JSON_ARRAY, JSON_ASSERT, JSON_ASSERT_SAFE, JSON_ASSERT_UNIQUE, JSON_CHECK_INTERNAL, json_global, json_iterator_ptr, JSON_NODE, and JSON_TEXT.

38  {
40  JSON_ASSERT(type() == JSON_NODE || type() == JSON_ARRAY, json_global(ERROR_NON_ITERATABLE) + JSON_TEXT("erase"));
41  JSON_ASSERT_UNIQUE("erase 1");
42  JSON_ASSERT_SAFE(pos < end(), JSON_TEXT("erase out of range"), return end(););
43  JSON_ASSERT_SAFE(pos >= begin(), JSON_TEXT("erase out of range"), return begin(););
45  internal -> CHILDREN -> erase(json_iterator_ptr(pos));
46  return (empty()) ? end() : pos;
47 }
#define JSON_TEXT(s)
Definition: Strings_Defs.h:30
bool empty(void) const json_nothrow json_read_priority
Definition: JSONNode.h:635
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
static void deleteJSONNode(JSONNode *ptr) json_nothrow json_hot
Definition: JSONNode.cpp:325
#define json_global(NAME)
Definition: JSONGlobals.h:26
unsigned char type(void) const json_nothrow json_read_priority
Definition: JSONNode.h:648
const_iterator end(void) const json_nothrow
Definition: JSONNode.h:872
#define JSON_NODE
Definition: JSONDefs.h:26
#define JSON_ASSERT(condition, msg)
Definition: JSONDebug.h:53
reverse_iterator erase(reverse_iterator pos) json_nothrow
Definition: JSONIterators.cpp:124
#define JSON_ASSERT_SAFE(condition, msg, code)
Definition: JSONDebug.h:49
const_iterator begin(void) const json_nothrow
Definition: JSONNode.h:866
#define JSON_ASSERT_UNIQUE(x)
Definition: JSONIterators.cpp:5
#define json_iterator_ptr(iter)
Definition: JSONNode.h:222
#define CHILDREN
Definition: internalJSONNode.h:79
#define JSON_ARRAY
Definition: JSONDefs.h:25
json_iterator JSONNode::erase ( json_iterator  pos)
json_iterator JSONNode::erase ( json_iterator  start,
const json_iterator end 
)
JSONNode::json_iterator JSONNode::erase ( json_iterator  start,
const json_iterator end 
)

References CHILDREN, JSON_ARRAY, JSON_ASSERT, JSON_ASSERT_SAFE, JSON_ASSERT_UNIQUE, JSON_CHECK_INTERNAL, json_global, json_iterator_ptr, JSON_NODE, and JSON_TEXT.

49  {
50  if (_start == _end) return _start;
52  JSON_ASSERT(type() == JSON_NODE || type() == JSON_ARRAY, json_global(ERROR_NON_ITERATABLE) + JSON_TEXT("erase"));
53  JSON_ASSERT_UNIQUE("erase 3");
54  JSON_ASSERT_SAFE(_start <= end(), JSON_TEXT("erase out of lo range"), return end(););
55  JSON_ASSERT_SAFE(_end <= end(), JSON_TEXT("erase out of hi range"), return end(););
56  JSON_ASSERT_SAFE(_start >= begin(), JSON_TEXT("erase out of lo range"), return begin(););
57  JSON_ASSERT_SAFE(_end >= begin(), JSON_TEXT("erase out of hi range"), return begin(););
58  for (JSONNode ** pos = json_iterator_ptr(_start); pos < json_iterator_ptr(_end); ++pos){
59  deleteJSONNode(*pos);
60  }
61 
62  internal -> CHILDREN -> erase(json_iterator_ptr(_start), (json_index_t)(json_iterator_ptr(_end) - json_iterator_ptr(_start)));
63  return (empty()) ? end() : _start;
64 }
#define JSON_TEXT(s)
Definition: Strings_Defs.h:30
bool empty(void) const json_nothrow json_read_priority
Definition: JSONNode.h:635
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
static void deleteJSONNode(JSONNode *ptr) json_nothrow json_hot
Definition: JSONNode.cpp:325
#define json_global(NAME)
Definition: JSONGlobals.h:26
unsigned char type(void) const json_nothrow json_read_priority
Definition: JSONNode.h:648
const_iterator end(void) const json_nothrow
Definition: JSONNode.h:872
Definition: JSONNode.h:132
#define JSON_NODE
Definition: JSONDefs.h:26
#define JSON_ASSERT(condition, msg)
Definition: JSONDebug.h:53
reverse_iterator erase(reverse_iterator pos) json_nothrow
Definition: JSONIterators.cpp:124
#define JSON_ASSERT_SAFE(condition, msg, code)
Definition: JSONDebug.h:49
const_iterator begin(void) const json_nothrow
Definition: JSONNode.h:866
#define JSON_ASSERT_UNIQUE(x)
Definition: JSONIterators.cpp:5
#define json_iterator_ptr(iter)
Definition: JSONNode.h:222
unsigned int json_index_t
Definition: JSONDefs.h:109
#define CHILDREN
Definition: internalJSONNode.h:79
#define JSON_ARRAY
Definition: JSONDefs.h:25
JSONNode::const_iterator JSONNode::find ( const json_string &  name_t) const

References JSON_ASSERT, JSON_CHECK_INTERNAL, json_global, JSON_NODE, and JSON_TEXT.

104  {
106  JSON_ASSERT(type() == JSON_NODE, json_global(ERROR_NON_ITERATABLE) + JSON_TEXT("find"));
107  if (JSONNode ** res = internal -> at(name_t)){
108  return JSONNode::const_iterator(res);
109  }
110  return JSONNode::const_iterator(internal -> end());
111  }
#define JSON_TEXT(s)
Definition: Strings_Defs.h:30
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
#define json_global(NAME)
Definition: JSONGlobals.h:26
unsigned char type(void) const json_nothrow json_read_priority
Definition: JSONNode.h:648
Definition: JSONNode.h:226
const_iterator end(void) const json_nothrow
Definition: JSONNode.h:872
Definition: JSONNode.h:132
#define JSON_NODE
Definition: JSONDefs.h:26
#define JSON_ASSERT(condition, msg)
Definition: JSONDebug.h:53
const_iterator JSONNode::find ( const json_string &  name_t) const
JSONNode::json_iterator JSONNode::find ( const json_string &  name_t)

References JSON_ASSERT, JSON_CHECK_INTERNAL, json_global, JSON_NODE, JSON_TEXT, and ptr_to_json_iterator.

16  {
18  JSON_ASSERT(type() == JSON_NODE, json_global(ERROR_NON_ITERATABLE) + JSON_TEXT("find"));
20  if (JSONNode ** res = internal -> at(name_t)){
21  return ptr_to_json_iterator(res);
22  }
23  return end();
24 }
#define JSON_TEXT(s)
Definition: Strings_Defs.h:30
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
#define json_global(NAME)
Definition: JSONGlobals.h:26
unsigned char type(void) const json_nothrow json_read_priority
Definition: JSONNode.h:648
const_iterator end(void) const json_nothrow
Definition: JSONNode.h:872
Definition: JSONNode.h:132
void makeUniqueInternal(void) json_nothrow
Definition: JSONNode.h:844
#define JSON_NODE
Definition: JSONDefs.h:26
#define JSON_ASSERT(condition, msg)
Definition: JSONDebug.h:53
#define ptr_to_json_iterator(iter)
Definition: JSONNode.h:223
json_iterator JSONNode::find ( const json_string &  name_t)
JSONNode::const_iterator JSONNode::find_nocase ( const json_string &  name_t) const

References JSON_ASSERT, JSON_CHECK_INTERNAL, json_global, JSON_NODE, and JSON_TEXT.

114  {
116  JSON_ASSERT(type() == JSON_NODE, json_global(ERROR_NON_ITERATABLE) + JSON_TEXT("find_nocase"));
117  if (JSONNode ** res = internal -> at_nocase(name_t)){
118  return JSONNode::const_iterator(res);
119  }
120  return JSONNode::const_iterator(internal -> end());
121  }
#define JSON_TEXT(s)
Definition: Strings_Defs.h:30
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
#define json_global(NAME)
Definition: JSONGlobals.h:26
unsigned char type(void) const json_nothrow json_read_priority
Definition: JSONNode.h:648
Definition: JSONNode.h:226
const_iterator end(void) const json_nothrow
Definition: JSONNode.h:872
Definition: JSONNode.h:132
#define JSON_NODE
Definition: JSONDefs.h:26
#define JSON_ASSERT(condition, msg)
Definition: JSONDebug.h:53
const_iterator JSONNode::find_nocase ( const json_string &  name_t) const
json_iterator JSONNode::find_nocase ( const json_string &  name_t)
JSONNode::json_iterator JSONNode::find_nocase ( const json_string &  name_t)

References JSON_ASSERT, JSON_CHECK_INTERNAL, json_global, JSON_NODE, JSON_TEXT, and ptr_to_json_iterator.

27  {
29  JSON_ASSERT(type() == JSON_NODE, json_global(ERROR_NON_ITERATABLE) + JSON_TEXT("find_nocase"));
31  if (JSONNode ** res = internal -> at_nocase(name_t)){
32  return ptr_to_json_iterator(res);
33  }
34  return end();
35  }
#define JSON_TEXT(s)
Definition: Strings_Defs.h:30
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
#define json_global(NAME)
Definition: JSONGlobals.h:26
unsigned char type(void) const json_nothrow json_read_priority
Definition: JSONNode.h:648
const_iterator end(void) const json_nothrow
Definition: JSONNode.h:872
Definition: JSONNode.h:132
void makeUniqueInternal(void) json_nothrow
Definition: JSONNode.h:844
#define JSON_NODE
Definition: JSONDefs.h:26
#define JSON_ASSERT(condition, msg)
Definition: JSONDebug.h:53
#define ptr_to_json_iterator(iter)
Definition: JSONNode.h:223
json_string JSONNode::get_comment ( void  ) const
json_string JSONNode::get_comment ( void  ) const
inline

References internalJSONNode::getcomment(), and JSON_CHECK_INTERNAL.

671  {
673  return internal -> getcomment();
674  }
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25

Here is the call graph for this function:

JSONNode::json_iterator JSONNode::insert ( iterator  pos,
const JSONNode x 
)

References CHILDREN, JSON_ARRAY, JSON_ASSERT, JSON_ASSERT_SAFE, JSON_ASSERT_UNIQUE, JSON_CHECK_INTERNAL, json_global, json_iterator_ptr, JSON_NODE, JSON_TEXT, and x.

69  {
70 #endif
72  JSON_ASSERT(type() == JSON_NODE || type() == JSON_ARRAY, json_global(ERROR_NON_ITERATABLE) + JSON_TEXT("insert"));
73  JSON_ASSERT_UNIQUE("insert 1");
74  if (json_iterator_ptr(pos) >= internal -> CHILDREN -> end()){
75  internal -> push_back(x);
76  return end() - 1;
77  }
78  JSON_ASSERT_SAFE(pos >= begin(), JSON_TEXT("insert out of lo range"), return begin(););
79  #ifdef JSON_LIBRARY
80  internal -> CHILDREN -> insert(json_iterator_ptr(pos), x);
81  #else
82  internal -> CHILDREN -> insert(json_iterator_ptr(pos), newJSONNode(x));
83  #endif
84  return pos;
85 }
iterator insert(iterator pos, const JSONNode &x) json_nothrow
Definition: JSONIterators.cpp:69
#define JSON_TEXT(s)
Definition: Strings_Defs.h:30
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
#define json_global(NAME)
Definition: JSONGlobals.h:26
unsigned char type(void) const json_nothrow json_read_priority
Definition: JSONNode.h:648
const_iterator end(void) const json_nothrow
Definition: JSONNode.h:872
void push_back(const JSONNode &node) json_nothrow
Definition: JSONNode.h:726
#define JSON_NODE
Definition: JSONDefs.h:26
#define JSON_ASSERT(condition, msg)
Definition: JSONDebug.h:53
#define JSON_ASSERT_SAFE(condition, msg, code)
Definition: JSONDebug.h:49
const_iterator begin(void) const json_nothrow
Definition: JSONNode.h:866
#define JSON_ASSERT_UNIQUE(x)
Definition: JSONIterators.cpp:5
#define json_iterator_ptr(iter)
Definition: JSONNode.h:222
static JSON_PRIVATE JSONNode * newJSONNode(const JSONNode &orig JSON_MUTEX_COPY_DECL2) json_hot
Definition: JSONNode.cpp:347
#define CHILDREN
Definition: internalJSONNode.h:79
#define JSON_ARRAY
Definition: JSONDefs.h:25
iterator JSONNode::insert ( iterator  pos,
const JSONNode x 
)
JSONNode::reverse_iterator JSONNode::insert ( reverse_iterator  pos,
const JSONNode x 
)

References CHILDREN, JSON_ARRAY, JSON_ASSERT, JSON_ASSERT_SAFE, JSON_ASSERT_UNIQUE, JSON_CHECK_INTERNAL, json_global, JSON_NODE, JSON_TEXT, and x.

152  {
154  JSON_ASSERT(type() == JSON_NODE || type() == JSON_ARRAY, json_global(ERROR_NON_ITERATABLE) + JSON_TEXT("insert"));
155  JSON_ASSERT_UNIQUE("insert 1");
156  if (pos.it < internal -> CHILDREN -> begin()){
157  internal -> push_front(x);
158  return rend() - 1;
159  }
160  JSON_ASSERT_SAFE(pos >= rbegin(), JSON_TEXT("insert out of range"), return rbegin(););
161  internal -> CHILDREN -> insert(++pos.it, newJSONNode(x), true);
162  return pos;
163  }
iterator insert(iterator pos, const JSONNode &x) json_nothrow
Definition: JSONIterators.cpp:69
#define JSON_TEXT(s)
Definition: Strings_Defs.h:30
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
#define json_global(NAME)
Definition: JSONGlobals.h:26
unsigned char type(void) const json_nothrow json_read_priority
Definition: JSONNode.h:648
reverse_const_iterator rend(void) const json_nothrow
Definition: JSONNode.h:898
internalJSONNode * internal
Definition: JSONNode.h:586
#define JSON_NODE
Definition: JSONDefs.h:26
#define JSON_ASSERT(condition, msg)
Definition: JSONDebug.h:53
reverse_const_iterator rbegin(void) const json_nothrow
Definition: JSONNode.h:892
#define JSON_ASSERT_SAFE(condition, msg, code)
Definition: JSONDebug.h:49
const_iterator begin(void) const json_nothrow
Definition: JSONNode.h:866
#define JSON_ASSERT_UNIQUE(x)
Definition: JSONIterators.cpp:5
static JSON_PRIVATE JSONNode * newJSONNode(const JSONNode &orig JSON_MUTEX_COPY_DECL2) json_hot
Definition: JSONNode.cpp:347
#define CHILDREN
Definition: internalJSONNode.h:79
#define JSON_ARRAY
Definition: JSONDefs.h:25
reverse_iterator JSONNode::insert ( reverse_iterator  pos,
const JSONNode x 
)
iterator JSONNode::insert ( iterator  pos,
const reverse_iterator _start,
const reverse_iterator _end 
)
JSONNode::iterator JSONNode::insert ( iterator  pos,
const reverse_iterator _start,
const reverse_iterator _end 
)
inline
928  {
929  return insertFRR(pos, _start.it, _end.it);
930  }
json_iterator insertFRR(json_iterator pos, JSONNode **const _start, JSONNode **const _end) json_nothrow
Definition: JSONIterators.cpp:181
JSONNode::reverse_iterator JSONNode::insert ( reverse_iterator  pos,
const iterator _start,
const iterator _end 
)
inline
912  {
913  return insertRFF(pos, _start.it, _end.it);
914  }
reverse_iterator insertRFF(reverse_iterator pos, JSONNode **const _start, JSONNode **const _end) json_nothrow
Definition: JSONIterators.cpp:165
reverse_iterator JSONNode::insert ( reverse_iterator  pos,
const iterator _start,
const iterator _end 
)
JSONNode::reverse_iterator JSONNode::insert ( reverse_iterator  pos,
const reverse_iterator _start,
const reverse_iterator _end 
)
inline
920  {
921  return insertRRR(pos, _start.it, _end.it);
922  }
reverse_iterator insertRRR(reverse_iterator pos, JSONNode **const _start, JSONNode **const _end) json_nothrow
Definition: JSONIterators.cpp:197
reverse_iterator JSONNode::insert ( reverse_iterator  pos,
const reverse_iterator _start,
const reverse_iterator _end 
)
JSONNode::iterator JSONNode::insert ( json_iterator  pos,
const const_iterator _start,
const const_iterator _end 
)
inline
904  {
905  return insertFFF(pos, _start.it, _end.it);
906  }
json_iterator insertFFF(json_iterator pos, JSONNode **const _start, JSONNode **const _end) json_nothrow
Definition: JSONIterators.cpp:87
json_iterator JSONNode::insert ( json_iterator  pos,
const const_iterator _start,
const const_iterator _end 
)
JSONNode::reverse_iterator JSONNode::insert ( reverse_iterator  pos,
const const_iterator _start,
const const_iterator _end 
)
inline
908  {
909  return insertRFF(pos, _start.it, _end.it);
910  }
reverse_iterator insertRFF(reverse_iterator pos, JSONNode **const _start, JSONNode **const _end) json_nothrow
Definition: JSONIterators.cpp:165
reverse_iterator JSONNode::insert ( reverse_iterator  pos,
const const_iterator _start,
const const_iterator _end 
)
JSONNode::iterator JSONNode::insert ( json_iterator  pos,
const reverse_const_iterator _start,
const reverse_const_iterator _end 
)
inline
924  {
925  return insertFRR(pos, _start.it, _end.it);
926  }
json_iterator insertFRR(json_iterator pos, JSONNode **const _start, JSONNode **const _end) json_nothrow
Definition: JSONIterators.cpp:181
json_iterator JSONNode::insert ( json_iterator  pos,
const reverse_const_iterator _start,
const reverse_const_iterator _end 
)
reverse_iterator JSONNode::insert ( reverse_iterator  pos,
const reverse_const_iterator _start,
const reverse_const_iterator _end 
)
JSONNode::reverse_iterator JSONNode::insert ( reverse_iterator  pos,
const reverse_const_iterator _start,
const reverse_const_iterator _end 
)
inline
916  {
917  return insertRRR(pos, _start.it, _end.it);
918  }
reverse_iterator insertRRR(reverse_iterator pos, JSONNode **const _start, JSONNode **const _end) json_nothrow
Definition: JSONIterators.cpp:197
JSONNode::json_iterator JSONNode::insert ( json_iterator  pos,
const json_iterator _start,
const json_iterator _end 
)
inline

References json_iterator_ptr.

933  {
934  return insertFFF(pos, json_iterator_ptr(_start), json_iterator_ptr(_end));
935  }
json_iterator insertFFF(json_iterator pos, JSONNode **const _start, JSONNode **const _end) json_nothrow
Definition: JSONIterators.cpp:87
#define json_iterator_ptr(iter)
Definition: JSONNode.h:222
json_iterator JSONNode::insert ( json_iterator  pos,
const json_iterator _start,
const json_iterator _end 
)
json_iterator JSONNode::insertFFF ( json_iterator  pos,
JSONNode **const  _start,
JSONNode **const  _end 
)
JSONNode::json_iterator JSONNode::insertFFF ( json_iterator  pos,
JSONNode **const  _start,
JSONNode **const  _end 
)

References CHILDREN, JSON_ARRAY, JSON_ASSERT, JSON_ASSERT_SAFE, JSON_ASSERT_UNIQUE, JSON_CHECK_INTERNAL, json_global, json_iterator_ptr, JSON_MUTEX_COPY2, JSON_NODE, JSON_TEXT, and json_auto< T >::ptr.

87  {
89  JSON_ASSERT(type() == JSON_NODE || type() == JSON_ARRAY, json_global(ERROR_NON_ITERATABLE) + JSON_TEXT("insertFFF"));
90  JSON_ASSERT_UNIQUE("insertFFF");
91  JSON_ASSERT_SAFE(pos <= end(), JSON_TEXT("insert out of high range"), return end(););
92  JSON_ASSERT_SAFE(pos >= begin(), JSON_TEXT("insert out of low range"), return begin(););
93  const json_index_t num = (json_index_t)(_end - _start);
94  json_auto<JSONNode *> mem(num);
95  JSONNode ** runner = mem.ptr;
96  for (JSONNode ** po = _start; po < _end; ++po){
97  *runner++ = newJSONNode(*(*po) JSON_MUTEX_COPY2);
98  }
99  internal -> CHILDREN -> insert(json_iterator_ptr(pos), mem.ptr, num);
100  return pos;
101 }
iterator insert(iterator pos, const JSONNode &x) json_nothrow
Definition: JSONIterators.cpp:69
#define JSON_TEXT(s)
Definition: Strings_Defs.h:30
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
#define JSON_MUTEX_COPY2
Definition: JSONIterators.cpp:13
#define json_global(NAME)
Definition: JSONGlobals.h:26
Definition: JSONMemory.h:129
unsigned char type(void) const json_nothrow json_read_priority
Definition: JSONNode.h:648
const_iterator end(void) const json_nothrow
Definition: JSONNode.h:872
Definition: JSONNode.h:132
#define JSON_NODE
Definition: JSONDefs.h:26
#define JSON_ASSERT(condition, msg)
Definition: JSONDebug.h:53
#define JSON_ASSERT_SAFE(condition, msg, code)
Definition: JSONDebug.h:49
const_iterator begin(void) const json_nothrow
Definition: JSONNode.h:866
#define JSON_ASSERT_UNIQUE(x)
Definition: JSONIterators.cpp:5
#define json_iterator_ptr(iter)
Definition: JSONNode.h:222
unsigned int json_index_t
Definition: JSONDefs.h:109
static JSON_PRIVATE JSONNode * newJSONNode(const JSONNode &orig JSON_MUTEX_COPY_DECL2) json_hot
Definition: JSONNode.cpp:347
#define CHILDREN
Definition: internalJSONNode.h:79
#define JSON_ARRAY
Definition: JSONDefs.h:25
json_iterator JSONNode::insertFRR ( json_iterator  pos,
JSONNode **const  _start,
JSONNode **const  _end 
)
JSONNode::iterator JSONNode::insertFRR ( json_iterator  pos,
JSONNode **const  _start,
JSONNode **const  _end 
)

References CHILDREN, JSON_ARRAY, JSON_ASSERT, JSON_ASSERT_SAFE, JSON_ASSERT_UNIQUE, JSON_CHECK_INTERNAL, json_global, JSON_MUTEX_COPY2, JSON_NODE, JSON_TEXT, and json_auto< T >::ptr.

181  {
183  JSON_ASSERT(type() == JSON_NODE || type() == JSON_ARRAY, json_global(ERROR_NON_ITERATABLE) + JSON_TEXT("insertFRR"));
184  JSON_ASSERT_UNIQUE("insert FRR");
185  JSON_ASSERT_SAFE(pos <= end(), JSON_TEXT("insert out of range"), return end(););
186  JSON_ASSERT_SAFE(pos >= begin(), JSON_TEXT("insert out of range"), return begin(););
187  const json_index_t num = (json_index_t)(_start - _end);
188  json_auto<JSONNode *> mem(num);
189  JSONNode ** runner = mem.ptr;
190  for (JSONNode ** po = _start; po > _end; --po){
191  *runner++ = newJSONNode(*(*po) JSON_MUTEX_COPY2);
192  }
193  internal -> CHILDREN -> insert(pos.it, mem.ptr, num);
194  return pos;
195  }
iterator insert(iterator pos, const JSONNode &x) json_nothrow
Definition: JSONIterators.cpp:69
#define JSON_TEXT(s)
Definition: Strings_Defs.h:30
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
#define JSON_MUTEX_COPY2
Definition: JSONIterators.cpp:13
#define json_global(NAME)
Definition: JSONGlobals.h:26
Definition: JSONMemory.h:129
unsigned char type(void) const json_nothrow json_read_priority
Definition: JSONNode.h:648
const_iterator end(void) const json_nothrow
Definition: JSONNode.h:872
Definition: JSONNode.h:132
#define JSON_NODE
Definition: JSONDefs.h:26
#define JSON_ASSERT(condition, msg)
Definition: JSONDebug.h:53
#define JSON_ASSERT_SAFE(condition, msg, code)
Definition: JSONDebug.h:49
const_iterator begin(void) const json_nothrow
Definition: JSONNode.h:866
#define JSON_ASSERT_UNIQUE(x)
Definition: JSONIterators.cpp:5
unsigned int json_index_t
Definition: JSONDefs.h:109
static JSON_PRIVATE JSONNode * newJSONNode(const JSONNode &orig JSON_MUTEX_COPY_DECL2) json_hot
Definition: JSONNode.cpp:347
#define CHILDREN
Definition: internalJSONNode.h:79
#define JSON_ARRAY
Definition: JSONDefs.h:25
reverse_iterator JSONNode::insertRFF ( reverse_iterator  pos,
JSONNode **const  _start,
JSONNode **const  _end 
)
JSONNode::reverse_iterator JSONNode::insertRFF ( reverse_iterator  pos,
JSONNode **const  _start,
JSONNode **const  _end 
)

References CHILDREN, JSON_ARRAY, JSON_ASSERT, JSON_ASSERT_SAFE, JSON_ASSERT_UNIQUE, JSON_CHECK_INTERNAL, json_global, JSON_MUTEX_COPY2, JSON_NODE, JSON_TEXT, and json_auto< T >::ptr.

165  {
167  JSON_ASSERT(type() == JSON_NODE || type() == JSON_ARRAY, json_global(ERROR_NON_ITERATABLE) + JSON_TEXT("insertRFF"));
168  JSON_ASSERT_UNIQUE("insert RFF");
169  JSON_ASSERT_SAFE(pos <= rend(), JSON_TEXT("insert out of range"), return rend(););
170  JSON_ASSERT_SAFE(pos >= rbegin(), JSON_TEXT("insert out of range"), return rbegin(););
171  const json_index_t num = (json_index_t)(_end - _start);
172  json_auto<JSONNode *> mem(num);
173  JSONNode ** runner = mem.ptr + num;
174  for (JSONNode ** po = _start; po < _end; ++po){ //fill it backwards
175  *(--runner) = newJSONNode(*(*po) JSON_MUTEX_COPY2);
176  }
177  internal -> CHILDREN -> insert(++pos.it, mem.ptr, num);
178  return pos - num + 1;
179  }
iterator insert(iterator pos, const JSONNode &x) json_nothrow
Definition: JSONIterators.cpp:69
#define JSON_TEXT(s)
Definition: Strings_Defs.h:30
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
#define JSON_MUTEX_COPY2
Definition: JSONIterators.cpp:13
#define json_global(NAME)
Definition: JSONGlobals.h:26
Definition: JSONMemory.h:129
unsigned char type(void) const json_nothrow json_read_priority
Definition: JSONNode.h:648
reverse_const_iterator rend(void) const json_nothrow
Definition: JSONNode.h:898
Definition: JSONNode.h:132
#define JSON_NODE
Definition: JSONDefs.h:26
#define JSON_ASSERT(condition, msg)
Definition: JSONDebug.h:53
reverse_const_iterator rbegin(void) const json_nothrow
Definition: JSONNode.h:892
#define JSON_ASSERT_SAFE(condition, msg, code)
Definition: JSONDebug.h:49
#define JSON_ASSERT_UNIQUE(x)
Definition: JSONIterators.cpp:5
unsigned int json_index_t
Definition: JSONDefs.h:109
static JSON_PRIVATE JSONNode * newJSONNode(const JSONNode &orig JSON_MUTEX_COPY_DECL2) json_hot
Definition: JSONNode.cpp:347
#define CHILDREN
Definition: internalJSONNode.h:79
#define JSON_ARRAY
Definition: JSONDefs.h:25
JSONNode::reverse_iterator JSONNode::insertRRR ( reverse_iterator  pos,
JSONNode **const  _start,
JSONNode **const  _end 
)

References CHILDREN, JSON_ARRAY, JSON_ASSERT, JSON_ASSERT_SAFE, JSON_ASSERT_UNIQUE, JSON_CHECK_INTERNAL, json_global, JSON_MUTEX_COPY2, JSON_NODE, JSON_TEXT, and json_auto< T >::ptr.

197  {
199  JSON_ASSERT(type() == JSON_NODE || type() == JSON_ARRAY, json_global(ERROR_NON_ITERATABLE) + JSON_TEXT("insertRRR"));
200  JSON_ASSERT_UNIQUE("insert RRR");
201  JSON_ASSERT_SAFE(pos <= rend(), JSON_TEXT("insert out of range"), return rend(););
202  JSON_ASSERT_SAFE(pos >= rbegin(), JSON_TEXT("insert out of range"), return rbegin(););
203  const json_index_t num = (json_index_t)(_start - _end);
204  json_auto<JSONNode *> mem(num);
205  JSONNode ** runner = mem.ptr;
206  for (JSONNode ** po = _start; po > _end; --po){
207  *runner++ = newJSONNode(*(*po) JSON_MUTEX_COPY2);
208  }
209  internal -> CHILDREN -> insert(++pos.it, mem.ptr, num);
210  return pos - num + 1;
211  }
iterator insert(iterator pos, const JSONNode &x) json_nothrow
Definition: JSONIterators.cpp:69
#define JSON_TEXT(s)
Definition: Strings_Defs.h:30
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
#define JSON_MUTEX_COPY2
Definition: JSONIterators.cpp:13
#define json_global(NAME)
Definition: JSONGlobals.h:26
Definition: JSONMemory.h:129
unsigned char type(void) const json_nothrow json_read_priority
Definition: JSONNode.h:648
reverse_const_iterator rend(void) const json_nothrow
Definition: JSONNode.h:898
Definition: JSONNode.h:132
#define JSON_NODE
Definition: JSONDefs.h:26
#define JSON_ASSERT(condition, msg)
Definition: JSONDebug.h:53
reverse_const_iterator rbegin(void) const json_nothrow
Definition: JSONNode.h:892
#define JSON_ASSERT_SAFE(condition, msg, code)
Definition: JSONDebug.h:49
#define JSON_ASSERT_UNIQUE(x)
Definition: JSONIterators.cpp:5
unsigned int json_index_t
Definition: JSONDefs.h:109
static JSON_PRIVATE JSONNode * newJSONNode(const JSONNode &orig JSON_MUTEX_COPY_DECL2) json_hot
Definition: JSONNode.cpp:347
#define CHILDREN
Definition: internalJSONNode.h:79
#define JSON_ARRAY
Definition: JSONDefs.h:25
reverse_iterator JSONNode::insertRRR ( reverse_iterator  pos,
JSONNode **const  _start,
JSONNode **const  _end 
)
void JSONNode::makeUniqueInternal ( void  )
void JSONNode::makeUniqueInternal ( void  )
inline

References JSON_CHECK_INTERNAL, and internalJSONNode::makeUnique().

Referenced by begin(), clear(), clear_name(), duplicate(), end(), nullify(), rbegin(), and rend().

844  { //makes internal it's own
846  internal = internal -> makeUnique(); //might return itself or a new one that's exactly the same
847  }
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25

Here is the call graph for this function:

Here is the caller graph for this function:

void JSONNode::merge ( JSONNode other)
void JSONNode::merge ( JSONNode other)

References JSON_ASSERT, JSON_CHECK_INTERNAL, json_nothrow, and JSON_TEXT.

Referenced by merge().

136  {
137 #else
139 #endif
141  #ifdef JSON_REF_COUNT
142  if (internal == other.internal) return;
143  JSON_ASSERT(*this == other, JSON_TEXT("merging two nodes that aren't equal"));
144  if (internal -> refcount < other.internal -> refcount){
145  *this = other;
146  } else {
147  other = *this;
148  }
149  #endif
150 }
#define JSON_TEXT(s)
Definition: Strings_Defs.h:30
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
void merge(JSONNode &other) json_nothrow json_cold
Definition: JSONNode.cpp:136
internalJSONNode * internal
Definition: JSONNode.h:586
Definition: JSONNode.h:132
struct OtherPassFail other
A struct that can be used to catch other (that is, not Blemish, OIS, or SFRplus) pass/fail categories...
#define JSON_ASSERT(condition, msg)
Definition: JSONDebug.h:53
#define json_nothrow
Definition: Unknown_C.h:8

Here is the caller graph for this function:

void JSONNode::merge ( unsigned int  num,
  ... 
)
void JSONNode::merge ( unsigned int  num,
  ... 
)

References JSON_CHECK_INTERNAL, json_nothrow, and merge().

160  {
161 #else
162  void JSONNode::merge(unsigned int, ...) json_nothrow {
163 #endif
165  #ifdef JSON_REF_COUNT
166  va_list args;
167  va_start(args, num);
168  for(unsigned int i = 0; i < num; ++i){
169  merge(va_arg(args, JSONNode*));
170  }
171  va_end(args);
172  #endif
173 }
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
void merge(JSONNode &other) json_nothrow json_cold
Definition: JSONNode.cpp:136
Definition: JSONNode.h:132
#define json_nothrow
Definition: Unknown_C.h:8

Here is the call graph for this function:

void JSONNode::merge ( JSONNode other)
void JSONNode::merge ( JSONNode other)

References JSON_CHECK_INTERNAL.

153  {
155  if (internal == other -> internal) return;
156  *other = *this;
157  }
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
json_string JSONNode::name ( void  ) const
inline

References JSON_CHECK_INTERNAL.

653  {
655  return internal -> name();
656 }
json_string name(void) const json_nothrow json_read_priority
Definition: JSONNode.h:653
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
json_string JSONNode::name ( void  ) const
JSONNode * JSONNode::newJSONNode ( const JSONNode &orig  JSON_MUTEX_COPY_DECL2)
static

References _newJSONNode().

Referenced by internalJSONNode::internalJSONNode(), internalJSONNode::push_back(), and internalJSONNode::push_front().

347  {
348  #ifdef JSON_MUTEX_CALLBACKS
349  if (parentMutex != 0){
350  JSONNode * temp = _newJSONNode(orig);
351  temp -> set_mutex(parentMutex);
352  return temp;
353  }
354  #endif
355  return _newJSONNode(orig);
356 }
JSONNode * _newJSONNode(const JSONNode &orig)
Definition: JSONNode.cpp:337
Definition: JSONNode.h:132

Here is the call graph for this function:

Here is the caller graph for this function:

static JSON_PRIVATE JSONNode* JSONNode::newJSONNode ( const JSONNode &orig  JSON_MUTEX_COPY_DECL2)
static
static JSONNode* JSONNode::newJSONNode ( internalJSONNode internal_t)
static
JSONNode * JSONNode::newJSONNode ( internalJSONNode internal_t)
static

References JSONNode().

358  {
359  #ifdef JSON_MEMORY_POOL
360  return new((JSONNode*)json_node_mempool.allocate()) JSONNode(internal_t);
361  #elif defined(JSON_MEMORY_CALLBACKS)
362  return new(json_malloc<JSONNode>(1)) JSONNode(internal_t);
363  #else
364  return new JSONNode(internal_t);
365  #endif
366 }
Definition: JSONNode.h:132
JSONNode(char mytype=JSON_NODE) json_nothrow json_hot
Definition: JSONNode.h:605

Here is the call graph for this function:

JSONNode * JSONNode::newJSONNode_Shallow ( const JSONNode orig)
static

References JSONNode().

368  {
369  #ifdef JSON_MEMORY_POOL
370  return new((JSONNode*)json_node_mempool.allocate()) JSONNode(true, const_cast<JSONNode &>(orig));
371  #elif defined(JSON_MEMORY_CALLBACKS)
372  return new(json_malloc<JSONNode>(1)) JSONNode(true, const_cast<JSONNode &>(orig));
373  #else
374  return new JSONNode(true, const_cast<JSONNode &>(orig));
375  #endif
376 }
Definition: JSONNode.h:132
JSONNode(char mytype=JSON_NODE) json_nothrow json_hot
Definition: JSONNode.h:605

Here is the call graph for this function:

static JSONNode* JSONNode::newJSONNode_Shallow ( const JSONNode orig)
static
void JSONNode::nullify ( void  )
void JSONNode::nullify ( void  )
inline

References JSON_CHECK_INTERNAL, makeUniqueInternal(), and internalJSONNode::Nullify().

817  {
820  internal -> Nullify();
821 }
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
void makeUniqueInternal(void) json_nothrow
Definition: JSONNode.h:844

Here is the call graph for this function:

const JSONNode& JSONNode::operator[] ( json_index_t  pos) const
const JSONNode& JSONNode::operator[] ( json_index_t  pos) const
const JSONNode& JSONNode::operator[] ( const json_string &  name_t) const
const JSONNode& JSONNode::operator[] ( const json_string &  name_t) const
void JSONNode::preparse ( void  )
void JSONNode::preparse ( void  )
inline

References JSON_CHECK_INTERNAL.

960  {
962  internal -> preparse();
963  }
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
void preparse(void) json_nothrow json_read_priority
Definition: JSONNode.h:960
void JSONNode::push_back ( const JSONNode node)
void JSONNode::push_back ( const JSONNode node)
inline

References JSON_CHECK_INTERNAL, and internalJSONNode::push_back().

Referenced by prepareTestSettings().

726  {
727 #endif
730  internal -> push_back(child);
731 }
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
void makeUniqueInternal(void) json_nothrow
Definition: JSONNode.h:844
void push_back(const JSONNode &node) json_nothrow
Definition: JSONNode.h:726

Here is the call graph for this function:

Here is the caller graph for this function:

JSONNode::reverse_const_iterator JSONNode::rbegin ( void  ) const
inline

References end(), JSON_ARRAY, JSON_ASSERT, JSON_CHECK_INTERNAL, json_global, JSON_NODE, JSON_TEXT, and type().

892  {
894  JSON_ASSERT(type() == JSON_NODE || type() == JSON_ARRAY, json_global(ERROR_NON_ITERATABLE) + JSON_TEXT("rbegin"));
895  return JSONNode::reverse_const_iterator(internal -> end() - 1);
896  }
#define JSON_TEXT(s)
Definition: Strings_Defs.h:30
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
#define json_global(NAME)
Definition: JSONGlobals.h:26
unsigned char type(void) const json_nothrow json_read_priority
Definition: JSONNode.h:648
Definition: JSONNode.h:334
const_iterator end(void) const json_nothrow
Definition: JSONNode.h:872
#define JSON_NODE
Definition: JSONDefs.h:26
#define JSON_ASSERT(condition, msg)
Definition: JSONDebug.h:53
#define JSON_ARRAY
Definition: JSONDefs.h:25

Here is the call graph for this function:

reverse_const_iterator JSONNode::rbegin ( void  ) const
reverse_iterator JSONNode::rbegin ( void  )
JSONNode::reverse_iterator JSONNode::rbegin ( void  )
inline

References end(), JSON_ARRAY, JSON_ASSERT, JSON_CHECK_INTERNAL, json_global, JSON_NODE, JSON_TEXT, makeUniqueInternal(), and type().

878  {
880  JSON_ASSERT(type() == JSON_NODE || type() == JSON_ARRAY, json_global(ERROR_NON_ITERATABLE) + JSON_TEXT("rbegin"));
882  return JSONNode::reverse_iterator(internal -> end() - 1);
883  }
#define JSON_TEXT(s)
Definition: Strings_Defs.h:30
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
Definition: JSONNode.h:387
#define json_global(NAME)
Definition: JSONGlobals.h:26
unsigned char type(void) const json_nothrow json_read_priority
Definition: JSONNode.h:648
const_iterator end(void) const json_nothrow
Definition: JSONNode.h:872
void makeUniqueInternal(void) json_nothrow
Definition: JSONNode.h:844
#define JSON_NODE
Definition: JSONDefs.h:26
#define JSON_ASSERT(condition, msg)
Definition: JSONDebug.h:53
#define JSON_ARRAY
Definition: JSONDefs.h:25

Here is the call graph for this function:

reverse_const_iterator JSONNode::rend ( void  ) const
JSONNode::reverse_const_iterator JSONNode::rend ( void  ) const
inline

References begin(), JSON_ARRAY, JSON_ASSERT, JSON_CHECK_INTERNAL, json_global, JSON_NODE, JSON_TEXT, and type().

898  {
900  JSON_ASSERT(type() == JSON_NODE || type() == JSON_ARRAY, json_global(ERROR_NON_ITERATABLE) + JSON_TEXT("rend"));
901  return JSONNode::reverse_const_iterator(internal -> begin() - 1);
902  }
#define JSON_TEXT(s)
Definition: Strings_Defs.h:30
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
#define json_global(NAME)
Definition: JSONGlobals.h:26
unsigned char type(void) const json_nothrow json_read_priority
Definition: JSONNode.h:648
Definition: JSONNode.h:334
#define JSON_NODE
Definition: JSONDefs.h:26
#define JSON_ASSERT(condition, msg)
Definition: JSONDebug.h:53
const_iterator begin(void) const json_nothrow
Definition: JSONNode.h:866
#define JSON_ARRAY
Definition: JSONDefs.h:25

Here is the call graph for this function:

JSONNode::reverse_iterator JSONNode::rend ( void  )
inline

References begin(), JSON_ARRAY, JSON_ASSERT, JSON_CHECK_INTERNAL, json_global, JSON_NODE, JSON_TEXT, makeUniqueInternal(), and type().

885  {
887  JSON_ASSERT(type() == JSON_NODE || type() == JSON_ARRAY, json_global(ERROR_NON_ITERATABLE) + JSON_TEXT("rend"));
889  return JSONNode::reverse_iterator(internal -> begin() - 1);
890  }
#define JSON_TEXT(s)
Definition: Strings_Defs.h:30
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
Definition: JSONNode.h:387
#define json_global(NAME)
Definition: JSONGlobals.h:26
unsigned char type(void) const json_nothrow json_read_priority
Definition: JSONNode.h:648
void makeUniqueInternal(void) json_nothrow
Definition: JSONNode.h:844
#define JSON_NODE
Definition: JSONDefs.h:26
#define JSON_ASSERT(condition, msg)
Definition: JSONDebug.h:53
const_iterator begin(void) const json_nothrow
Definition: JSONNode.h:866
#define JSON_ARRAY
Definition: JSONDefs.h:25

Here is the call graph for this function:

reverse_iterator JSONNode::rend ( void  )
void JSONNode::reserve ( json_index_t  siz)
inline

References internalJSONNode::reserve().

733  {
735  internal -> reserve(siz);
736 }
void reserve(json_index_t siz) json_nothrow
Definition: JSONNode.h:733
void makeUniqueInternal(void) json_nothrow
Definition: JSONNode.h:844

Here is the call graph for this function:

void JSONNode::reserve ( json_index_t  siz)
void JSONNode::set_binary ( const unsigned char *  bin,
size_t  bytes 
)
void JSONNode::set_binary ( const unsigned char *  bin,
size_t  bytes 
)
inline

References JSON_CHECK_INTERNAL, and JSONBase64::json_encode64().

700  {
702  *this = JSONBase64::json_encode64(bin, bytes);
703  }
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
static json_string json_encode64(const unsigned char *binary, size_t bytes) json_nothrow json_cold
Definition: JSON_Base64.cpp:8

Here is the call graph for this function:

void JSONNode::set_comment ( const json_string &  comment)
inline

References JSON_CHECK_INTERNAL, and internalJSONNode::setcomment().

665  {
668  internal -> setcomment(newname);
669  }
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
void makeUniqueInternal(void) json_nothrow
Definition: JSONNode.h:844

Here is the call graph for this function:

void JSONNode::set_comment ( const json_string &  comment)
void JSONNode::set_name ( const json_string &  newname)
void JSONNode::set_name ( const json_string &  newname)
inline

References JSON_CHECK_INTERNAL, and internalJSONNode::setname().

Referenced by prepareTestSettings().

658  {
661  internal -> setname(newname);
662 }
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
void makeUniqueInternal(void) json_nothrow
Definition: JSONNode.h:844

Here is the call graph for this function:

Here is the caller graph for this function:

json_index_t JSONNode::size ( void  ) const
json_index_t JSONNode::size ( void  ) const
inline

References JSON_CHECK_INTERNAL.

Referenced by BlemishTest::ParseResults().

630  {
632  return internal -> size();
633 }
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
json_index_t size(void) const json_nothrow json_read_priority
Definition: JSONNode.h:630

Here is the caller graph for this function:

void JSONNode::swap ( JSONNode other)
void JSONNode::swap ( JSONNode other)
inline

References JSON_CHECK_INTERNAL.

823  {
825  internalJSONNode * temp = other.internal;
826  other.internal = internal;
827  internal = temp;
829 }
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
internalJSONNode * internal
Definition: JSONNode.h:586
Definition: internalJSONNode.h:88
unsigned char JSONNode::type ( void  ) const
inline

References JSON_CHECK_INTERNAL.

Referenced by as_array(), as_binary(), as_node(), begin(), end(), rbegin(), and rend().

648  {
650  return internal -> type();
651 }
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
unsigned char type(void) const json_nothrow json_read_priority
Definition: JSONNode.h:648

Here is the caller graph for this function:

unsigned char JSONNode::type ( void  ) const
json_string JSONNode::write ( size_t  approxsize = DEFAULT_APPROX_SIZE) const
json_string JSONNode::write ( size_t  approxsize = DEFAULT_APPROX_SIZE) const
inline

References JSON_ARRAY, JSON_ASSERT_SAFE, JSON_CHECK_INTERNAL, json_global, JSON_NODE, JSON_TEXT, internalJSONNode::type(), and internalJSONNode::Write().

939  {
941  JSON_ASSERT_SAFE(type() == JSON_NODE || type() == JSON_ARRAY, JSON_TEXT("Writing a non-writable node"), return json_global(EMPTY_JSON_STRING););
942  json_string result;
943  result.reserve(approxsize);
944  internal -> Write(0xFFFFFFFF, true, result);
945  return result;
946  }
#define JSON_TEXT(s)
Definition: Strings_Defs.h:30
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
#define json_global(NAME)
Definition: JSONGlobals.h:26
unsigned char type(void) const json_nothrow json_read_priority
Definition: JSONNode.h:648
#define JSON_NODE
Definition: JSONDefs.h:26
#define JSON_ASSERT_SAFE(condition, msg, code)
Definition: JSONDebug.h:49
#define JSON_ARRAY
Definition: JSONDefs.h:25

Here is the call graph for this function:

json_string JSONNode::write_formatted ( size_t  approxsize = DEFAULT_APPROX_SIZE_FORMATTED) const
json_string JSONNode::write_formatted ( size_t  approxsize = DEFAULT_APPROX_SIZE_FORMATTED) const
inline

References JSON_ARRAY, JSON_ASSERT_SAFE, JSON_CHECK_INTERNAL, json_global, JSON_NODE, JSON_TEXT, internalJSONNode::type(), and internalJSONNode::Write().

Referenced by prepareTestSettings().

948  {
950  JSON_ASSERT_SAFE(type() == JSON_NODE || type() == JSON_ARRAY, JSON_TEXT("Writing a non-writable node"), return json_global(EMPTY_JSON_STRING););
951  json_string result;
952  result.reserve(approxsize);
953  internal -> Write(0, true, result);
954  return result;
955  }
#define JSON_TEXT(s)
Definition: Strings_Defs.h:30
#define JSON_CHECK_INTERNAL()
Definition: JSONNode.h:25
#define json_global(NAME)
Definition: JSONGlobals.h:26
unsigned char type(void) const json_nothrow json_read_priority
Definition: JSONNode.h:648
#define JSON_NODE
Definition: JSONDefs.h:26
#define JSON_ASSERT_SAFE(condition, msg, code)
Definition: JSONDebug.h:49
#define JSON_ARRAY
Definition: JSONDefs.h:25

Here is the call graph for this function:

Here is the caller graph for this function:

Friends And Related Function Documentation

JSONWorker
friend

Member Data Documentation

internalJSONNode * JSONNode::internal
mutable

Referenced by as_array(), as_node(), and duplicate().

JSONNode & JSONNode::operator=
inline
const JSONNode & JSONNode::operator[]
inline
JSONNode& at (const json_string & name_t) json_throws(std const JSONNode& at (const json_string & name_t) const json_throws(std JSONNode& at_nocase (const json_string & name_t) json_throws(std const JSONNode& at_nocase (const json_string & name_t) const json_throws(std JSONNode& JSONNode::operator[](const json_string &name_t) json_nothrow

The documentation for this class was generated from the following files: