]> git.localhorst.tv Git - l2e.git/blobdiff - src/loader/Tokenizer.h
made tokenizer and token constructors explicit
[l2e.git] / src / loader / Tokenizer.h
index f363af70bd0169684a247c3bb45262b6dbe6542a..15eadf8710e20b4d42ed550ad9b72f7697d3e2e7 100644 (file)
@@ -9,6 +9,7 @@
 #define LOADER_TOKENIZER_H_
 
 #include <iosfwd>
+#include <ostream>
 #include <string>
 
 namespace loader {
@@ -16,7 +17,7 @@ namespace loader {
 class Tokenizer {
 
 public:
-       Tokenizer(std::istream &in) : in(in), isPutback(false) { }
+       explicit Tokenizer(std::istream &in) : in(in), isPutback(false) { }
        ~Tokenizer() { }
 private:
        Tokenizer(const Tokenizer &);
@@ -46,7 +47,7 @@ public:
                };
 
                Token() : type(UNKNOWN), number(0) { }
-               Token(Type t) : type(t), number(0) { }
+               explicit Token(Type t) : type(t), number(0) { }
 
                Type type;
                std::string str;
@@ -74,6 +75,50 @@ private:
 
 };
 
+inline const char *TokenTypeToString(Tokenizer::Token::Type t) {
+       switch (t) {
+               case Tokenizer::Token::ANGLE_BRACKET_OPEN:
+                       return "ANGLE_BRACKET_OPEN";
+               case Tokenizer::Token::ANGLE_BRACKET_CLOSE:
+                       return "ANGLE_BRACKET_CLOSE";
+               case Tokenizer::Token::CHEVRON_OPEN:
+                       return "CHEVRON_OPEN";
+               case Tokenizer::Token::CHEVRON_CLOSE:
+                       return "CHEVRON_CLOSE";
+               case Tokenizer::Token::COLON:
+                       return "COLON";
+               case Tokenizer::Token::COMMA:
+                       return "COMMA";
+               case Tokenizer::Token::BRACKET_OPEN:
+                       return "BRACKET_OPEN";
+               case Tokenizer::Token::BRACKET_CLOSE:
+                       return "BRACKET_CLOSE";
+               case Tokenizer::Token::NUMBER:
+                       return "NUMBER";
+               case Tokenizer::Token::STRING:
+                       return "STRING";
+               case Tokenizer::Token::KEYWORD_EXPORT:
+                       return "KEYWORD_EXPORT";
+               case Tokenizer::Token::KEYWORD_FALSE:
+                       return "KEYWORD_FALSE";
+               case Tokenizer::Token::KEYWORD_INCLUDE:
+                       return "KEYWORD_INCLUDE";
+               case Tokenizer::Token::KEYWORD_TRUE:
+                       return "KEYWORD_TRUE";
+               case Tokenizer::Token::IDENTIFIER:
+                       return "IDENTIFIER";
+               case Tokenizer::Token::TYPE_NAME:
+                       return "TYPE_NAME";
+               default:
+                       return "UNKNOWN";
+       }
+}
+
+inline std::ostream &operator <<(std::ostream &out, Tokenizer::Token::Type t) {
+       out << TokenTypeToString(t);
+       return out;
+}
+
 }
 
 #endif /* LOADER_TOKENIZER_H_ */