mirror of
https://github.com/jbeder/yaml-cpp.git
synced 2025-09-09 20:51:16 +00:00
Added api sketch
This commit is contained in:
85
src/token.h
Normal file
85
src/token.h
Normal file
@@ -0,0 +1,85 @@
|
||||
#ifndef TOKEN_H_62B23520_7C8E_11DE_8A39_0800200C9A66
|
||||
#define TOKEN_H_62B23520_7C8E_11DE_8A39_0800200C9A66
|
||||
|
||||
#if !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
|
Reference in New Issue
Block a user