JSONValue.pkg 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. $#include "Resource/JSONValue.h"
  2. enum JSONValueType
  3. {
  4. JSON_NULL,
  5. JSON_BOOL,
  6. JSON_NUMBER,
  7. JSON_STRING,
  8. JSON_ARRAY,
  9. JSON_OBJECT,
  10. };
  11. class JSONValue
  12. {
  13. JSONValue();
  14. JSONValue(bool value);
  15. JSONValue(const char* value); // This works for Lua string and Urho3D:String
  16. JSONValue(double value); // This works for all number types, must be declared after string overload
  17. JSONValue(const JSONArray& value);
  18. JSONValue(const JSONObject& value);
  19. JSONValue(const JSONValue& value);
  20. ~JSONValue();
  21. tolua_outside void JSONValueSetBool @ SetBool(bool value);
  22. tolua_outside void JSONValueSetInt @ SetInt(int value);
  23. tolua_outside void JSONValueSetUint @ SetUint(unsigned value);
  24. tolua_outside void JSONValueSetFloat @ SetFloat(float value);
  25. tolua_outside void JSONValueSetDouble @ SetDouble(double value);
  26. tolua_outside void JSONValueSetString @ SetString(const String value);
  27. tolua_outside void JSONValueSetArray @ SetArray(const JSONArray& value);
  28. tolua_outside void JSONValueSetObject @ SetObject(const JSONObject& value);
  29. JSONValueType GetValueType() const;
  30. bool IsNull() const;
  31. bool IsBool() const;
  32. bool IsNumber() const;
  33. bool IsString() const;
  34. bool IsArray() const;
  35. bool IsObject() const;
  36. bool GetBool() const;
  37. int GetInt() const;
  38. unsigned GetUInt() const;
  39. float GetFloat() const;
  40. double GetDouble() const;
  41. const String GetString() const;
  42. const JSONArray& GetArray() const;
  43. const JSONObject& GetObject() const;
  44. JSONValue& operator [](unsigned index);
  45. const JSONValue& operator [](unsigned index) const;
  46. void Push(const JSONValue& value);
  47. void Pop();
  48. void Insert(unsigned pos, const JSONValue& value);
  49. void Erase(unsigned pos, unsigned length = 1);
  50. void Resize(unsigned newSize);
  51. unsigned Size() const;
  52. // JSONValue& operator [](const String key);
  53. // const JSONValue& operator [](const String key) const;
  54. void Set(const String key, const JSONValue& value);
  55. const JSONValue& Get(const String key) const;
  56. bool Erase(const String key);
  57. bool Contains(const String key) const;
  58. void Clear();
  59. static const JSONValue EMPTY;
  60. static const JSONArray emptyArray;
  61. static const JSONObject emptyObject;
  62. tolua_readonly tolua_property__is_set bool null;
  63. };
  64. ${
  65. static void JSONValueSetBool(JSONValue* jsonValue, bool value)
  66. {
  67. (*jsonValue) = value;
  68. }
  69. static void JSONValueSetInt(JSONValue* jsonValue, int value)
  70. {
  71. (*jsonValue) = value;
  72. }
  73. static void JSONValueSetUint(JSONValue* jsonValue, unsigned value)
  74. {
  75. (*jsonValue) = value;
  76. }
  77. static void JSONValueSetFloat(JSONValue* jsonValue, float value)
  78. {
  79. (*jsonValue) = value;
  80. }
  81. static void JSONValueSetDouble(JSONValue* jsonValue, double value)
  82. {
  83. (*jsonValue) = value;
  84. }
  85. static void JSONValueSetString(JSONValue* jsonValue, const String& value)
  86. {
  87. (*jsonValue) = value;
  88. }
  89. static void JSONValueSetArray(JSONValue* jsonValue, const JSONArray& value)
  90. {
  91. (*jsonValue) = value;
  92. }
  93. static void JSONValueSetObject(JSONValue* jsonValue, const JSONObject& value)
  94. {
  95. (*jsonValue) = value;
  96. }
  97. $}