diff options
Diffstat (limited to 'odb/generator.cxx')
-rw-r--r-- | odb/generator.cxx | 55 |
1 files changed, 41 insertions, 14 deletions
diff --git a/odb/generator.cxx b/odb/generator.cxx index 630d320..8b03006 100644 --- a/odb/generator.cxx +++ b/odb/generator.cxx @@ -29,11 +29,16 @@ typedef vector<path> paths; namespace { - static char const file_header[] = + static char const cxx_file_header[] = "// This file was generated by ODB, object-relational mapping (ORM)\n" "// compiler for C++.\n" "//\n\n"; + static char const sql_file_header[] = + "/* This file was generated by ODB, object-relational mapping (ORM)\n" + " * compiler for C++.\n" + " */\n\n"; + void open (ifstream& ifs, string const& path) { @@ -228,13 +233,16 @@ generate (options const& ops, // if (gen_cxx) { - hxx << file_header; - ixx << file_header; - cxx << file_header; + hxx << cxx_file_header; + ixx << cxx_file_header; + cxx << cxx_file_header; } if (gen_sep_schema) - sch << file_header; + sch << cxx_file_header; + + if (gen_sql_schema) + sql << sql_file_header; typedef compiler::ostream_filter<compiler::cxx_indenter, char> ind_filter; typedef compiler::ostream_filter<compiler::sloc_counter, char> sloc_filter; @@ -529,10 +537,6 @@ generate (options const& ops, auto_ptr<context> ctx ( create_context (sql, unit, ops, fts, model.get ())); - // Copy prologue. - // - append (sql, ops.sql_prologue (), ops.sql_prologue_file ()); - switch (ops.database ()) { case database::mssql: @@ -541,14 +545,37 @@ generate (options const& ops, case database::pgsql: case database::sqlite: { - relational::schema::generate (); + relational::schema::generate_prologue (); + + sql << "/* Begin prologue." << endl + << " */" << endl; + append (sql, ops.sql_prologue (), ops.sql_prologue_file ()); + sql << "/*" << endl + << " * End prologue. */" << endl + << endl; + + relational::schema::generate_drop (); + + sql << "/* Begin interlude." << endl + << " */" << endl; + append (sql, ops.sql_interlude (), ops.sql_interlude_file ()); + sql << "/*" << endl + << " * End interlude. */" << endl + << endl; + + relational::schema::generate_create (); + + sql << "/* Begin epilogue." << endl + << " */" << endl; + append (sql, ops.sql_epilogue (), ops.sql_epilogue_file ()); + sql << "/*" << endl + << " * End epilogue. */" << endl + << endl; + + relational::schema::generate_epilogue (); break; } } - - // Copy epilogue. - // - append (sql, ops.sql_epilogue (), ops.sql_epilogue_file ()); } // Communicate the sloc count to the driver. This is necessary to |