This commit is contained in:
Onyad
2025-09-04 18:33:17 +03:00
committed by Jesse Beder
parent 2f86d13775
commit aa8d4e4750
2 changed files with 9 additions and 0 deletions

View File

@@ -25,6 +25,7 @@ class YAML_CPP_API memory {
memory() : m_nodes{} {} memory() : m_nodes{} {}
node& create_node(); node& create_node();
void merge(const memory& rhs); void merge(const memory& rhs);
size_t size() const;
private: private:
using Nodes = std::set<shared_node>; using Nodes = std::set<shared_node>;

View File

@@ -9,6 +9,10 @@ void memory_holder::merge(memory_holder& rhs) {
if (m_pMemory == rhs.m_pMemory) if (m_pMemory == rhs.m_pMemory)
return; return;
if (m_pMemory->size() < rhs.m_pMemory->size()) {
std::swap(m_pMemory, rhs.m_pMemory);
}
m_pMemory->merge(*rhs.m_pMemory); m_pMemory->merge(*rhs.m_pMemory);
rhs.m_pMemory = m_pMemory; rhs.m_pMemory = m_pMemory;
} }
@@ -22,5 +26,9 @@ node& memory::create_node() {
void memory::merge(const memory& rhs) { void memory::merge(const memory& rhs) {
m_nodes.insert(rhs.m_nodes.begin(), rhs.m_nodes.end()); m_nodes.insert(rhs.m_nodes.begin(), rhs.m_nodes.end());
} }
size_t memory::size() const {
return m_nodes.size();
}
} // namespace detail } // namespace detail
} // namespace YAML } // namespace YAML