MCPcopy Create free account
hub / github.com/bytedance/sonic-cpp / eraseMemberImpl

Method eraseMemberImpl

include/sonic/dom/dynamicnode.h:764–785  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

762 }
763
764 MemberIterator eraseMemberImpl(MemberIterator first, MemberIterator last) {
765 // Destroy map before removing members.
766 DestroyMap();
767 size_t size = this->Size();
768 MemberIterator end = this->MemberEnd();
769 if (size_t(last - first) >= size) {
770 destroy();
771 setChildren(nullptr);
772 this->subLength(size);
773 return this->MemberEnd();
774 }
775 for (MemberIterator it = first; it != last; ++it) {
776 it->name.~DNode();
777 it->value.~DNode();
778 }
779 if (first != last || last != end) {
780 std::memmove(static_cast<void*>(&(*first)), static_cast<void*>(&(*last)),
781 sizeof(MemberNode) * (end - last));
782 }
783 this->subLength(last - first);
784 return first;
785 }
786
787 DNode& pushBackImpl(DNode& value, Allocator& alloc) {
788 constexpr size_t k_default_array_cap = 16;

Callers 1

EraseMemberFunction · 0.80

Calls 2

~DNodeMethod · 0.80
SizeMethod · 0.45

Tested by

no test coverage detected