summaryrefslogtreecommitdiff
path: root/odb/odb/sql-token.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'odb/odb/sql-token.cxx')
-rw-r--r--odb/odb/sql-token.cxx44
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 ();
+}