memory.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #ifndef VALUE_DETAIL_MEMORY_H_62B23520_7C8E_11DE_8A39_0800200C9A66
  2. #define VALUE_DETAIL_MEMORY_H_62B23520_7C8E_11DE_8A39_0800200C9A66
  3. #if defined(_MSC_VER) || \
  4. (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \
  5. (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4
  6. #pragma once
  7. #endif
  8. #include <set>
  9. #include "yaml-cpp/dll.h"
  10. #include "yaml-cpp/node/ptr.h"
  11. namespace YAML {
  12. namespace detail {
  13. class node;
  14. } // namespace detail
  15. } // namespace YAML
  16. namespace YAML {
  17. namespace detail {
  18. class YAML_CPP_API memory {
  19. public:
  20. memory() : m_nodes{} {}
  21. node& create_node();
  22. void merge(const memory& rhs);
  23. private:
  24. using Nodes = std::set<shared_node>;
  25. Nodes m_nodes;
  26. };
  27. class YAML_CPP_API memory_holder {
  28. public:
  29. memory_holder() : m_pMemory(new memory) {}
  30. node& create_node() { return m_pMemory->create_node(); }
  31. void merge(memory_holder& rhs);
  32. private:
  33. shared_memory m_pMemory;
  34. };
  35. } // namespace detail
  36. } // namespace YAML
  37. #endif // VALUE_DETAIL_MEMORY_H_62B23520_7C8E_11DE_8A39_0800200C9A66