2012-05-20 00:34:02 +04:00
|
|
|
#include "yaml-cpp/node/detail/memory.h"
|
2014-03-23 08:14:48 +04:00
|
|
|
#include "yaml-cpp/node/detail/node.h" // IWYU pragma: keep
|
|
|
|
|
#include "yaml-cpp/node/ptr.h"
|
2012-05-20 00:34:02 +04:00
|
|
|
|
2014-03-22 22:05:03 +04:00
|
|
|
namespace YAML {
|
|
|
|
|
namespace detail {
|
2014-03-23 08:14:48 +04:00
|
|
|
|
2016-11-19 00:46:46 +03:00
|
|
|
typedef ref_holder<node> node_ref;
|
|
|
|
|
|
2014-03-22 22:05:03 +04:00
|
|
|
void memory_holder::merge(memory_holder& rhs) {
|
|
|
|
|
if (m_pMemory == rhs.m_pMemory)
|
|
|
|
|
return;
|
|
|
|
|
|
2016-11-19 00:46:46 +03:00
|
|
|
m_pMemory->merge(std::move(*rhs.m_pMemory));
|
2014-03-22 22:05:03 +04:00
|
|
|
rhs.m_pMemory = m_pMemory;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
node& memory::create_node() {
|
2016-11-19 00:46:46 +03:00
|
|
|
m_nodes.emplace_back();
|
|
|
|
|
return m_nodes.back();
|
2014-03-22 22:05:03 +04:00
|
|
|
}
|
|
|
|
|
|
2016-11-19 00:46:46 +03:00
|
|
|
void memory::merge(memory&& rhs) { m_nodes.splice(m_nodes.end(), rhs.m_nodes); }
|
|
|
|
|
|
|
|
|
|
memory_holder::memory_holder() : m_pMemory(new memory) {}
|
|
|
|
|
memory_holder::~memory_holder() {}
|
|
|
|
|
|
|
|
|
|
memory::memory() {}
|
|
|
|
|
memory::~memory() {}
|
2014-03-22 22:05:03 +04:00
|
|
|
}
|
2012-05-20 00:34:02 +04:00
|
|
|
}
|