JsonArray.cpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #include "JsonArray.h"
  2. #include "JsonObject.h"
  3. #include "JsonValue.h"
  4. JsonValue JsonArray::operator[](int index) const
  5. {
  6. for (JsonNodeIterator it = beginChildren(); it != endChildren(); ++it)
  7. {
  8. if (!index) return JsonValue(*it);
  9. index--;
  10. }
  11. return JsonValue();
  12. }
  13. void JsonArray::add(bool value)
  14. {
  15. JsonNode* node = createNode();
  16. if (!node) return;
  17. node->setAsBoolean(value);
  18. addChild(node);
  19. }
  20. void JsonArray::add(char const* value)
  21. {
  22. JsonNode* node = createNode();
  23. if (!node) return;
  24. node->setAsString(value);
  25. addChild(node);
  26. }
  27. void JsonArray::add(double value, int decimals)
  28. {
  29. JsonNode* node = createNode();
  30. if (!node) return;
  31. node->setAsDouble(value, decimals);
  32. addChild(node);
  33. }
  34. void JsonArray::add(long value)
  35. {
  36. JsonNode* node = createNode();
  37. if (!node) return;
  38. node->setAsLong(value);
  39. addChild(node);
  40. }
  41. // TODO: we should have the same issue as in JsonValue
  42. void JsonArray::add(JsonContainer nestedContainer)
  43. {
  44. JsonNode* node = createNode();
  45. if (!node) return;
  46. node->duplicate(nestedContainer._node);
  47. addChild(node);
  48. }
  49. JsonArray JsonArray::createNestedArray()
  50. {
  51. JsonNode* node = createNode();
  52. if (node)
  53. {
  54. node->setAsArray(_node->getContainerBuffer());
  55. addChild(node);
  56. }
  57. return JsonArray(node);
  58. }
  59. JsonObject JsonArray::createNestedObject()
  60. {
  61. JsonNode* node = createNode();
  62. if (node)
  63. {
  64. node->setAsObject(_node->getContainerBuffer());
  65. addChild(node);
  66. }
  67. return JsonObject(node);
  68. }