1 #ifndef SINGLEDOCPARSER_H_62B23520_7C8E_11DE_8A39_0800200C9A66 2 #define SINGLEDOCPARSER_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 14 #include "yaml-cpp/anchor.h" 17 class CollectionStack;
18 template <
int>
class DepthGuard;
26 class SingleDocParser {
28 SingleDocParser(Scanner& scanner,
const Directives& directives);
29 SingleDocParser(
const SingleDocParser&) =
delete;
30 SingleDocParser(SingleDocParser&&) =
delete;
31 SingleDocParser& operator=(
const SingleDocParser&) =
delete;
32 SingleDocParser& operator=(SingleDocParser&&) =
delete;
35 void HandleDocument(EventHandler& eventHandler);
38 void HandleNode(EventHandler& eventHandler);
40 void HandleSequence(EventHandler& eventHandler);
41 void HandleBlockSequence(EventHandler& eventHandler);
42 void HandleFlowSequence(EventHandler& eventHandler);
44 void HandleMap(EventHandler& eventHandler);
45 void HandleBlockMap(EventHandler& eventHandler);
46 void HandleFlowMap(EventHandler& eventHandler);
47 void HandleCompactMap(EventHandler& eventHandler);
48 void HandleCompactMapWithNoKey(EventHandler& eventHandler);
50 void ParseProperties(std::string& tag, anchor_t& anchor,
51 std::string& anchor_name);
52 void ParseTag(std::string& tag);
53 void ParseAnchor(anchor_t& anchor, std::string& anchor_name);
55 anchor_t RegisterAnchor(
const std::string& name);
56 anchor_t LookupAnchor(
const Mark& mark,
const std::string& name)
const;
61 const Directives& m_directives;
62 std::unique_ptr<CollectionStack> m_pCollectionStack;
64 using Anchors = std::map<std::string, anchor_t>;
71 #endif // SINGLEDOCPARSER_H_62B23520_7C8E_11DE_8A39_0800200C9A66