#ifndef NODE_NODE_H_62B23520_7C8E_11DE_8A39_0800200C9A66 #define NODE_NODE_H_62B23520_7C8E_11DE_8A39_0800200C9A66 #if defined(_MSC_VER) || (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 #pragma once #endif #include "yaml-cpp/dll.h" #include "yaml-cpp/node/ptr.h" #include "yaml-cpp/node/type.h" #include "yaml-cpp/node/detail/iterator_fwd.h" #include namespace YAML { class Node { public: friend class NodeBuilder; friend class NodeEvents; friend class detail::node_data; template friend class detail::iterator_base; Node(); explicit Node(NodeType::value type); template explicit Node(const T& rhs); Node(const Node& rhs); ~Node(); NodeType::value Type() const; // access template const T as() const; const std::string& scalar() const; // assignment bool is(const Node& rhs) const; template Node& operator=(const T& rhs); Node& operator=(const Node& rhs); // size/iterator std::size_t size() const; const_iterator begin() const; iterator begin(); const_iterator end() const; iterator end(); // sequence template void append(const T& rhs); void append(const Node& rhs); // indexing template const Node operator[](const Key& key) const; template Node operator[](const Key& key); template bool remove(const Key& key); const Node operator[](const Node& key) const; Node operator[](const Node& key); bool remove(const Node& key); const Node operator[](const char *key) const; Node operator[](const char *key); bool remove(const char *key); const Node operator[](char *key) const; Node operator[](char *key); bool remove(char *key); private: explicit Node(detail::node& node, detail::shared_memory_holder pMemory); template void Assign(const T& rhs); void Assign(const char *rhs); void Assign(char *rhs); void AssignData(const Node& rhs); void AssignNode(const Node& rhs); private: detail::shared_memory_holder m_pMemory; detail::node *m_pNode; }; bool operator==(const Node& lhs, const Node& rhs); template struct convert; } #endif // NODE_NODE_H_62B23520_7C8E_11DE_8A39_0800200C9A66