StaticJsonBuffer.h 610 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #pragma once
  2. #include "JsonBuffer.h"
  3. #include "JsonObject.h"
  4. template<int CAPACITY>
  5. class StaticJsonBuffer : public JsonBuffer
  6. {
  7. friend JsonObject;
  8. public:
  9. explicit StaticJsonBuffer()
  10. : _size(0)
  11. {
  12. }
  13. virtual ~StaticJsonBuffer() {}
  14. int capacity()
  15. {
  16. return CAPACITY;
  17. }
  18. int size()
  19. {
  20. return _size;
  21. }
  22. protected:
  23. virtual JsonNode* allocateNode()
  24. {
  25. if (_size >= CAPACITY) return 0;
  26. return &_buffer[_size++];
  27. }
  28. private:
  29. JsonNode _buffer[CAPACITY];
  30. int _size;
  31. };