/src/trafficserver/lib/yamlcpp/src/token.h
Line | Count | Source |
1 | | #ifndef TOKEN_H_62B23520_7C8E_11DE_8A39_0800200C9A66 |
2 | | #define TOKEN_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 "yaml-cpp/mark.h" |
11 | | #include <iostream> |
12 | | #include <string> |
13 | | #include <vector> |
14 | | |
15 | | namespace YAML { |
16 | | const std::string TokenNames[] = { |
17 | | "DIRECTIVE", "DOC_START", "DOC_END", "BLOCK_SEQ_START", |
18 | | "BLOCK_MAP_START", "BLOCK_SEQ_END", "BLOCK_MAP_END", "BLOCK_ENTRY", |
19 | | "FLOW_SEQ_START", "FLOW_MAP_START", "FLOW_SEQ_END", "FLOW_MAP_END", |
20 | | "FLOW_MAP_COMPACT", "FLOW_ENTRY", "KEY", "VALUE", |
21 | | "ANCHOR", "ALIAS", "TAG", "SCALAR"}; |
22 | | |
23 | | struct Token { |
24 | | // enums |
25 | | enum STATUS { VALID, INVALID, UNVERIFIED }; |
26 | | enum TYPE { |
27 | | DIRECTIVE, |
28 | | DOC_START, |
29 | | DOC_END, |
30 | | BLOCK_SEQ_START, |
31 | | BLOCK_MAP_START, |
32 | | BLOCK_SEQ_END, |
33 | | BLOCK_MAP_END, |
34 | | BLOCK_ENTRY, |
35 | | FLOW_SEQ_START, |
36 | | FLOW_MAP_START, |
37 | | FLOW_SEQ_END, |
38 | | FLOW_MAP_END, |
39 | | FLOW_MAP_COMPACT, |
40 | | FLOW_ENTRY, |
41 | | KEY, |
42 | | VALUE, |
43 | | ANCHOR, |
44 | | ALIAS, |
45 | | TAG, |
46 | | PLAIN_SCALAR, |
47 | | NON_PLAIN_SCALAR |
48 | | }; |
49 | | |
50 | | // data |
51 | | Token(TYPE type_, const Mark& mark_) |
52 | 0 | : status(VALID), type(type_), mark(mark_), value{}, params{}, data(0) {} |
53 | | |
54 | 0 | friend std::ostream& operator<<(std::ostream& out, const Token& token) { |
55 | 0 | out << TokenNames[token.type] << std::string(": ") << token.value; |
56 | 0 | for (const std::string& param : token.params) |
57 | 0 | out << std::string(" ") << param; |
58 | 0 | return out; |
59 | 0 | } |
60 | | |
61 | | STATUS status; |
62 | | TYPE type; |
63 | | Mark mark; |
64 | | std::string value; |
65 | | std::vector<std::string> params; |
66 | | int data; |
67 | | }; |
68 | | } // namespace YAML |
69 | | |
70 | | #endif // TOKEN_H_62B23520_7C8E_11DE_8A39_0800200C9A66 |