From 5e17d609ae59dc07514e2af945db05be05db968c Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 13 Aug 2010 15:34:58 +0200 Subject: Do not generate query support code by default Add the --generate-query option to explicitly request this functionality. --- odb/mysql/header.cxx | 64 +++++++++++++++++++++++--------------- odb/mysql/inline.cxx | 37 +++++++++++----------- odb/mysql/source.cxx | 86 +++++++++++++++++++++++++++++----------------------- 3 files changed, 107 insertions(+), 80 deletions(-) (limited to 'odb/mysql') diff --git a/odb/mysql/header.cxx b/odb/mysql/header.cxx index 0d3e3f7..bbf12bb 100644 --- a/odb/mysql/header.cxx +++ b/odb/mysql/header.cxx @@ -288,22 +288,27 @@ namespace mysql // id_image_type_.traverse (c); - // query_base_type + // query_type & query_base_type // - os << "typedef mysql::query query_base_type;" - << endl; + if (options.generate_query ()) + { + // query_base_type + // + os << "typedef mysql::query query_base_type;" + << endl; - // query_type - // - os << "struct query_type: query_base_type" - << "{"; + // query_type + // + os << "struct query_type: query_base_type" + << "{"; - names (c, query_column_names_); + names (c, query_column_names_); - os << "query_type ();" - << "query_type (const std::string&);" - << "query_type (const query_base_type&);" - << "};"; + os << "query_type ();" + << "query_type (const std::string&);" + << "query_type (const query_base_type&);" + << "};"; + } // id_source // @@ -321,9 +326,12 @@ namespace mysql os << "static const char* const insert_query;" << "static const char* const select_query;" << "static const char* const update_query;" - << "static const char* const delete_query;" - << "static const char* const select_prefix;" - << endl; + << "static const char* const delete_query;"; + + if (options.generate_query ()) + os << "static const char* const select_prefix;"; + + os << endl; // id () // @@ -391,9 +399,10 @@ namespace mysql // query () // - os << "static result" << endl - << "query (database&, const query_type&);" - << endl; + if (options.generate_query ()) + os << "static result" << endl + << "query (database&, const query_type&);" + << endl; // Helpers. // @@ -439,14 +448,19 @@ namespace mysql ctx.os << "#include " << endl << "#include " << endl - << "#include " << endl - << "#include " << endl - << "#include " << endl - << endl + << "#include " << endl; + + if (ctx.options.generate_query ()) + ctx.os << "#include " << endl; + + ctx.os << endl << "#include " << endl - << "#include " << endl - << "#include " << endl - << endl; + << "#include " << endl; + + if (ctx.options.generate_query ()) + ctx.os << "#include " << endl; + + ctx.os << endl; ctx.os << "namespace odb" << "{"; diff --git a/odb/mysql/inline.cxx b/odb/mysql/inline.cxx index 0924077..1bb5fef 100644 --- a/odb/mysql/inline.cxx +++ b/odb/mysql/inline.cxx @@ -47,25 +47,28 @@ namespace mysql // query_type // - os << "inline" << endl - << traits << "::query_type::" << endl - << "query_type ()" - << "{" - << "}"; + if (options.generate_query ()) + { + os << "inline" << endl + << traits << "::query_type::" << endl + << "query_type ()" + << "{" + << "}"; - os << "inline" << endl - << traits << "::query_type::" << endl - << "query_type (const std::string& q)" << endl - << " : query_base_type (q)" - << "{" - << "}"; + os << "inline" << endl + << traits << "::query_type::" << endl + << "query_type (const std::string& q)" << endl + << " : query_base_type (q)" + << "{" + << "}"; - os << "inline" << endl - << traits << "::query_type::" << endl - << "query_type (const query_base_type& q)" << endl - << " : query_base_type (q)" - << "{" - << "}"; + os << "inline" << endl + << traits << "::query_type::" << endl + << "query_type (const query_base_type& q)" << endl + << " : query_base_type (q)" + << "{" + << "}"; + } // id () // diff --git a/odb/mysql/source.cxx b/odb/mysql/source.cxx index 0e8d420..a9f8a99 100644 --- a/odb/mysql/source.cxx +++ b/odb/mysql/source.cxx @@ -674,6 +674,7 @@ namespace mysql // query columns // + if (options.generate_query ()) { query_column t (*this, c); traversal::names n (t); @@ -740,18 +741,21 @@ namespace mysql // select_prefix // - os << "const char* const " << traits << "::select_prefix =" << endl - << "\"SELECT \"" << endl; - + if (options.generate_query ()) { - member_column m (*this); - traversal::names n (m); - names (c, n); - } + os << "const char* const " << traits << "::select_prefix =" << endl + << "\"SELECT \"" << endl; - os << "\"" << endl - << "\" FROM `" << table_name (c) << "` \";" - << endl; + { + member_column m (*this); + traversal::names n (m); + names (c, n); + } + + os << "\"" << endl + << "\" FROM `" << table_name (c) << "` \";" + << endl; + } // grow () // @@ -971,31 +975,34 @@ namespace mysql // query () // - os << "result< " << traits << "::object_type >" << endl - << traits << "::" << endl - << "query (database&, const query_type& q)" - << "{" - << "using namespace mysql;" - << endl - << "connection& conn (mysql::transaction::current ().connection ());" - << "object_statements& sts (" << endl - << "conn.statement_cache ().find ());" - << endl - << "binding& imb (sts.image_binding ());" - << "if (imb.version == 0)" << endl - << "bind (imb, sts.image ());" - << endl - << "shared_ptr st (" << endl - << "new (shared) query_statement (conn," << endl - << "select_prefix + q.clause ()," << endl - << "imb," << endl - << "q.parameters ()));" - << "st->execute ();" - << endl - << "shared_ptr > r (" << endl - << "new (shared) mysql::result_impl (st, sts));" - << "return result (r);" - << "}"; + if (options.generate_query ()) + { + os << "result< " << traits << "::object_type >" << endl + << traits << "::" << endl + << "query (database&, const query_type& q)" + << "{" + << "using namespace mysql;" + << endl + << "connection& conn (mysql::transaction::current ().connection ());" + << "object_statements& sts (" << endl + << "conn.statement_cache ().find ());" + << endl + << "binding& imb (sts.image_binding ());" + << "if (imb.version == 0)" << endl + << "bind (imb, sts.image ());" + << endl + << "shared_ptr st (" << endl + << "new (shared) query_statement (conn," << endl + << "select_prefix + q.clause ()," << endl + << "imb," << endl + << "q.parameters ()));" + << "st->execute ();" + << endl + << "shared_ptr > r (" << endl + << "new (shared) mysql::result_impl (st, sts));" + << "return result (r);" + << "}"; + } } private: @@ -1034,9 +1041,12 @@ namespace mysql << "#include " << endl << "#include " << endl << "#include " << endl - << "#include " << endl - << "#include " << endl - << endl; + << "#include " << endl; + + if (ctx.options.generate_query ()) + ctx.os << "#include " << endl; + + ctx.os << endl; ctx.os << "namespace odb" << "{"; -- cgit v1.1