memory.h 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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. node& create_node();
  21. void merge(const memory& rhs);
  22. private:
  23. typedef std::set<shared_node> Nodes;
  24. Nodes m_nodes;
  25. };
  26. class YAML_CPP_API memory_holder {
  27. public:
  28. memory_holder() : m_pMemory(new memory) {}
  29. node& create_node() { return m_pMemory->create_node(); }
  30. void merge(memory_holder& rhs);
  31. private:
  32. shared_memory m_pMemory;
  33. };
  34. }
  35. }
  36. #endif // VALUE_DETAIL_MEMORY_H_62B23520_7C8E_11DE_8A39_0800200C9A66