X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;ds=sidebyside;f=src%2Fio%2FTokenStreamReader.hpp;h=f1b73491447c5c662aa37b219b2e42b0d5c283db;hb=958ad20b247bbf6a0105bf246d57fc06416ebb58;hp=d4356aa3d91d0e7129ab8ea3353f545f1544d004;hpb=a50aa0f2a2fea14f5f8c56209e2ecde3088ef913;p=blank.git diff --git a/src/io/TokenStreamReader.hpp b/src/io/TokenStreamReader.hpp index d4356aa..f1b7349 100644 --- a/src/io/TokenStreamReader.hpp +++ b/src/io/TokenStreamReader.hpp @@ -3,10 +3,10 @@ #include "Token.hpp" #include "Tokenizer.hpp" +#include "../graphics/glm.hpp" #include #include -#include namespace blank { @@ -14,7 +14,7 @@ namespace blank { class TokenStreamReader { public: - TokenStreamReader(std::istream &); + explicit TokenStreamReader(std::istream &); bool HasMore(); const Token &Next(); @@ -39,13 +39,23 @@ public: void ReadQuat(glm::quat &); + // the Get* functions advance to the next token + // the As* functions try to cast the current token + // if the value could not be converted, a std::runtime_error is thrown + bool GetBool(); + bool AsBool() const; float GetFloat(); + float AsFloat() const; int GetInt(); + int AsInt() const; unsigned long GetULong(); + unsigned long AsULong() const; private: - void Assert(Token::Type); + void SkipComments(); + + void Assert(Token::Type) const; Token::Type GetType() const noexcept; const std::string &GetValue() const noexcept;