// file : odb/relational/schema.cxx // copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC // license : GNU GPL v3; see accompanying LICENSE file #include #include #include #include #include #include using namespace std; namespace relational { namespace schema { static char const file_header[] = "/* This file was generated by ODB, object-relational mapping (ORM)\n" " * compiler for C++.\n" " */\n\n"; void generate () { context ctx; ostream& os (ctx.os); os << file_header; instance file; file->prologue (); instance em; emitter_ostream emos (*em); schema_format f (schema_format::sql); // Drop. // { instance model (*em, emos, f); trav_rel::qnames names; instance table (*em, emos, f); instance index (*em, emos, f); model >> names; names >> table; names >> index; // Pass 1 and 2. // for (unsigned short pass (1); pass < 3; ++pass) { model->pass (pass); table->pass (pass); index->pass (pass); model->traverse (*ctx.model); } } os << endl; // Create. // { instance model (*em, emos, f); trav_rel::qnames names; instance table (*em, emos, f); instance index (*em, emos, f); model >> names; names >> table; names >> index; // Pass 1 and 2. // for (unsigned short pass (1); pass < 3; ++pass) { model->pass (pass); table->pass (pass); index->pass (pass); model->traverse (*ctx.model); } } file->epilogue (); } } }