1 #ifndef NODE_NODEBUILDER_H_62B23520_7C8E_11DE_8A39_0800200C9A66 2 #define NODE_NODEBUILDER_H_62B23520_7C8E_11DE_8A39_0800200C9A66 4 #if defined(_MSC_VER) || \ 5 (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ 6 (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 12 #include "yaml-cpp/anchor.h" 13 #include "yaml-cpp/emitterstyle.h" 14 #include "yaml-cpp/eventhandler.h" 15 #include "yaml-cpp/node/ptr.h" 27 class NodeBuilder :
public EventHandler {
30 NodeBuilder(
const NodeBuilder&) =
delete;
31 NodeBuilder(NodeBuilder&&) =
delete;
32 NodeBuilder& operator=(
const NodeBuilder&) =
delete;
33 NodeBuilder& operator=(NodeBuilder&&) =
delete;
34 ~NodeBuilder()
override;
38 void OnDocumentStart(
const Mark& mark)
override;
39 void OnDocumentEnd()
override;
41 void OnNull(
const Mark& mark, anchor_t anchor)
override;
42 void OnAlias(
const Mark& mark, anchor_t anchor)
override;
43 void OnScalar(
const Mark& mark,
const std::string& tag,
44 anchor_t anchor,
const std::string& value)
override;
46 void OnSequenceStart(
const Mark& mark,
const std::string& tag,
47 anchor_t anchor, EmitterStyle::value style)
override;
48 void OnSequenceEnd()
override;
50 void OnMapStart(
const Mark& mark,
const std::string& tag,
51 anchor_t anchor, EmitterStyle::value style)
override;
52 void OnMapEnd()
override;
55 detail::node& Push(
const Mark& mark, anchor_t anchor);
56 void Push(detail::node& node);
58 void RegisterAnchor(anchor_t anchor, detail::node& node);
61 detail::shared_memory_holder m_pMemory;
62 detail::node* m_pRoot;
64 using Nodes = std::vector<detail::node *>;
68 using PushedKey = std::pair<detail::node*, bool>;
69 std::vector<PushedKey> m_keys;
70 std::size_t m_mapDepth;
74 #endif // NODE_NODEBUILDER_H_62B23520_7C8E_11DE_8A39_0800200C9A66