diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2011-03-10 08:44:28 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2011-03-21 15:39:59 +0200 |
commit | 7ae497743c7b042904fe1f6b4153ab3f4763ff2b (patch) | |
tree | 08ba3f742f20d16d893856ccceb070094bd69225 /odb/mysql/sql-schema.cxx | |
parent | 2436f20262a41bd1cafa5107ab6d6799c03e0964 (diff) |
Split MySQL code generator into common and db-specific parts
The common part (in relational/) still has some MySQL-specific parts.
Also, add the notion of the current context which is used to avoid
explicitly passing the context object to every generator's c-tor.
Diffstat (limited to 'odb/mysql/sql-schema.cxx')
-rw-r--r-- | odb/mysql/sql-schema.cxx | 98 |
1 files changed, 0 insertions, 98 deletions
diff --git a/odb/mysql/sql-schema.cxx b/odb/mysql/sql-schema.cxx deleted file mode 100644 index 7c71b24..0000000 --- a/odb/mysql/sql-schema.cxx +++ /dev/null @@ -1,98 +0,0 @@ -// file : odb/mysql/sql-schema.cxx -// author : Boris Kolpackov <boris@codesynthesis.com> -// copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC -// license : GNU GPL v3; see accompanying LICENSE file - -#include <odb/mysql/common.hxx> -#include <odb/mysql/schema.hxx> -#include <odb/mysql/sql-schema.hxx> - -using namespace std; - -namespace mysql -{ - namespace - { - struct schema_emitter: emitter, context - { - schema_emitter (context& c): context (c) {} - - virtual void - pre () - { - first_ = true; - } - - virtual void - line (const std::string& l) - { - if (first_) - first_ = false; - else - os << endl; - - os << l; - } - - virtual void - post () - { - os << ';' << endl - << endl; - } - - private: - bool first_; - }; - - static char const file_header[] = - "/* This file was generated by ODB, object-relational mapping (ORM)\n" - " * compiler for C++.\n" - " */\n\n"; - } - - void - generate_schema (context& ctx) - { - ctx.os << file_header; - schema_emitter emitter (ctx); - - // Drop. - // - { - traversal::unit unit; - traversal::defines unit_defines; - traversal::namespace_ ns; - class_drop c (ctx, emitter); - - unit >> unit_defines >> ns; - unit_defines >> c; - - traversal::defines ns_defines; - - ns >> ns_defines >> ns; - ns_defines >> c; - unit.dispatch (ctx.unit); - } - - ctx.os << endl; - - // Create. - // - { - traversal::unit unit; - traversal::defines unit_defines; - traversal::namespace_ ns; - class_create c (ctx, emitter); - - unit >> unit_defines >> ns; - unit_defines >> c; - - traversal::defines ns_defines; - - ns >> ns_defines >> ns; - ns_defines >> c; - unit.dispatch (ctx.unit); - } - } -} |