CUGL 1.3
Cornell University Game Library
CUJsonValue.h
1 //
2 // CUJsonValue.h
3 // Cornell University Game Library (CUGL)
4 //
5 // This module a modern C++ alternative to the cJSON interface for reading
6 // JSON files. In particular, this gives us better type-checking and memory
7 // management. With that said, it still uses cJSON as the underlying parsing
8 // engine.
9 //
10 // This class uses our standard shared-pointer architecture.
11 //
12 // 1. The constructor does not perform any initialization; it just sets all
13 // attributes to their defaults.
14 //
15 // 2. All initialization takes place via init methods, which can fail if an
16 // object is initialized more than once.
17 //
18 // 3. All allocation takes place via static constructors which return a shared
19 // pointer.
20 //
21 //
22 // CUGL MIT License:
23 // This software is provided 'as-is', without any express or implied
24 // warranty. In no event will the authors be held liable for any damages
25 // arising from the use of this software.
26 //
27 // Permission is granted to anyone to use this software for any purpose,
28 // including commercial applications, and to alter it and redistribute it
29 // freely, subject to the following restrictions:
30 //
31 // 1. The origin of this software must not be misrepresented; you must not
32 // claim that you wrote the original software. If you use this software
33 // in a product, an acknowledgment in the product documentation would be
34 // appreciated but is not required.
35 //
36 // 2. Altered source versions must be plainly marked as such, and must not
37 // be misrepresented as being the original software.
38 //
39 // 3. This notice may not be removed or altered from any source distribution.
40 //
41 // Author: Walker White
42 // Version: 11/28/16
43 //
44 #ifndef __CU_JSON_VALUE_H__
45 #define __CU_JSON_VALUE_H__
46 #include <cugl/base/CUBase.h>
47 #include <cJSON/cJSON.h>
48 #include <vector>
49 #include <string>
50 
51 namespace cugl {
52 
69 class JsonValue {
70 public:
78  enum class Type : int {
80  NullType = 0,
82  BoolType = 1,
84  NumberType = 2,
86  StringType = 3,
88  ArrayType = 4,
90  ObjectType = 5
91  };
92 
93 private:
95  Type _type;
96 
98  JsonValue* _parent;
100  std::string _key;
101 
103  std::string _stringValue;
105  long _longValue;
107  double _doubleValue;
108 
110  std::vector<std::shared_ptr<JsonValue>> _children;
111 
112 #pragma mark -
113 #pragma mark cJSON Conversions
114 
127  static std::shared_ptr<JsonValue> toJsonValue(const cJSON* node);
128 
140  static void toJsonValue(JsonValue* value, const cJSON* node);
141 
153  static cJSON* toCJSON(const JsonValue* value);
154 
155 #pragma mark -
156 #pragma mark Constructors
157 public:
164  JsonValue();
165 
172  ~JsonValue();
173 
183  bool init(Type type);
184 
194  bool init(const std::string& value);
195 
205  bool init(const char* value) { return init(std::string(value)); }
206 
216  bool init(bool value);
217 
227  bool init(long value);
228 
238  bool init(double value);
239 
247  bool initNull() { return init(Type::NullType); }
248 
257  bool initArray() { return init(Type::ArrayType); }
258 
267  bool initObject() { return init(Type::ObjectType); }
268 
285  bool initWithJson(const std::string& json) {
286  return initWithJson(json.c_str());
287  }
288 
305  bool initWithJson(const char* json);
306 
307 
308 #pragma mark -
309 #pragma mark Static Constructors
310 
319  static std::shared_ptr<JsonValue> alloc(Type type) {
320  std::shared_ptr<JsonValue> result = std::make_shared<JsonValue>();
321  return (result->init(type) ? result : nullptr);
322  }
323 
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);
336  }
337 
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);
350  }
351 
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);
364  }
365 
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);
378  }
379 
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);
392  }
393 
401  static std::shared_ptr<JsonValue> allocNull() {
402  std::shared_ptr<JsonValue> result = std::make_shared<JsonValue>();
403  return (result->initNull() ? result : nullptr);
404  }
405 
414  static std::shared_ptr<JsonValue> allocArray() {
415  std::shared_ptr<JsonValue> result = std::make_shared<JsonValue>();
416  return (result->initArray() ? result : nullptr);
417  }
418 
427  static std::shared_ptr<JsonValue> allocObject() {
428  std::shared_ptr<JsonValue> result = std::make_shared<JsonValue>();
429  return (result->initObject() ? result : nullptr);
430  }
431 
448  static std::shared_ptr<JsonValue> allocWithJson(const std::string& json) {
449  std::shared_ptr<JsonValue> result = std::make_shared<JsonValue>();
450  return (result->initWithJson(json) ? result : nullptr);
451  }
452 
469  static std::shared_ptr<JsonValue> allocWithJson(const char* json) {
470  std::shared_ptr<JsonValue> result = std::make_shared<JsonValue>();
471  return (result->initWithJson(json) ? result : nullptr);
472  }
473 
474 
475 #pragma mark -
476 #pragma mark Type
477 
482  Type type() const { return _type; }
483 
489  bool isNull() const { return _type == Type::NullType; }
490 
496  bool isNumber() const { return _type == Type::NumberType; }
497 
503  bool isBool() const { return _type == Type::BoolType; }
504 
510  bool isString() const { return _type == Type::StringType; }
511 
517  bool isValue() const;
518 
527  bool isArray() const { return _type == Type::ArrayType; }
528 
537  bool isObject() const { return _type == Type::ObjectType; }
538 
539 
540 #pragma mark -
541 #pragma mark Value Access
542 
552  const std::string asString(const std::string& defaultValue) const {
553  return asString(defaultValue.c_str());
554  }
555 
566  const std::string asString(const char* defaultValue="") const;
567 
578  float asFloat(float defaultValue=0.0f) const;
579 
590  double asDouble(double defaultValue=0.0) const;
591 
602  long asLong(long defaultValue=0L) const;
603 
614  int asInt(int defaultValue=0) const;
615 
627  bool asBool(bool defaultValue=false) const;
628 
640  std::vector<std::string> asStringArray(const std::string& defaultValue) const;
641 
653  std::vector<std::string> asStringArray(const char* defaultValue="") const {
654  return asStringArray(std::string(defaultValue));
655  }
656 
668  std::vector<float> asFloatArray(float defaultValue=0.0f) const;
669 
681  std::vector<double> asDoubleArray(double defaultValue=0.0) const;
682 
694  std::vector<long> asLongArray(long defaultValue=0L) const;
695 
707  std::vector<int> asIntArray(int defaultValue=0) const;
708 
720  std::vector<bool> asBoolArray (bool defaultValue=false);
721 
722 
723 #pragma mark -
724 #pragma mark Value Modification
725 
733  void set(const std::string& value);
734 
743  void set(const char* value) {
744  set(std::string(value));
745  }
746 
755  void set(long value);
756 
765  void set(double value);
766 
775  void set(bool value);
776 
783  void setNull();
784 
785 
786 #pragma mark -
787 #pragma mark Child Access
788 
796  const std::string& key() const;
797 
806  void setKey(const std::string& key);
807 
816  void setKey(const char* key) { setKey(std::string(key)); }
817 
825  const int index() const;
826 
832  size_t size() const { return _children.size(); }
833 
843  bool has(const std::string& name) const;
844 
854  bool has(const char* name) const {
855  return has(std::string(name));
856  }
857 
868  std::shared_ptr<JsonValue> get(int index);
869 
880  const std::shared_ptr<JsonValue> get(int index) const;
881 
894  std::shared_ptr<JsonValue> get(const std::string& name);
895 
908  const std::shared_ptr<JsonValue> get(const std::string& name) const;
909 
922  std::shared_ptr<JsonValue> get(const char* name) {
923  return get(std::string(name));
924  }
925 
938  const std::shared_ptr<JsonValue> get(const char* name) const {
939  return get(std::string(name));
940  }
941 
942 
943 #pragma mark -
944 #pragma mark Child Values
945 
959  const std::string getString (const std::string& key, const std::string& defaultValue) const;
960 
975  const std::string getString (const char* key, const char* defaultValue="") const {
976  return getString(std::string(key),std::string(defaultValue));
977  }
978 
993  const std::string getString (const std::string& key, const char* defaultValue="") const {
994  return getString(key,std::string(defaultValue));
995  }
996 
1011  const std::string getString (const char* key, const std::string& defaultValue) const {
1012  return getString(std::string(key),defaultValue);
1013  }
1014 
1029  float getFloat(const std::string& key, float defaultValue=0.0f) const;
1030 
1045  float getFloat(const char* key, float defaultValue=0.0f) const {
1046  return getFloat(std::string(key),defaultValue);
1047  }
1048 
1063  double getDouble(const std::string& key, double defaultValue=0.0) const;
1064 
1079  double getDouble(const char* key, double defaultValue=0.0) const {
1080  return getDouble(std::string(key),defaultValue);
1081  }
1082 
1097  long getLong(const std::string& key, long defaultValue=0L) const;
1098 
1113  long getLong(const char* key, long defaultValue=0L) const {
1114  return getLong(std::string(key),defaultValue);
1115  }
1116 
1131  int getInt(const std::string& key, int defaultValue=0) const;
1132 
1147  int getInt(const char* key, int defaultValue=0) const {
1148  return getInt(std::string(key),defaultValue);
1149  }
1150 
1165  bool getBool(const std::string& key, bool defaultValue=false) const;
1166 
1181  bool getBool(const char* key, bool defaultValue=false) const {
1182  return getBool(std::string(key),defaultValue);
1183  }
1184 
1185 #pragma mark -
1186 #pragma mark Child Deletion
1187 
1199  std::shared_ptr<JsonValue> removeChild(int index);
1200 
1213  std::shared_ptr<JsonValue> removeChild(const std::string& name);
1214 
1227  std::shared_ptr<JsonValue> removeChild(const char* name) {
1228  return removeChild(std::string(name));
1229  }
1230 
1231 #pragma mark -
1232 #pragma mark Child Addition
1233 
1247  void appendChild(const std::shared_ptr<JsonValue>& child);
1248 
1265  void appendChild(const std::string& key, const std::shared_ptr<JsonValue>& child);
1266 
1283  void appendChild(const char* key, const std::shared_ptr<JsonValue>& child) {
1284  return appendChild(std::string(key),child);
1285  }
1286 
1303  void insertChild(unsigned int index, const std::shared_ptr<JsonValue>& child);
1304 
1323  void insertChild(unsigned int index, const std::string& key, const std::shared_ptr<JsonValue>& child);
1324 
1343  void insertChild(unsigned int index, const char* key, const std::shared_ptr<JsonValue>& child) {
1344  insertChild(index,std::string(key),child);
1345  }
1346 
1357  void appendValue(bool value) {
1358  appendChild(JsonValue::alloc(value));
1359  }
1360 
1374  void appendValue(const std::string& key, bool value) {
1376  }
1377 
1391  void appendValue(const char* key, bool value) {
1393  }
1394 
1407  void insertValue(unsigned int index, bool value) {
1409  }
1410 
1426  void insertValue(unsigned int index, const std::string& key, bool value) {
1428  }
1429 
1445  void insertValue(unsigned int index, const char* key, bool value) {
1447  }
1448 
1459  void appendValue(long value) {
1460  appendChild(JsonValue::alloc(value));
1461  }
1462 
1476  void appendValue(const std::string& key, long value) {
1478  }
1479 
1493  void appendValue(const char* key, long value) {
1495  }
1496 
1509  void insertValue(unsigned int index, long value) {
1511  }
1512 
1528  void insertValue(unsigned int index, const std::string& key, long value) {
1530  }
1531 
1547  void insertValue(unsigned int index, const char* key, long value) {
1549  }
1550 
1561  void appendValue(double value) {
1562  appendChild(JsonValue::alloc(value));
1563  }
1564 
1578  void appendValue(const std::string& key, double value) {
1580  }
1581 
1595  void appendValue(const char* key, double value) {
1597  }
1598 
1611  void insertValue(unsigned int index, double value) {
1613  }
1614 
1630  void insertValue(unsigned int index, const std::string& key, double value) {
1632  }
1633 
1649  void insertValue(unsigned int index, const char* key, double value) {
1651  }
1652 
1663  void appendValue(const std::string& value) {
1664  appendChild(JsonValue::alloc(value));
1665  }
1666 
1677  void appendValue(const char* value) {
1678  appendChild(JsonValue::alloc(value));
1679  }
1680 
1694  void appendValue(const std::string& key, const std::string& value) {
1696  }
1697 
1711  void appendValue(const std::string& key, const char* value) {
1713  }
1714 
1728  void appendValue(const char* key, const std::string& value) {
1730  }
1731 
1745  void appendValue(const char* key, const char* value) {
1747  }
1748 
1761  void insertValue(unsigned int index, const std::string& value) {
1763  }
1764 
1777  void insertValue(unsigned int index, const char* value) {
1779  }
1780 
1796  void insertValue(unsigned int index, const std::string& key, const std::string& value) {
1798  }
1799 
1815  void insertValue(unsigned int index, const std::string& key, const char* value) {
1817  }
1818 
1834  void insertValue(unsigned int index, const char* key, const std::string& value) {
1836  }
1837 
1853  void insertValue(unsigned int index, const char* key, const char* value) {
1855  }
1856 
1857 
1866  void appendNull() {
1868  }
1869 
1882  void appendNull(const std::string& key) {
1884  }
1885 
1898  void appendNull(const char* key) {
1900  }
1901 
1913  void insertNull(unsigned int index) {
1915  }
1916 
1931  void insertNull(unsigned int index, const std::string& key) {
1933  }
1934 
1949  void insertNull(unsigned int index, const char* key) {
1951  }
1952 
1961  void appendArray() {
1963  }
1964 
1977  void appendArray(const std::string& key) {
1979  }
1980 
1993  void appendArray(const char* key) {
1995  }
1996 
2008  void insertArray(unsigned int index) {
2010  }
2011 
2026  void insertArray(unsigned int index, const std::string& key) {
2028  }
2029 
2044  void insertArray(unsigned int index, const char* key) {
2046  }
2047 
2056  void appendObject() {
2058  }
2059 
2072  void appendObject(const std::string& key) {
2074  }
2075 
2088  void appendObject(const char* key) {
2090  }
2091 
2103  void insertObject(unsigned int index) {
2105  }
2106 
2121  void insertObject(unsigned int index, const std::string& key) {
2123  }
2124 
2139  void insertObject(unsigned int index, const char* key) {
2141  }
2142 
2143 
2144 #pragma mark -
2145 #pragma mark Encoding
2146 
2161  std::string toString(bool format=true) const;
2162 
2163 };
2164 
2165 }
2166 #endif /* __CU_JSON_VALUE_H__ */
cugl::JsonValue::set
void set(const std::string &value)
cugl::JsonValue::appendValue
void appendValue(bool value)
Definition: CUJsonValue.h:1357
cugl::JsonValue::appendArray
void appendArray(const char *key)
Definition: CUJsonValue.h:1993
cugl::JsonValue::setKey
void setKey(const char *key)
Definition: CUJsonValue.h:816
cugl::JsonValue::asDouble
double asDouble(double defaultValue=0.0) const
cugl::JsonValue::appendValue
void appendValue(long value)
Definition: CUJsonValue.h:1459
cugl::JsonValue::allocWithJson
static std::shared_ptr< JsonValue > allocWithJson(const char *json)
Definition: CUJsonValue.h:469
cugl::JsonValue::allocWithJson
static std::shared_ptr< JsonValue > allocWithJson(const std::string &json)
Definition: CUJsonValue.h:448
cugl::JsonValue::isValue
bool isValue() const
cugl::JsonValue::init
bool init(Type type)
cugl::JsonValue::appendChild
void appendChild(const char *key, const std::shared_ptr< JsonValue > &child)
Definition: CUJsonValue.h:1283
cugl::JsonValue::getString
const std::string getString(const std::string &key, const char *defaultValue="") const
Definition: CUJsonValue.h:993
cugl::JsonValue::get
const std::shared_ptr< JsonValue > get(const char *name) const
Definition: CUJsonValue.h:938
cugl::JsonValue::insertValue
void insertValue(unsigned int index, bool value)
Definition: CUJsonValue.h:1407
cugl::JsonValue::setNull
void setNull()
cugl::JsonValue::insertValue
void insertValue(unsigned int index, const char *key, bool value)
Definition: CUJsonValue.h:1445
cugl::JsonValue::Type::StringType
cugl::JsonValue::asFloat
float asFloat(float defaultValue=0.0f) const
cugl::JsonValue::appendValue
void appendValue(const std::string &key, bool value)
Definition: CUJsonValue.h:1374
cugl::JsonValue::asLongArray
std::vector< long > asLongArray(long defaultValue=0L) const
cugl::JsonValue::insertChild
void insertChild(unsigned int index, const char *key, const std::shared_ptr< JsonValue > &child)
Definition: CUJsonValue.h:1343
cugl::JsonValue::appendObject
void appendObject(const char *key)
Definition: CUJsonValue.h:2088
cugl::JsonValue::isNull
bool isNull() const
Definition: CUJsonValue.h:489
cugl::JsonValue::set
void set(const char *value)
Definition: CUJsonValue.h:743
cugl::JsonValue::appendNull
void appendNull(const char *key)
Definition: CUJsonValue.h:1898
cugl::JsonValue::size
size_t size() const
Definition: CUJsonValue.h:832
cugl::JsonValue::initWithJson
bool initWithJson(const std::string &json)
Definition: CUJsonValue.h:285
cugl::JsonValue::isNumber
bool isNumber() const
Definition: CUJsonValue.h:496
cugl::JsonValue::insertArray
void insertArray(unsigned int index, const char *key)
Definition: CUJsonValue.h:2044
cugl::JsonValue::Type::ObjectType
cugl::JsonValue::asInt
int asInt(int defaultValue=0) const
cugl::JsonValue::type
Type type() const
Definition: CUJsonValue.h:482
cugl::JsonValue::appendArray
void appendArray(const std::string &key)
Definition: CUJsonValue.h:1977
cugl::JsonValue::getDouble
double getDouble(const std::string &key, double defaultValue=0.0) const
cugl::JsonValue::insertObject
void insertObject(unsigned int index, const std::string &key)
Definition: CUJsonValue.h:2121
cugl::JsonValue::Type::NumberType
cugl::JsonValue::Type::NullType
cugl::JsonValue::isBool
bool isBool() const
Definition: CUJsonValue.h:503
cugl::JsonValue::insertNull
void insertNull(unsigned int index)
Definition: CUJsonValue.h:1913
cugl::JsonValue::insertNull
void insertNull(unsigned int index, const std::string &key)
Definition: CUJsonValue.h:1931
cugl::JsonValue::isObject
bool isObject() const
Definition: CUJsonValue.h:537
cugl::JsonValue::insertValue
void insertValue(unsigned int index, const std::string &key, const char *value)
Definition: CUJsonValue.h:1815
cugl::JsonValue::setKey
void setKey(const std::string &key)
cugl::JsonValue::getFloat
float getFloat(const std::string &key, float defaultValue=0.0f) const
cugl::JsonValue::getDouble
double getDouble(const char *key, double defaultValue=0.0) const
Definition: CUJsonValue.h:1079
cugl::JsonValue::alloc
static std::shared_ptr< JsonValue > alloc(bool value)
Definition: CUJsonValue.h:361
cugl::JsonValue::insertValue
void insertValue(unsigned int index, const char *key, const std::string &value)
Definition: CUJsonValue.h:1834
cugl::JsonValue::insertValue
void insertValue(unsigned int index, const std::string &key, bool value)
Definition: CUJsonValue.h:1426
cugl::JsonValue::appendValue
void appendValue(const char *key, const std::string &value)
Definition: CUJsonValue.h:1728
cugl::JsonValue::insertArray
void insertArray(unsigned int index, const std::string &key)
Definition: CUJsonValue.h:2026
cugl::JsonValue::initArray
bool initArray()
Definition: CUJsonValue.h:257
cugl::JsonValue::insertValue
void insertValue(unsigned int index, const std::string &key, double value)
Definition: CUJsonValue.h:1630
cugl::JsonValue::insertValue
void insertValue(unsigned int index, const char *key, const char *value)
Definition: CUJsonValue.h:1853
cugl::JsonValue::get
std::shared_ptr< JsonValue > get(int index)
cugl::JsonValue::isArray
bool isArray() const
Definition: CUJsonValue.h:527
cugl::JsonValue::getLong
long getLong(const char *key, long defaultValue=0L) const
Definition: CUJsonValue.h:1113
cugl::JsonValue::insertValue
void insertValue(unsigned int index, double value)
Definition: CUJsonValue.h:1611
cugl::JsonValue::getBool
bool getBool(const std::string &key, bool defaultValue=false) const
cugl::JsonValue::appendValue
void appendValue(const char *key, const char *value)
Definition: CUJsonValue.h:1745
cugl::JsonValue::alloc
static std::shared_ptr< JsonValue > alloc(long value)
Definition: CUJsonValue.h:375
cugl::JsonValue::appendChild
void appendChild(const std::shared_ptr< JsonValue > &child)
cugl::JsonValue::insertValue
void insertValue(unsigned int index, const std::string &key, long value)
Definition: CUJsonValue.h:1528
cugl::JsonValue::toString
std::string toString(bool format=true) const
cugl::JsonValue::appendValue
void appendValue(const char *key, bool value)
Definition: CUJsonValue.h:1391
cugl::JsonValue::asStringArray
std::vector< std::string > asStringArray(const char *defaultValue="") const
Definition: CUJsonValue.h:653
cugl::JsonValue::insertValue
void insertValue(unsigned int index, const char *value)
Definition: CUJsonValue.h:1777
cugl::JsonValue::isString
bool isString() const
Definition: CUJsonValue.h:510
cugl::JsonValue::Type
Type
Definition: CUJsonValue.h:78
cugl::JsonValue::appendObject
void appendObject(const std::string &key)
Definition: CUJsonValue.h:2072
cugl::JsonValue::get
std::shared_ptr< JsonValue > get(const char *name)
Definition: CUJsonValue.h:922
cugl::JsonValue::allocNull
static std::shared_ptr< JsonValue > allocNull()
Definition: CUJsonValue.h:401
cugl::JsonValue::getFloat
float getFloat(const char *key, float defaultValue=0.0f) const
Definition: CUJsonValue.h:1045
cugl::JsonValue::asString
const std::string asString(const std::string &defaultValue) const
Definition: CUJsonValue.h:552
cugl::JsonValue::getInt
int getInt(const char *key, int defaultValue=0) const
Definition: CUJsonValue.h:1147
cugl::JsonValue::appendValue
void appendValue(const char *value)
Definition: CUJsonValue.h:1677
cugl::JsonValue::insertObject
void insertObject(unsigned int index)
Definition: CUJsonValue.h:2103
cugl::JsonValue::Type::BoolType
cugl::JsonValue::alloc
static std::shared_ptr< JsonValue > alloc(double value)
Definition: CUJsonValue.h:389
cugl::JsonValue::asBoolArray
std::vector< bool > asBoolArray(bool defaultValue=false)
cugl::JsonValue::asFloatArray
std::vector< float > asFloatArray(float defaultValue=0.0f) const
cugl::JsonValue::insertValue
void insertValue(unsigned int index, const char *key, double value)
Definition: CUJsonValue.h:1649
cugl::JsonValue::asBool
bool asBool(bool defaultValue=false) const
cugl::JsonValue::asLong
long asLong(long defaultValue=0L) const
cugl::JsonValue::appendValue
void appendValue(const char *key, double value)
Definition: CUJsonValue.h:1595
cugl::JsonValue::asIntArray
std::vector< int > asIntArray(int defaultValue=0) const
cugl::JsonValue::appendValue
void appendValue(const std::string &value)
Definition: CUJsonValue.h:1663
cugl::JsonValue::insertNull
void insertNull(unsigned int index, const char *key)
Definition: CUJsonValue.h:1949
cugl::JsonValue::asStringArray
std::vector< std::string > asStringArray(const std::string &defaultValue) const
cugl::JsonValue::getBool
bool getBool(const char *key, bool defaultValue=false) const
Definition: CUJsonValue.h:1181
cugl::JsonValue::appendValue
void appendValue(const std::string &key, long value)
Definition: CUJsonValue.h:1476
cugl::JsonValue::~JsonValue
~JsonValue()
cugl::JsonValue::insertChild
void insertChild(unsigned int index, const std::shared_ptr< JsonValue > &child)
cugl::JsonValue::getString
const std::string getString(const std::string &key, const std::string &defaultValue) const
cugl::JsonValue::insertValue
void insertValue(unsigned int index, const char *key, long value)
Definition: CUJsonValue.h:1547
cugl::JsonValue::insertObject
void insertObject(unsigned int index, const char *key)
Definition: CUJsonValue.h:2139
cugl::JsonValue::getString
const std::string getString(const char *key, const char *defaultValue="") const
Definition: CUJsonValue.h:975
cugl::JsonValue::initObject
bool initObject()
Definition: CUJsonValue.h:267
cugl::JsonValue::appendValue
void appendValue(const std::string &key, const std::string &value)
Definition: CUJsonValue.h:1694
cugl::JsonValue::index
const int index() const
cugl::JsonValue::appendArray
void appendArray()
Definition: CUJsonValue.h:1961
cugl::JsonValue::getInt
int getInt(const std::string &key, int defaultValue=0) const
cugl::JsonValue::JsonValue
JsonValue()
cugl::JsonValue::has
bool has(const char *name) const
Definition: CUJsonValue.h:854
cugl::JsonValue::insertValue
void insertValue(unsigned int index, const std::string &key, const std::string &value)
Definition: CUJsonValue.h:1796
cugl::JsonValue::alloc
static std::shared_ptr< JsonValue > alloc(Type type)
Definition: CUJsonValue.h:319
cugl::JsonValue::removeChild
std::shared_ptr< JsonValue > removeChild(const char *name)
Definition: CUJsonValue.h:1227
cugl::JsonValue::insertValue
void insertValue(unsigned int index, const std::string &value)
Definition: CUJsonValue.h:1761
cugl::JsonValue::has
bool has(const std::string &name) const
cugl::JsonValue::getLong
long getLong(const std::string &key, long defaultValue=0L) const
cugl::JsonValue::appendValue
void appendValue(const char *key, long value)
Definition: CUJsonValue.h:1493
cugl::JsonValue::getString
const std::string getString(const char *key, const std::string &defaultValue) const
Definition: CUJsonValue.h:1011
cugl::JsonValue
Definition: CUJsonValue.h:69
cugl::JsonValue::removeChild
std::shared_ptr< JsonValue > removeChild(int index)
cugl::JsonValue::appendObject
void appendObject()
Definition: CUJsonValue.h:2056
cugl::JsonValue::insertValue
void insertValue(unsigned int index, long value)
Definition: CUJsonValue.h:1509
cugl::JsonValue::appendNull
void appendNull(const std::string &key)
Definition: CUJsonValue.h:1882
cugl::JsonValue::allocArray
static std::shared_ptr< JsonValue > allocArray()
Definition: CUJsonValue.h:414
cugl::JsonValue::key
const std::string & key() const
cugl::JsonValue::allocObject
static std::shared_ptr< JsonValue > allocObject()
Definition: CUJsonValue.h:427
cugl::JsonValue::Type::ArrayType
cugl::JsonValue::init
bool init(const char *value)
Definition: CUJsonValue.h:205
cugl::JsonValue::appendValue
void appendValue(const std::string &key, const char *value)
Definition: CUJsonValue.h:1711
cugl::JsonValue::appendNull
void appendNull()
Definition: CUJsonValue.h:1866
cugl::JsonValue::asDoubleArray
std::vector< double > asDoubleArray(double defaultValue=0.0) const
cugl::JsonValue::initNull
bool initNull()
Definition: CUJsonValue.h:247
cugl::JsonValue::alloc
static std::shared_ptr< JsonValue > alloc(const char *value)
Definition: CUJsonValue.h:347
cugl::JsonValue::appendValue
void appendValue(const std::string &key, double value)
Definition: CUJsonValue.h:1578
cugl::JsonValue::appendValue
void appendValue(double value)
Definition: CUJsonValue.h:1561
cugl::JsonValue::insertArray
void insertArray(unsigned int index)
Definition: CUJsonValue.h:2008
cugl::JsonValue::alloc
static std::shared_ptr< JsonValue > alloc(const std::string &value)
Definition: CUJsonValue.h:333