current.value += '\n';
break;
case 'r':
- current.value += '\t';
+ current.value += '\r';
break;
case 't':
current.value += '\t';
}
-void TokenStreamReader::Assert(Token::Type t) {
+void TokenStreamReader::Assert(Token::Type t) const {
if (GetType() != t) {
stringstream s;
s << "unexpected token in input stream: expected " << t << ", but got " << in.Current();
out = GetValue();
}
+void TokenStreamReader::ReadRelaxedString(string &out) {
+ out = GetString();
+}
+
void TokenStreamReader::ReadVec(glm::vec2 &v) {
Skip(Token::BRACKET_OPEN);
bool TokenStreamReader::GetBool() {
Next();
+ return AsBool();
+}
+
+bool TokenStreamReader::AsBool() const {
switch (GetType()) {
case Token::NUMBER:
- return GetInt() != 0;
+ return AsInt() != 0;
case Token::IDENTIFIER:
case Token::STRING:
if (GetValue() == "true" || GetValue() == "yes" || GetValue() == "on") {
float TokenStreamReader::GetFloat() {
Next();
+ return AsFloat();
+}
+
+float TokenStreamReader::AsFloat() const {
Assert(Token::NUMBER);
return stof(GetValue());
}
int TokenStreamReader::GetInt() {
Next();
+ return AsInt();
+}
+
+int TokenStreamReader::AsInt() const {
Assert(Token::NUMBER);
return stoi(GetValue());
}
unsigned long TokenStreamReader::GetULong() {
Next();
+ return AsULong();
+}
+
+unsigned long TokenStreamReader::AsULong() const {
Assert(Token::NUMBER);
return stoul(GetValue());
}
+const string &TokenStreamReader::GetString() {
+ Next();
+ return AsString();
+}
+
+const string &TokenStreamReader::AsString() const {
+ return GetValue();
+}
+
}