yaml-cpp/src/token.h

86 lines
1.7 KiB
C
Raw Normal View History

2009-07-30 02:27:20 +04:00
#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
2009-07-30 02:27:20 +04:00
#include "yaml-cpp/mark.h"
2010-05-02 00:05:15 +04:00
#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",
2009-07-30 10:49:09 +04:00
"SCALAR"
};
struct Token {
2009-09-05 06:28:11 +04:00
// 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,
2009-09-05 06:28:11 +04:00
FLOW_ENTRY,
KEY,
VALUE,
ANCHOR,
ALIAS,
TAG,
PLAIN_SCALAR,
NON_PLAIN_SCALAR
2009-09-05 06:28:11 +04:00
};
2009-09-05 06:28:11 +04:00
// 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;
}
2009-09-05 06:28:11 +04:00
STATUS status;
TYPE type;
Mark mark;
std::string value;
std::vector <std::string> params;
int data;
};
}
2009-07-30 02:27:20 +04:00
#endif // TOKEN_H_62B23520_7C8E_11DE_8A39_0800200C9A66