Преглед на файлове

Remove `CollectionIterator::nextId_`

Benoit Blanchon преди 6 месеца
родител
ревизия
509807d3c2
променени са 2 файла, в които са добавени 9 реда и са изтрити 14 реда
  1. 3 2
      src/ArduinoJson/Collection/CollectionData.hpp
  2. 6 12
      src/ArduinoJson/Collection/CollectionImpl.hpp

+ 3 - 2
src/ArduinoJson/Collection/CollectionData.hpp

@@ -59,10 +59,11 @@ class CollectionIterator {
   }
 
  private:
-  CollectionIterator(VariantData* slot, SlotId slotId);
+  CollectionIterator(VariantData* slot, SlotId slotId)
+      : slot_(slot), currentId_(slotId) {}
 
   VariantData* slot_;
-  SlotId currentId_, nextId_;
+  SlotId currentId_;
 };
 
 class CollectionData {

+ 6 - 12
src/ArduinoJson/Collection/CollectionImpl.hpp

@@ -12,17 +12,11 @@
 
 ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
 
-inline CollectionIterator::CollectionIterator(VariantData* slot, SlotId slotId)
-    : slot_(slot), currentId_(slotId) {
-  nextId_ = slot_ ? slot_->next() : NULL_SLOT;
-}
-
 inline void CollectionIterator::next(const ResourceManager* resources) {
-  ARDUINOJSON_ASSERT(currentId_ != NULL_SLOT);
-  slot_ = resources->getVariant(nextId_);
-  currentId_ = nextId_;
-  if (slot_)
-    nextId_ = slot_->next();
+  ARDUINOJSON_ASSERT(slot_);
+  auto nextId = slot_->next();
+  slot_ = resources->getVariant(nextId);
+  currentId_ = nextId;
 }
 
 inline CollectionData::iterator CollectionData::createIterator(
@@ -104,9 +98,9 @@ inline void CollectionData::removePair(ObjectData::iterator it,
   if (it.done())
     return;
 
-  auto keySlot = it.slot_;
+  auto keySlot = it.data();
 
-  auto valueId = it.nextId_;
+  auto valueId = keySlot->next();
   auto valueSlot = resources->getVariant(valueId);
 
   // remove value slot