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