2008-06-26 13:05:28 +04:00
|
|
|
#pragma once
|
|
|
|
|
|
2008-06-28 00:54:43 +04:00
|
|
|
#include <ios>
|
|
|
|
|
|
2008-06-26 13:05:28 +04:00
|
|
|
namespace YAML
|
|
|
|
|
{
|
2008-06-28 00:54:43 +04:00
|
|
|
struct Token {
|
2008-06-28 10:36:59 +04:00
|
|
|
Token(): isValid(true), isPossible(true) {}
|
2008-06-28 00:54:43 +04:00
|
|
|
virtual ~Token() {}
|
|
|
|
|
virtual void Write(std::ostream& out) const {}
|
|
|
|
|
|
|
|
|
|
friend std::ostream& operator << (std::ostream& out, const Token& token) { token.Write(out); return out; }
|
2008-06-28 10:36:59 +04:00
|
|
|
bool isValid, isPossible;
|
2008-06-27 04:18:52 +04:00
|
|
|
};
|
2008-06-28 00:54:43 +04:00
|
|
|
|
|
|
|
|
struct StreamStartToken: public Token {};
|
|
|
|
|
struct StreamEndToken: public Token {};
|
|
|
|
|
struct DocumentStartToken: public Token {};
|
|
|
|
|
struct DocumentEndToken: public Token {};
|
|
|
|
|
|
|
|
|
|
struct BlockSeqStartToken: public Token {};
|
|
|
|
|
struct BlockMapStartToken: public Token {};
|
|
|
|
|
struct BlockEndToken: public Token {};
|
|
|
|
|
struct BlockEntryToken: public Token {};
|
|
|
|
|
|
|
|
|
|
struct FlowSeqStartToken: public Token {};
|
|
|
|
|
struct FlowMapStartToken: public Token {};
|
|
|
|
|
struct FlowSeqEndToken: public Token {};
|
|
|
|
|
struct FlowMapEndToken: public Token {};
|
|
|
|
|
struct FlowEntryToken: public Token {};
|
|
|
|
|
|
|
|
|
|
struct KeyToken: public Token {};
|
|
|
|
|
struct ValueToken: public Token {};
|
2008-06-29 04:33:34 +04:00
|
|
|
struct AnchorToken: public Token {
|
|
|
|
|
bool alias;
|
|
|
|
|
std::string value;
|
|
|
|
|
|
|
|
|
|
virtual void Write(std::ostream& out) const { out << (alias ? '*' : '&') << value; }
|
|
|
|
|
};
|
2008-06-28 00:54:43 +04:00
|
|
|
|
|
|
|
|
struct ScalarToken: public Token {
|
|
|
|
|
std::string value;
|
|
|
|
|
virtual void Write(std::ostream& out) const { out << value; }
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct PlainScalarToken: public ScalarToken {};
|
2008-06-29 07:11:25 +04:00
|
|
|
struct QuotedScalarToken: public ScalarToken {
|
|
|
|
|
bool single;
|
|
|
|
|
virtual void Write(std::ostream& out) const { out << (single ? '\'' : '\"') << value << (single ? '\'' : '\"'); }
|
|
|
|
|
};
|
|
|
|
|
|
2008-06-29 00:08:21 +04:00
|
|
|
struct BlockScalarToken: public ScalarToken {};
|
2008-06-26 13:05:28 +04:00
|
|
|
}
|