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