JSONValue.pkg 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. $#include "Resource/JSONValue.h"
  2. enum JSONValueType
  3. {
  4. JSON_NULL = 0,
  5. JSON_BOOL,
  6. JSON_NUMBER,
  7. JSON_STRING,
  8. JSON_ARRAY,
  9. JSON_OBJECT
  10. };
  11. enum JSONNumberType
  12. {
  13. JSONNT_NAN = 0,
  14. JSONNT_INT,
  15. JSONNT_UINT,
  16. JSONNT_FLOAT_DOUBLE
  17. };
  18. class JSONValue
  19. {
  20. JSONValue();
  21. JSONValue(bool value);
  22. JSONValue(const char* value); // This works for Lua string and Urho3D:String
  23. JSONValue(double value); // This works for all number types, must be declared after string overload
  24. JSONValue(const JSONArray& value);
  25. JSONValue(const JSONObject& value);
  26. JSONValue(const JSONValue& value);
  27. ~JSONValue();
  28. tolua_outside void JSONValueSetBool @ SetBool(bool value);
  29. tolua_outside void JSONValueSetInt @ SetInt(int value);
  30. tolua_outside void JSONValueSetUint @ SetUint(unsigned value);
  31. tolua_outside void JSONValueSetFloat @ SetFloat(float value);
  32. tolua_outside void JSONValueSetDouble @ SetDouble(double value);
  33. tolua_outside void JSONValueSetString @ SetString(const String value);
  34. tolua_outside void JSONValueSetArray @ SetArray(const JSONArray& value);
  35. tolua_outside void JSONValueSetObject @ SetObject(const JSONObject& value);
  36. void SetVariant(const Variant& value);
  37. void SetVariantMap(const VariantMap& value);
  38. JSONValueType GetValueType() const;
  39. JSONNumberType GetNumberType() const;
  40. String GetValueTypeName() const;
  41. String GetNumberTypeName() const;
  42. bool IsNull() const;
  43. bool IsBool() const;
  44. bool IsNumber() const;
  45. bool IsString() const;
  46. bool IsArray() const;
  47. bool IsObject() const;
  48. bool GetBool() const;
  49. int GetInt() const;
  50. unsigned GetUInt() const;
  51. float GetFloat() const;
  52. double GetDouble() const;
  53. const String GetString() const;
  54. const JSONArray& GetArray() const;
  55. const JSONObject& GetObject() const;
  56. Variant GetVariant() const;
  57. VariantMap GetVariantMap() const;
  58. JSONValue& operator [](unsigned index);
  59. const JSONValue& operator [](unsigned index) const;
  60. void Push(const JSONValue& value);
  61. void Pop();
  62. void Insert(unsigned pos, const JSONValue& value);
  63. void Erase(unsigned pos, unsigned length = 1);
  64. void Resize(unsigned newSize);
  65. unsigned Size() const;
  66. // JSONValue& operator [](const String key);
  67. // const JSONValue& operator [](const String key) const;
  68. void Set(const String key, const JSONValue& value);
  69. const JSONValue& Get(const String key) const;
  70. bool Erase(const String key);
  71. bool Contains(const String key) const;
  72. void Clear();
  73. static const JSONValue EMPTY;
  74. static const JSONArray emptyArray;
  75. static const JSONObject emptyObject;
  76. tolua_readonly tolua_property__is_set bool null;
  77. tolua_readonly tolua_property__get_set JSONValueType valueType;
  78. tolua_readonly tolua_property__get_set JSONNumberType numberType;
  79. tolua_readonly tolua_property__get_set String valueTypeName;
  80. tolua_readonly tolua_property__get_set String numberTypeName;
  81. };
  82. ${
  83. static void JSONValueSetBool(JSONValue* jsonValue, bool value)
  84. {
  85. (*jsonValue) = value;
  86. }
  87. static void JSONValueSetInt(JSONValue* jsonValue, int value)
  88. {
  89. (*jsonValue) = value;
  90. }
  91. static void JSONValueSetUint(JSONValue* jsonValue, unsigned value)
  92. {
  93. (*jsonValue) = value;
  94. }
  95. static void JSONValueSetFloat(JSONValue* jsonValue, float value)
  96. {
  97. (*jsonValue) = value;
  98. }
  99. static void JSONValueSetDouble(JSONValue* jsonValue, double value)
  100. {
  101. (*jsonValue) = value;
  102. }
  103. static void JSONValueSetString(JSONValue* jsonValue, const String& value)
  104. {
  105. (*jsonValue) = value;
  106. }
  107. static void JSONValueSetArray(JSONValue* jsonValue, const JSONArray& value)
  108. {
  109. (*jsonValue) = value;
  110. }
  111. static void JSONValueSetObject(JSONValue* jsonValue, const JSONObject& value)
  112. {
  113. (*jsonValue) = value;
  114. }
  115. #define TOLUA_DISABLE_tolua_ResourceLuaAPI_JSONValue_SetVariant00
  116. static int tolua_ResourceLuaAPI_JSONValue_SetVariant00(lua_State* tolua_S)
  117. {
  118. #ifndef TOLUA_RELEASE
  119. tolua_Error tolua_err;
  120. if (
  121. !tolua_isusertype(tolua_S,1,"JSONValue",0,&tolua_err) ||
  122. (tolua_isvaluenil(tolua_S,2,&tolua_err) || !tolua_isusertype(tolua_S,2,"const Variant",0,&tolua_err)) ||
  123. !tolua_isnoobj(tolua_S,3,&tolua_err)
  124. )
  125. goto tolua_lerror;
  126. else
  127. #endif
  128. {
  129. JSONValue* self = (JSONValue*) tolua_tousertype(tolua_S,1,0);
  130. const Variant* value = ((const Variant*) tolua_tousertype(tolua_S,2,0));
  131. #ifndef TOLUA_RELEASE
  132. if (!self) tolua_error(tolua_S,"invalid 'self' in function 'SetVariant'", NULL);
  133. #endif
  134. {
  135. self->SetVariant(*value, GetContext(tolua_S));
  136. }
  137. }
  138. return 0;
  139. #ifndef TOLUA_RELEASE
  140. tolua_lerror:
  141. tolua_error(tolua_S,"#ferror in function 'SetVariant'.",&tolua_err);
  142. return 0;
  143. #endif
  144. }
  145. #define TOLUA_DISABLE_tolua_ResourceLuaAPI_JSONValue_SetVariantMap00
  146. static int tolua_ResourceLuaAPI_JSONValue_SetVariantMap00(lua_State* tolua_S)
  147. {
  148. #ifndef TOLUA_RELEASE
  149. tolua_Error tolua_err;
  150. if (
  151. !tolua_isusertype(tolua_S,1,"JSONValue",0,&tolua_err) ||
  152. (tolua_isvaluenil(tolua_S,2,&tolua_err) || !tolua_isusertype(tolua_S,2,"const VariantMap",0,&tolua_err)) ||
  153. !tolua_isnoobj(tolua_S,3,&tolua_err)
  154. )
  155. goto tolua_lerror;
  156. else
  157. #endif
  158. {
  159. JSONValue* self = (JSONValue*) tolua_tousertype(tolua_S,1,0);
  160. const VariantMap* value = ((const VariantMap*) tolua_tousertype(tolua_S,2,0));
  161. #ifndef TOLUA_RELEASE
  162. if (!self) tolua_error(tolua_S,"invalid 'self' in function 'SetVariantMap'", NULL);
  163. #endif
  164. {
  165. self->SetVariantMap(*value, GetContext(tolua_S));
  166. }
  167. }
  168. return 0;
  169. #ifndef TOLUA_RELEASE
  170. tolua_lerror:
  171. tolua_error(tolua_S,"#ferror in function 'SetVariantMap'.",&tolua_err);
  172. return 0;
  173. #endif
  174. }
  175. $}