Stop using CollectionIterator in MsgPackSerializer

This doesn't reduce code size or stack usage, but as least it's consistent with `JsonSerializer`.
This commit is contained in:
Benoit Blanchon
2024-01-31 17:45:55 +01:00
parent 296fe79bfd
commit 2a87cc5839

View File

@ -59,10 +59,14 @@ class MsgPackSerializer : public VariantDataVisitor<size_t> {
writeByte(0xDD); writeByte(0xDD);
writeInteger(uint32_t(n)); writeInteger(uint32_t(n));
} }
for (auto it = array.createIterator(resources_); !it.done();
it.next(resources_)) { auto slotId = array.head();
it->accept(*this); while (slotId != NULL_SLOT) {
auto slot = resources_->getSlot(slotId);
slot->data()->accept(*this);
slotId = slot->next();
} }
return bytesWritten(); return bytesWritten();
} }
@ -77,11 +81,15 @@ class MsgPackSerializer : public VariantDataVisitor<size_t> {
writeByte(0xDF); writeByte(0xDF);
writeInteger(uint32_t(n)); writeInteger(uint32_t(n));
} }
for (auto it = object.createIterator(resources_); !it.done();
it.next(resources_)) { auto slotId = object.head();
visit(it.key()); while (slotId != NULL_SLOT) {
it->accept(*this); auto slot = resources_->getSlot(slotId);
visit(slot->key());
slot->data()->accept(*this);
slotId = slot->next();
} }
return bytesWritten(); return bytesWritten();
} }