/src/trafficserver/lib/yamlcpp/include/yaml-cpp/emitfromevents.h
Line | Count | Source |
1 | | #ifndef EMITFROMEVENTS_H_62B23520_7C8E_11DE_8A39_0800200C9A66 |
2 | | #define EMITFROMEVENTS_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 <stack> |
11 | | |
12 | | #include "yaml-cpp/anchor.h" |
13 | | #include "yaml-cpp/emitterstyle.h" |
14 | | #include "yaml-cpp/eventhandler.h" |
15 | | |
16 | | namespace YAML { |
17 | | struct Mark; |
18 | | } // namespace YAML |
19 | | |
20 | | namespace YAML { |
21 | | class Emitter; |
22 | | |
23 | | class EmitFromEvents : public EventHandler { |
24 | | public: |
25 | | EmitFromEvents(Emitter& emitter); |
26 | 0 | ~EmitFromEvents() override = default; |
27 | | |
28 | | void OnDocumentStart(const Mark& mark) override; |
29 | | void OnDocumentEnd() override; |
30 | | |
31 | | void OnNull(const Mark& mark, anchor_t anchor) override; |
32 | | void OnAlias(const Mark& mark, anchor_t anchor) override; |
33 | | void OnScalar(const Mark& mark, const std::string& tag, |
34 | | anchor_t anchor, const std::string& value) override; |
35 | | |
36 | | void OnSequenceStart(const Mark& mark, const std::string& tag, |
37 | | anchor_t anchor, EmitterStyle::value style) override; |
38 | | void OnSequenceEnd() override; |
39 | | |
40 | | void OnMapStart(const Mark& mark, const std::string& tag, |
41 | | anchor_t anchor, EmitterStyle::value style) override; |
42 | | void OnMapEnd() override; |
43 | | |
44 | | private: |
45 | | void BeginNode(); |
46 | | void EmitProps(const std::string& tag, anchor_t anchor); |
47 | | |
48 | | private: |
49 | | Emitter& m_emitter; |
50 | | |
51 | | struct State { |
52 | | enum value { WaitingForSequenceEntry, WaitingForKey, WaitingForValue }; |
53 | | }; |
54 | | std::stack<State::value> m_stateStack; |
55 | | }; |
56 | | } |
57 | | |
58 | | #endif // EMITFROMEVENTS_H_62B23520_7C8E_11DE_8A39_0800200C9A66 |