2015-02-07 16:05:48 +01:00
|
|
|
// Copyright Benoit Blanchon 2014-2015
|
2014-11-05 11:38:36 +01:00
|
|
|
// MIT License
|
|
|
|
//
|
|
|
|
// Arduino JSON library
|
|
|
|
// https://github.com/bblanchon/ArduinoJson
|
|
|
|
|
|
|
|
#include "../../include/ArduinoJson/Internals/List.hpp"
|
|
|
|
|
|
|
|
#include "../../include/ArduinoJson/JsonPair.hpp"
|
|
|
|
#include "../../include/ArduinoJson/JsonVariant.hpp"
|
|
|
|
|
|
|
|
using namespace ArduinoJson;
|
|
|
|
using namespace ArduinoJson::Internals;
|
|
|
|
|
|
|
|
template <typename T>
|
2015-05-23 15:32:50 +02:00
|
|
|
size_t List<T>::size() const {
|
|
|
|
size_t nodeCount = 0;
|
2014-11-05 11:38:36 +01:00
|
|
|
for (node_type *node = _firstNode; node; node = node->next) nodeCount++;
|
|
|
|
return nodeCount;
|
|
|
|
}
|
|
|
|
|
2015-05-25 15:38:58 +02:00
|
|
|
template <typename T>
|
|
|
|
typename List<T>::node_type *List<T>::addNewNode() {
|
|
|
|
node_type *newNode = new (_buffer) node_type();
|
|
|
|
|
|
|
|
if (_firstNode) {
|
|
|
|
node_type *lastNode = _firstNode;
|
|
|
|
while (lastNode->next) lastNode = lastNode->next;
|
|
|
|
lastNode->next = newNode;
|
|
|
|
} else {
|
|
|
|
_firstNode = newNode;
|
|
|
|
}
|
|
|
|
|
|
|
|
return newNode;
|
|
|
|
}
|
|
|
|
|
2014-11-05 11:53:08 +01:00
|
|
|
template <typename T>
|
|
|
|
void List<T>::removeNode(node_type *nodeToRemove) {
|
|
|
|
if (!nodeToRemove) return;
|
|
|
|
if (nodeToRemove == _firstNode) {
|
|
|
|
_firstNode = nodeToRemove->next;
|
|
|
|
} else {
|
|
|
|
for (node_type *node = _firstNode; node; node = node->next)
|
|
|
|
if (node->next == nodeToRemove) node->next = nodeToRemove->next;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-12-09 20:35:01 +01:00
|
|
|
template class ArduinoJson::Internals::List<JsonPair>;
|
|
|
|
template class ArduinoJson::Internals::List<JsonVariant>;
|