diff options
Diffstat (limited to 'odb/odb/sql-token.cxx')
-rw-r--r-- | odb/odb/sql-token.cxx | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/odb/odb/sql-token.cxx b/odb/odb/sql-token.cxx new file mode 100644 index 0000000..da9ecb2 --- /dev/null +++ b/odb/odb/sql-token.cxx @@ -0,0 +1,44 @@ +// file : odb/sql-token.cxx +// license : GNU GPL v3; see accompanying LICENSE file + +#include <ostream> + +#include <odb/sql-token.hxx> + +using namespace std; + +static char punctuation_literals[] = {';', ',', '(', ')', '='}; + +string sql_token:: +string () const +{ + switch (type ()) + { + case sql_token::t_eos: + { + return "<end-of-stream>"; + } + case sql_token::t_identifier: + { + return identifier (); + } + case sql_token::t_punctuation: + { + return std::string (1, punctuation_literals[punctuation ()]); + } + case sql_token::t_string_lit: + case sql_token::t_int_lit: + case sql_token::t_float_lit: + { + return literal (); + } + } + + return ""; +} + +ostream& +operator<< (ostream& os, sql_token const& t) +{ + return os << t.string (); +} |