List.cpp 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. // Copyright Benoit Blanchon 2014
  2. // MIT License
  3. //
  4. // Arduino JSON library
  5. // https://github.com/bblanchon/ArduinoJson
  6. #include "../../include/ArduinoJson/Internals/List.hpp"
  7. #include "../../include/ArduinoJson/Internals/PlacementNew.hpp"
  8. #include "../../include/ArduinoJson/JsonPair.hpp"
  9. #include "../../include/ArduinoJson/JsonVariant.hpp"
  10. using namespace ArduinoJson;
  11. using namespace ArduinoJson::Internals;
  12. template <typename T>
  13. int List<T>::size() const {
  14. int nodeCount = 0;
  15. for (node_type *node = _firstNode; node; node = node->next) nodeCount++;
  16. return nodeCount;
  17. }
  18. template <typename T>
  19. void List<T>::addNode(node_type *nodeToAdd) {
  20. if (_firstNode) {
  21. node_type *lastNode = _firstNode;
  22. while (lastNode->next) lastNode = lastNode->next;
  23. lastNode->next = nodeToAdd;
  24. } else {
  25. _firstNode = nodeToAdd;
  26. }
  27. }
  28. template <typename T>
  29. void List<T>::removeNode(node_type *nodeToRemove) {
  30. if (!nodeToRemove) return;
  31. if (nodeToRemove == _firstNode) {
  32. _firstNode = nodeToRemove->next;
  33. } else {
  34. for (node_type *node = _firstNode; node; node = node->next)
  35. if (node->next == nodeToRemove) node->next = nodeToRemove->next;
  36. }
  37. }
  38. template class List<JsonPair>;
  39. template class List<JsonVariant>;