#pragma once #include #include #include namespace YAML { enum TOKEN_STATUS { TS_VALID, TS_INVALID, TS_UNVERIFIED }; struct Token { Token(): status(TS_VALID) {} virtual ~Token() {} virtual void Write(std::ostream& out) const {} friend std::ostream& operator << (std::ostream& out, const Token& token) { token.Write(out); return out; } TOKEN_STATUS status; }; struct StreamStartToken: public Token {}; struct StreamEndToken: public Token {}; struct DirectiveToken: public Token { std::string name; std::vector params; virtual void Write(std::ostream& out) const { out << name; for(unsigned i=0;i