JsonArray.hpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // Copyright Benoit Blanchon 2014
  2. // MIT License
  3. //
  4. // Arduino JSON library
  5. // https://github.com/bblanchon/ArduinoJson
  6. #pragma once
  7. #include "ForwardDeclarations.hpp"
  8. #include "JsonArrayIterator.hpp"
  9. #include "JsonArrayConstIterator.hpp"
  10. #include "JsonPrintable.hpp"
  11. namespace ArduinoJson {
  12. class JsonArray : public JsonPrintable {
  13. public:
  14. typedef JsonValue value_type;
  15. typedef JsonArrayIterator iterator;
  16. typedef JsonArrayConstIterator const_iterator;
  17. JsonArray(JsonBuffer *buffer = NULL) : _buffer(buffer), _firstNode(NULL) {}
  18. int size() const;
  19. value_type &operator[](int index) const;
  20. value_type &add();
  21. template <typename T>
  22. void add(T value) {
  23. add().set(value);
  24. }
  25. JsonArray &createNestedArray();
  26. JsonObject &createNestedObject();
  27. iterator begin() { return iterator(_firstNode); }
  28. iterator end() { return iterator(0); }
  29. const_iterator begin() const { return const_iterator(_firstNode); }
  30. const_iterator end() const { return const_iterator(0); }
  31. static JsonArray &invalid() { return _invalid; }
  32. virtual void writeTo(Internals::JsonWriter &writer) const;
  33. private:
  34. inline void addNode(Internals::JsonArrayNode *node);
  35. JsonBuffer *_buffer;
  36. Internals::JsonArrayNode *_firstNode;
  37. static JsonArray _invalid;
  38. };
  39. }