 |
CUGL 1.3
Cornell University Game Library
|
44 #ifndef __CU_JSON_VALUE_H__
45 #define __CU_JSON_VALUE_H__
46 #include <cugl/base/CUBase.h>
47 #include <cJSON/cJSON.h>
103 std::string _stringValue;
110 std::vector<std::shared_ptr<JsonValue>> _children;
113 #pragma mark cJSON Conversions
127 static std::shared_ptr<JsonValue> toJsonValue(
const cJSON* node);
140 static void toJsonValue(
JsonValue* value,
const cJSON* node);
153 static cJSON* toCJSON(
const JsonValue* value);
156 #pragma mark Constructors
194 bool init(
const std::string& value);
205 bool init(
const char* value) {
return init(std::string(value)); }
216 bool init(
bool value);
227 bool init(
long value);
238 bool init(
double value);
309 #pragma mark Static Constructors
320 std::shared_ptr<JsonValue> result = std::make_shared<JsonValue>();
321 return (result->init(
type) ? result :
nullptr);
333 static std::shared_ptr<JsonValue>
alloc(
const std::string& value) {
334 std::shared_ptr<JsonValue> result = std::make_shared<JsonValue>();
335 return (result->init(value) ? result :
nullptr);
347 static std::shared_ptr<JsonValue>
alloc(
const char* value) {
348 std::shared_ptr<JsonValue> result = std::make_shared<JsonValue>();
349 return (result->init(value) ? result :
nullptr);
361 static std::shared_ptr<JsonValue>
alloc(
bool value) {
362 std::shared_ptr<JsonValue> result = std::make_shared<JsonValue>();
363 return (result->init(value) ? result :
nullptr);
375 static std::shared_ptr<JsonValue>
alloc(
long value) {
376 std::shared_ptr<JsonValue> result = std::make_shared<JsonValue>();
377 return (result->init(value) ? result :
nullptr);
389 static std::shared_ptr<JsonValue>
alloc(
double value) {
390 std::shared_ptr<JsonValue> result = std::make_shared<JsonValue>();
391 return (result->init(value) ? result :
nullptr);
402 std::shared_ptr<JsonValue> result = std::make_shared<JsonValue>();
403 return (result->initNull() ? result :
nullptr);
415 std::shared_ptr<JsonValue> result = std::make_shared<JsonValue>();
416 return (result->initArray() ? result :
nullptr);
428 std::shared_ptr<JsonValue> result = std::make_shared<JsonValue>();
429 return (result->initObject() ? result :
nullptr);
449 std::shared_ptr<JsonValue> result = std::make_shared<JsonValue>();
450 return (result->initWithJson(json) ? result :
nullptr);
470 std::shared_ptr<JsonValue> result = std::make_shared<JsonValue>();
471 return (result->initWithJson(json) ? result :
nullptr);
541 #pragma mark Value Access
552 const std::string
asString(
const std::string& defaultValue)
const {
553 return asString(defaultValue.c_str());
566 const std::string
asString(
const char* defaultValue=
"")
const;
578 float asFloat(
float defaultValue=0.0f)
const;
590 double asDouble(
double defaultValue=0.0)
const;
602 long asLong(
long defaultValue=0L)
const;
614 int asInt(
int defaultValue=0)
const;
627 bool asBool(
bool defaultValue=
false)
const;
640 std::vector<std::string>
asStringArray(
const std::string& defaultValue)
const;
668 std::vector<float>
asFloatArray(
float defaultValue=0.0f)
const;
681 std::vector<double>
asDoubleArray(
double defaultValue=0.0)
const;
694 std::vector<long>
asLongArray(
long defaultValue=0L)
const;
707 std::vector<int>
asIntArray(
int defaultValue=0)
const;
720 std::vector<bool>
asBoolArray (
bool defaultValue=
false);
724 #pragma mark Value Modification
733 void set(
const std::string& value);
743 void set(
const char* value) {
744 set(std::string(value));
755 void set(
long value);
765 void set(
double value);
775 void set(
bool value);
787 #pragma mark Child Access
796 const std::string&
key()
const;
825 const int index()
const;
832 size_t size()
const {
return _children.size(); }
843 bool has(
const std::string& name)
const;
854 bool has(
const char* name)
const {
855 return has(std::string(name));
868 std::shared_ptr<JsonValue>
get(
int index);
880 const std::shared_ptr<JsonValue>
get(
int index)
const;
894 std::shared_ptr<JsonValue>
get(
const std::string& name);
908 const std::shared_ptr<JsonValue>
get(
const std::string& name)
const;
922 std::shared_ptr<JsonValue>
get(
const char* name) {
923 return get(std::string(name));
938 const std::shared_ptr<JsonValue>
get(
const char* name)
const {
939 return get(std::string(name));
944 #pragma mark Child Values
959 const std::string
getString (
const std::string&
key,
const std::string& defaultValue)
const;
975 const std::string
getString (
const char*
key,
const char* defaultValue=
"")
const {
976 return getString(std::string(
key),std::string(defaultValue));
993 const std::string
getString (
const std::string&
key,
const char* defaultValue=
"")
const {
1011 const std::string
getString (
const char*
key,
const std::string& defaultValue)
const {
1029 float getFloat(
const std::string&
key,
float defaultValue=0.0f)
const;
1063 double getDouble(
const std::string&
key,
double defaultValue=0.0)
const;
1097 long getLong(
const std::string&
key,
long defaultValue=0L)
const;
1114 return getLong(std::string(
key),defaultValue);
1131 int getInt(
const std::string&
key,
int defaultValue=0)
const;
1148 return getInt(std::string(
key),defaultValue);
1165 bool getBool(
const std::string&
key,
bool defaultValue=
false)
const;
1182 return getBool(std::string(
key),defaultValue);
1186 #pragma mark Child Deletion
1213 std::shared_ptr<JsonValue>
removeChild(
const std::string& name);
1232 #pragma mark Child Addition
1247 void appendChild(
const std::shared_ptr<JsonValue>& child);
1265 void appendChild(
const std::string&
key,
const std::shared_ptr<JsonValue>& child);
1303 void insertChild(
unsigned int index,
const std::shared_ptr<JsonValue>& child);
1323 void insertChild(
unsigned int index,
const std::string&
key,
const std::shared_ptr<JsonValue>& child);
2145 #pragma mark Encoding
2161 std::string
toString(
bool format=
true)
const;
void set(const std::string &value)
void appendValue(bool value)
Definition: CUJsonValue.h:1357
void appendArray(const char *key)
Definition: CUJsonValue.h:1993
void setKey(const char *key)
Definition: CUJsonValue.h:816
double asDouble(double defaultValue=0.0) const
void appendValue(long value)
Definition: CUJsonValue.h:1459
static std::shared_ptr< JsonValue > allocWithJson(const char *json)
Definition: CUJsonValue.h:469
static std::shared_ptr< JsonValue > allocWithJson(const std::string &json)
Definition: CUJsonValue.h:448
void appendChild(const char *key, const std::shared_ptr< JsonValue > &child)
Definition: CUJsonValue.h:1283
const std::string getString(const std::string &key, const char *defaultValue="") const
Definition: CUJsonValue.h:993
const std::shared_ptr< JsonValue > get(const char *name) const
Definition: CUJsonValue.h:938
void insertValue(unsigned int index, bool value)
Definition: CUJsonValue.h:1407
void insertValue(unsigned int index, const char *key, bool value)
Definition: CUJsonValue.h:1445
float asFloat(float defaultValue=0.0f) const
void appendValue(const std::string &key, bool value)
Definition: CUJsonValue.h:1374
std::vector< long > asLongArray(long defaultValue=0L) const
void insertChild(unsigned int index, const char *key, const std::shared_ptr< JsonValue > &child)
Definition: CUJsonValue.h:1343
void appendObject(const char *key)
Definition: CUJsonValue.h:2088
bool isNull() const
Definition: CUJsonValue.h:489
void set(const char *value)
Definition: CUJsonValue.h:743
void appendNull(const char *key)
Definition: CUJsonValue.h:1898
size_t size() const
Definition: CUJsonValue.h:832
bool initWithJson(const std::string &json)
Definition: CUJsonValue.h:285
bool isNumber() const
Definition: CUJsonValue.h:496
void insertArray(unsigned int index, const char *key)
Definition: CUJsonValue.h:2044
int asInt(int defaultValue=0) const
Type type() const
Definition: CUJsonValue.h:482
void appendArray(const std::string &key)
Definition: CUJsonValue.h:1977
double getDouble(const std::string &key, double defaultValue=0.0) const
void insertObject(unsigned int index, const std::string &key)
Definition: CUJsonValue.h:2121
bool isBool() const
Definition: CUJsonValue.h:503
void insertNull(unsigned int index)
Definition: CUJsonValue.h:1913
void insertNull(unsigned int index, const std::string &key)
Definition: CUJsonValue.h:1931
bool isObject() const
Definition: CUJsonValue.h:537
void insertValue(unsigned int index, const std::string &key, const char *value)
Definition: CUJsonValue.h:1815
void setKey(const std::string &key)
float getFloat(const std::string &key, float defaultValue=0.0f) const
double getDouble(const char *key, double defaultValue=0.0) const
Definition: CUJsonValue.h:1079
static std::shared_ptr< JsonValue > alloc(bool value)
Definition: CUJsonValue.h:361
void insertValue(unsigned int index, const char *key, const std::string &value)
Definition: CUJsonValue.h:1834
void insertValue(unsigned int index, const std::string &key, bool value)
Definition: CUJsonValue.h:1426
void appendValue(const char *key, const std::string &value)
Definition: CUJsonValue.h:1728
void insertArray(unsigned int index, const std::string &key)
Definition: CUJsonValue.h:2026
bool initArray()
Definition: CUJsonValue.h:257
void insertValue(unsigned int index, const std::string &key, double value)
Definition: CUJsonValue.h:1630
void insertValue(unsigned int index, const char *key, const char *value)
Definition: CUJsonValue.h:1853
std::shared_ptr< JsonValue > get(int index)
bool isArray() const
Definition: CUJsonValue.h:527
long getLong(const char *key, long defaultValue=0L) const
Definition: CUJsonValue.h:1113
void insertValue(unsigned int index, double value)
Definition: CUJsonValue.h:1611
bool getBool(const std::string &key, bool defaultValue=false) const
void appendValue(const char *key, const char *value)
Definition: CUJsonValue.h:1745
static std::shared_ptr< JsonValue > alloc(long value)
Definition: CUJsonValue.h:375
void appendChild(const std::shared_ptr< JsonValue > &child)
void insertValue(unsigned int index, const std::string &key, long value)
Definition: CUJsonValue.h:1528
std::string toString(bool format=true) const
void appendValue(const char *key, bool value)
Definition: CUJsonValue.h:1391
std::vector< std::string > asStringArray(const char *defaultValue="") const
Definition: CUJsonValue.h:653
void insertValue(unsigned int index, const char *value)
Definition: CUJsonValue.h:1777
bool isString() const
Definition: CUJsonValue.h:510
Type
Definition: CUJsonValue.h:78
void appendObject(const std::string &key)
Definition: CUJsonValue.h:2072
std::shared_ptr< JsonValue > get(const char *name)
Definition: CUJsonValue.h:922
static std::shared_ptr< JsonValue > allocNull()
Definition: CUJsonValue.h:401
float getFloat(const char *key, float defaultValue=0.0f) const
Definition: CUJsonValue.h:1045
const std::string asString(const std::string &defaultValue) const
Definition: CUJsonValue.h:552
int getInt(const char *key, int defaultValue=0) const
Definition: CUJsonValue.h:1147
void appendValue(const char *value)
Definition: CUJsonValue.h:1677
void insertObject(unsigned int index)
Definition: CUJsonValue.h:2103
static std::shared_ptr< JsonValue > alloc(double value)
Definition: CUJsonValue.h:389
std::vector< bool > asBoolArray(bool defaultValue=false)
std::vector< float > asFloatArray(float defaultValue=0.0f) const
void insertValue(unsigned int index, const char *key, double value)
Definition: CUJsonValue.h:1649
bool asBool(bool defaultValue=false) const
long asLong(long defaultValue=0L) const
void appendValue(const char *key, double value)
Definition: CUJsonValue.h:1595
std::vector< int > asIntArray(int defaultValue=0) const
void appendValue(const std::string &value)
Definition: CUJsonValue.h:1663
void insertNull(unsigned int index, const char *key)
Definition: CUJsonValue.h:1949
std::vector< std::string > asStringArray(const std::string &defaultValue) const
bool getBool(const char *key, bool defaultValue=false) const
Definition: CUJsonValue.h:1181
void appendValue(const std::string &key, long value)
Definition: CUJsonValue.h:1476
void insertChild(unsigned int index, const std::shared_ptr< JsonValue > &child)
const std::string getString(const std::string &key, const std::string &defaultValue) const
void insertValue(unsigned int index, const char *key, long value)
Definition: CUJsonValue.h:1547
void insertObject(unsigned int index, const char *key)
Definition: CUJsonValue.h:2139
const std::string getString(const char *key, const char *defaultValue="") const
Definition: CUJsonValue.h:975
bool initObject()
Definition: CUJsonValue.h:267
void appendValue(const std::string &key, const std::string &value)
Definition: CUJsonValue.h:1694
void appendArray()
Definition: CUJsonValue.h:1961
int getInt(const std::string &key, int defaultValue=0) const
bool has(const char *name) const
Definition: CUJsonValue.h:854
void insertValue(unsigned int index, const std::string &key, const std::string &value)
Definition: CUJsonValue.h:1796
static std::shared_ptr< JsonValue > alloc(Type type)
Definition: CUJsonValue.h:319
std::shared_ptr< JsonValue > removeChild(const char *name)
Definition: CUJsonValue.h:1227
void insertValue(unsigned int index, const std::string &value)
Definition: CUJsonValue.h:1761
bool has(const std::string &name) const
long getLong(const std::string &key, long defaultValue=0L) const
void appendValue(const char *key, long value)
Definition: CUJsonValue.h:1493
const std::string getString(const char *key, const std::string &defaultValue) const
Definition: CUJsonValue.h:1011
Definition: CUJsonValue.h:69
std::shared_ptr< JsonValue > removeChild(int index)
void appendObject()
Definition: CUJsonValue.h:2056
void insertValue(unsigned int index, long value)
Definition: CUJsonValue.h:1509
void appendNull(const std::string &key)
Definition: CUJsonValue.h:1882
static std::shared_ptr< JsonValue > allocArray()
Definition: CUJsonValue.h:414
const std::string & key() const
static std::shared_ptr< JsonValue > allocObject()
Definition: CUJsonValue.h:427
bool init(const char *value)
Definition: CUJsonValue.h:205
void appendValue(const std::string &key, const char *value)
Definition: CUJsonValue.h:1711
void appendNull()
Definition: CUJsonValue.h:1866
std::vector< double > asDoubleArray(double defaultValue=0.0) const
bool initNull()
Definition: CUJsonValue.h:247
static std::shared_ptr< JsonValue > alloc(const char *value)
Definition: CUJsonValue.h:347
void appendValue(const std::string &key, double value)
Definition: CUJsonValue.h:1578
void appendValue(double value)
Definition: CUJsonValue.h:1561
void insertArray(unsigned int index)
Definition: CUJsonValue.h:2008
static std::shared_ptr< JsonValue > alloc(const std::string &value)
Definition: CUJsonValue.h:333