44 #ifndef __CU_JSON_VALUE_H__
45 #define __CU_JSON_VALUE_H__
46 #include <cJSON/cJSON.h>
102 std::string _stringValue;
109 std::vector<std::shared_ptr<JsonValue>> _children;
112 #pragma mark cJSON Conversions
126 static std::shared_ptr<JsonValue> toJsonValue(
const cJSON* node);
139 static void toJsonValue(
JsonValue* value,
const cJSON* node);
152 static cJSON* toCJSON(
const JsonValue* value);
155 #pragma mark Constructors
193 bool init(
const std::string& value);
204 bool init(
const char* value) {
return init(std::string(value)); }
215 bool init(
bool value);
226 bool init(
long value);
237 bool init(
double value);
308 #pragma mark Static Constructors
319 std::shared_ptr<JsonValue> result = std::make_shared<JsonValue>();
320 return (result->init(type) ? result :
nullptr);
332 static std::shared_ptr<JsonValue>
alloc(
const std::string& value) {
333 std::shared_ptr<JsonValue> result = std::make_shared<JsonValue>();
334 return (result->init(value) ? result :
nullptr);
346 static std::shared_ptr<JsonValue>
alloc(
const char* value) {
347 std::shared_ptr<JsonValue> result = std::make_shared<JsonValue>();
348 return (result->init(value) ? result :
nullptr);
360 static std::shared_ptr<JsonValue>
alloc(
bool value) {
361 std::shared_ptr<JsonValue> result = std::make_shared<JsonValue>();
362 return (result->init(value) ? result :
nullptr);
374 static std::shared_ptr<JsonValue>
alloc(
long value) {
375 std::shared_ptr<JsonValue> result = std::make_shared<JsonValue>();
376 return (result->init(value) ? result :
nullptr);
388 static std::shared_ptr<JsonValue>
alloc(
double value) {
389 std::shared_ptr<JsonValue> result = std::make_shared<JsonValue>();
390 return (result->init(value) ? result :
nullptr);
401 std::shared_ptr<JsonValue> result = std::make_shared<JsonValue>();
402 return (result->initNull() ? result :
nullptr);
414 std::shared_ptr<JsonValue> result = std::make_shared<JsonValue>();
415 return (result->initArray() ? result :
nullptr);
427 std::shared_ptr<JsonValue> result = std::make_shared<JsonValue>();
428 return (result->initObject() ? result :
nullptr);
448 std::shared_ptr<JsonValue> result = std::make_shared<JsonValue>();
449 return (result->initWithJson(json) ? result :
nullptr);
469 std::shared_ptr<JsonValue> result = std::make_shared<JsonValue>();
470 return (result->initWithJson(json) ? result :
nullptr);
540 #pragma mark Value Access
551 const std::string
asString(
const std::string& defaultValue)
const {
552 return asString(defaultValue.c_str());
565 const std::string
asString(
const char* defaultValue=
"")
const;
577 float asFloat(
float defaultValue=0.0f)
const;
589 double asDouble(
double defaultValue=0.0)
const;
601 long asLong(
long defaultValue=0
L)
const;
613 int asInt(
int defaultValue=0)
const;
626 bool asBool(
bool defaultValue=
false)
const;
639 std::vector<std::string>
asStringArray(
const std::string& defaultValue)
const;
667 std::vector<float>
asFloatArray(
float defaultValue=0.0f)
const;
680 std::vector<double>
asDoubleArray(
double defaultValue=0.0)
const;
693 std::vector<long>
asLongArray(
long defaultValue=0
L)
const;
706 std::vector<int>
asIntArray(
int defaultValue=0)
const;
719 std::vector<bool>
asBoolArray (
bool defaultValue=
false);
723 #pragma mark Value Modification
732 void set(
const std::string& value);
742 void set(
const char* value) {
743 set(std::string(value));
754 void set(
long value);
764 void set(
double value);
774 void set(
bool value);
786 #pragma mark Child Access
795 const std::string&
key()
const;
824 const int index()
const;
831 size_t size()
const {
return _children.size(); }
842 bool has(
const std::string& name)
const;
853 bool has(
const char* name)
const {
854 return has(std::string(name));
867 std::shared_ptr<JsonValue>
get(
int index);
879 const std::shared_ptr<JsonValue>
get(
int index)
const;
893 std::shared_ptr<JsonValue>
get(
const std::string& name);
907 const std::shared_ptr<JsonValue>
get(
const std::string& name)
const;
921 std::shared_ptr<JsonValue>
get(
const char* name) {
922 return get(std::string(name));
937 const std::shared_ptr<JsonValue>
get(
const char* name)
const {
938 return get(std::string(name));
943 #pragma mark Child Values
957 const std::string
getString (
const std::string&
key,
const std::string& defaultValue)
const;
972 const std::string
getString (
const char*
key,
const char* defaultValue=
"")
const {
973 return getString(std::string(key),std::string(defaultValue));
989 const std::string
getString (
const std::string&
key,
const char* defaultValue=
"")
const {
990 return getString(key,std::string(defaultValue));
1006 const std::string
getString (
const char*
key,
const std::string& defaultValue)
const {
1007 return getString(std::string(key),defaultValue);
1023 float getFloat(
const std::string&
key,
float defaultValue=0.0f)
const;
1039 return getFloat(std::string(key),defaultValue);
1055 double getDouble(
const std::string&
key,
double defaultValue=0.0)
const;
1071 return getDouble(std::string(key),defaultValue);
1087 long getLong(
const std::string&
key,
long defaultValue=0
L)
const;
1103 return getLong(std::string(key),defaultValue);
1119 int getInt(
const std::string&
key,
int defaultValue=0)
const;
1135 return getInt(std::string(key),defaultValue);
1151 bool getBool(
const std::string&
key,
bool defaultValue=
false)
const;
1167 return getBool(std::string(key),defaultValue);
1171 #pragma mark Child Deletion
1198 std::shared_ptr<JsonValue>
removeChild(
const std::string& name);
1217 #pragma mark Child Addition
1232 void appendChild(
const std::shared_ptr<JsonValue>& child);
1250 void appendChild(
const std::string&
key,
const std::shared_ptr<JsonValue>& child);
1288 void insertChild(
unsigned int index,
const std::shared_ptr<JsonValue>& child);
1308 void insertChild(
unsigned int index,
const std::string&
key,
const std::shared_ptr<JsonValue>& child);
2130 #pragma mark Encoding
2146 std::string
toString(
bool format=
true)
const;
void insertNull(unsigned int index)
Definition: CUJsonValue.h:1898
bool getBool(const std::string &key, bool defaultValue=false) const
void insertValue(unsigned int index, const std::string &key, long value)
Definition: CUJsonValue.h:1513
bool has(const std::string &name) const
const std::string getString(const std::string &key, const char *defaultValue="") const
Definition: CUJsonValue.h:989
int getInt(const char *key, int defaultValue=0) const
Definition: CUJsonValue.h:1134
void appendValue(const std::string &key, const std::string &value)
Definition: CUJsonValue.h:1679
static std::shared_ptr< JsonValue > alloc(const char *value)
Definition: CUJsonValue.h:346
void appendObject(const std::string &key)
Definition: CUJsonValue.h:2057
void insertValue(unsigned int index, const std::string &key, const char *value)
Definition: CUJsonValue.h:1800
static std::shared_ptr< JsonValue > allocArray()
Definition: CUJsonValue.h:413
void appendArray(const char *key)
Definition: CUJsonValue.h:1978
static std::shared_ptr< JsonValue > allocNull()
Definition: CUJsonValue.h:400
void insertObject(unsigned int index, const std::string &key)
Definition: CUJsonValue.h:2106
static std::shared_ptr< JsonValue > alloc(const std::string &value)
Definition: CUJsonValue.h:332
void appendValue(const std::string &key, bool value)
Definition: CUJsonValue.h:1359
static std::shared_ptr< JsonValue > alloc(bool value)
Definition: CUJsonValue.h:360
void insertValue(unsigned int index, const std::string &key, const std::string &value)
Definition: CUJsonValue.h:1781
void insertValue(unsigned int index, const std::string &key, bool value)
Definition: CUJsonValue.h:1411
float getFloat(const char *key, float defaultValue=0.0f) const
Definition: CUJsonValue.h:1038
static std::shared_ptr< JsonValue > alloc(Type type)
Definition: CUJsonValue.h:318
bool asBool(bool defaultValue=false) const
bool initArray()
Definition: CUJsonValue.h:256
void appendValue(const char *value)
Definition: CUJsonValue.h:1662
bool isNumber() const
Definition: CUJsonValue.h:495
static std::shared_ptr< JsonValue > alloc(double value)
Definition: CUJsonValue.h:388
std::string toString(bool format=true) const
void insertValue(unsigned int index, const std::string &key, double value)
Definition: CUJsonValue.h:1615
long getLong(const std::string &key, long defaultValue=0L) const
void appendValue(const char *key, double value)
Definition: CUJsonValue.h:1580
void appendArray(const std::string &key)
Definition: CUJsonValue.h:1962
void setKey(const char *key)
Definition: CUJsonValue.h:815
void insertValue(unsigned int index, const char *key, double value)
Definition: CUJsonValue.h:1634
std::vector< float > asFloatArray(float defaultValue=0.0f) const
const std::string & key() const
void appendNull(const std::string &key)
Definition: CUJsonValue.h:1867
bool init(const char *value)
Definition: CUJsonValue.h:204
bool initObject()
Definition: CUJsonValue.h:266
void appendNull(const char *key)
Definition: CUJsonValue.h:1883
void insertValue(unsigned int index, const char *key, bool value)
Definition: CUJsonValue.h:1430
std::vector< long > asLongArray(long defaultValue=0L) const
void appendValue(long value)
Definition: CUJsonValue.h:1444
bool isString() const
Definition: CUJsonValue.h:509
void set(const std::string &value)
void insertValue(unsigned int index, bool value)
Definition: CUJsonValue.h:1392
static std::shared_ptr< JsonValue > allocObject()
Definition: CUJsonValue.h:426
void appendValue(const std::string &key, double value)
Definition: CUJsonValue.h:1563
int getInt(const std::string &key, int defaultValue=0) const
bool isArray() const
Definition: CUJsonValue.h:526
long asLong(long defaultValue=0L) const
void appendChild(const std::shared_ptr< JsonValue > &child)
std::vector< bool > asBoolArray(bool defaultValue=false)
void insertValue(unsigned int index, const char *key, const std::string &value)
Definition: CUJsonValue.h:1819
static std::shared_ptr< JsonValue > alloc(long value)
Definition: CUJsonValue.h:374
void insertValue(unsigned int index, const char *key, const char *value)
Definition: CUJsonValue.h:1838
const std::string getString(const std::string &key, const std::string &defaultValue) const
Definition: CUJsonValue.h:68
void insertObject(unsigned int index)
Definition: CUJsonValue.h:2088
void insertValue(unsigned int index, const std::string &value)
Definition: CUJsonValue.h:1746
int asInt(int defaultValue=0) const
size_t size() const
Definition: CUJsonValue.h:831
void appendValue(const char *key, bool value)
Definition: CUJsonValue.h:1376
void appendArray()
Definition: CUJsonValue.h:1946
void appendValue(const std::string &key, long value)
Definition: CUJsonValue.h:1461
bool has(const char *name) const
Definition: CUJsonValue.h:853
bool isBool() const
Definition: CUJsonValue.h:502
void appendValue(const std::string &value)
Definition: CUJsonValue.h:1648
void appendObject()
Definition: CUJsonValue.h:2041
void insertNull(unsigned int index, const std::string &key)
Definition: CUJsonValue.h:1916
const std::string getString(const char *key, const std::string &defaultValue) const
Definition: CUJsonValue.h:1006
static std::shared_ptr< JsonValue > allocWithJson(const std::string &json)
Definition: CUJsonValue.h:447
const std::string asString(const std::string &defaultValue) const
Definition: CUJsonValue.h:551
void insertChild(unsigned int index, const std::shared_ptr< JsonValue > &child)
void set(const char *value)
Definition: CUJsonValue.h:742
Type
Definition: CUJsonValue.h:77
std::shared_ptr< JsonValue > removeChild(const char *name)
Definition: CUJsonValue.h:1212
void appendNull()
Definition: CUJsonValue.h:1851
void setKey(const std::string &key)
std::vector< double > asDoubleArray(double defaultValue=0.0) const
double getDouble(const char *key, double defaultValue=0.0) const
Definition: CUJsonValue.h:1070
std::vector< int > asIntArray(int defaultValue=0) const
void insertValue(unsigned int index, double value)
Definition: CUJsonValue.h:1596
std::vector< std::string > asStringArray(const std::string &defaultValue) const
void appendValue(bool value)
Definition: CUJsonValue.h:1342
void appendValue(const char *key, long value)
Definition: CUJsonValue.h:1478
std::vector< std::string > asStringArray(const char *defaultValue="") const
Definition: CUJsonValue.h:652
static std::shared_ptr< JsonValue > allocWithJson(const char *json)
Definition: CUJsonValue.h:468
float getFloat(const std::string &key, float defaultValue=0.0f) const
void appendValue(double value)
Definition: CUJsonValue.h:1546
void insertValue(unsigned int index, const char *value)
Definition: CUJsonValue.h:1762
void appendValue(const std::string &key, const char *value)
Definition: CUJsonValue.h:1696
bool getBool(const char *key, bool defaultValue=false) const
Definition: CUJsonValue.h:1166
void insertNull(unsigned int index, const char *key)
Definition: CUJsonValue.h:1934
bool initNull()
Definition: CUJsonValue.h:246
Definition: CUAnimationNode.h:52
const std::string getString(const char *key, const char *defaultValue="") const
Definition: CUJsonValue.h:972
void insertArray(unsigned int index)
Definition: CUJsonValue.h:1993
void insertChild(unsigned int index, const char *key, const std::shared_ptr< JsonValue > &child)
Definition: CUJsonValue.h:1328
long getLong(const char *key, long defaultValue=0L) const
Definition: CUJsonValue.h:1102
Type type() const
Definition: CUJsonValue.h:481
double asDouble(double defaultValue=0.0) const
void appendValue(const char *key, const std::string &value)
Definition: CUJsonValue.h:1713
std::shared_ptr< JsonValue > removeChild(int index)
bool isObject() const
Definition: CUJsonValue.h:536
void appendValue(const char *key, const char *value)
Definition: CUJsonValue.h:1730
void insertArray(unsigned int index, const std::string &key)
Definition: CUJsonValue.h:2011
bool isNull() const
Definition: CUJsonValue.h:488
void insertValue(unsigned int index, long value)
Definition: CUJsonValue.h:1494
void insertValue(unsigned int index, const char *key, long value)
Definition: CUJsonValue.h:1532
double getDouble(const std::string &key, double defaultValue=0.0) const
bool initWithJson(const std::string &json)
Definition: CUJsonValue.h:284
void appendChild(const char *key, const std::shared_ptr< JsonValue > &child)
Definition: CUJsonValue.h:1268
float asFloat(float defaultValue=0.0f) const
void insertObject(unsigned int index, const char *key)
Definition: CUJsonValue.h:2124
void appendObject(const char *key)
Definition: CUJsonValue.h:2073
void insertArray(unsigned int index, const char *key)
Definition: CUJsonValue.h:2029