1 #ifndef BLANK_IO_TOKENSTREAMREADER_HPP_
2 #define BLANK_IO_TOKENSTREAMREADER_HPP_
5 #include "Tokenizer.hpp"
6 #include "../graphics/glm.hpp"
14 class TokenStreamReader {
17 explicit TokenStreamReader(std::istream &);
23 void Skip(Token::Type);
25 void ReadBoolean(bool &);
26 void ReadIdentifier(std::string &);
27 void ReadNumber(float &);
28 void ReadNumber(int &);
29 void ReadNumber(unsigned long &);
30 void ReadString(std::string &);
32 void ReadVec(glm::vec2 &);
33 void ReadVec(glm::vec3 &);
34 void ReadVec(glm::vec4 &);
36 void ReadVec(glm::ivec2 &);
37 void ReadVec(glm::ivec3 &);
38 void ReadVec(glm::ivec4 &);
40 void ReadQuat(glm::quat &);
42 // the Get* functions advance to the next token
43 // the As* functions try to cast the current token
44 // if the value could not be converted, a std::runtime_error is thrown
49 float AsFloat() const;
52 unsigned long GetULong();
53 unsigned long AsULong() const;
58 void Assert(Token::Type) const;
59 Token::Type GetType() const noexcept;
60 const std::string &GetValue() const noexcept;