From d001ec3018787138c2db6c5f6949a00807582774 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Wed, 21 Sep 2011 13:00:34 +0200 Subject: Rework const object handling Now objects are always loaded as non-const and the object cache in session treats all objects as non-const. --- odb/relational/source.hxx | 70 +++++++++-------------------------------------- 1 file changed, 13 insertions(+), 57 deletions(-) (limited to 'odb/relational/source.hxx') diff --git a/odb/relational/source.hxx b/odb/relational/source.hxx index 92a406b..3474f15 100644 --- a/odb/relational/source.hxx +++ b/odb/relational/source.hxx @@ -2706,12 +2706,9 @@ namespace relational { // query () // - os << "template<>" << endl - << "result< " << traits << "::object_type >" << endl + os << "result< " << traits << "::object_type >" << endl << traits << "::" << endl - << "query< " << traits << "::object_type > (" << endl - << "database& db," << endl - << "const query_base_type& q)" + << "query (database&, const query_base_type& q)" << "{" << "using namespace " << db << ";" << "using odb::details::shared;" @@ -2722,55 +2719,6 @@ namespace relational << endl << "object_statements< object_type >& sts (" << endl << "conn.statement_cache ().find_object ());" - << "shared_ptr st;" - << endl - << "query_ (db, q, sts, st);" - << endl - << "shared_ptr > r (" << endl - << "new (shared) " << db << - "::result_impl (" << endl - << "q, st, sts));" - << endl - << "return result (r);" - << "}"; - - os << "template<>" << endl - << "result< const " << traits << "::object_type >" << endl - << traits << "::" << endl - << "query< const " << traits << "::object_type > (" << endl - << "database& db," << endl - << "const query_base_type& q)" - << "{" - << "using namespace " << db << ";" - << "using odb::details::shared;" - << "using odb::details::shared_ptr;" - << endl - << db << "::connection& conn (" << endl - << db << "::transaction::current ().connection ());" - << endl - << "object_statements< object_type >& sts (" << endl - << "conn.statement_cache ().find_object ());" - << "shared_ptr st;" - << endl - << "query_ (db, q, sts, st);" - << endl - << "shared_ptr > r (" << endl - << "new (shared) " << db << - "::result_impl (" << endl - << "q, st, sts));" - << endl - << "return result (r);" - << "}"; - - os << "void " << traits << "::" << endl - << "query_ (database&," << endl - << "const query_base_type& q," << endl - << db << "::object_statements< object_type >& sts," << endl - << "odb::details::shared_ptr<" << db << "::select_statement>& st)" - << "{" - << "using namespace " << db << ";" << endl << "image_type& im (sts.image ());" << "binding& imb (sts.out_image_binding ());" @@ -2781,8 +2729,8 @@ namespace relational << "sts.out_image_version (im.version);" << "imb.version++;" << "}" - << "st.reset (new (odb::details::shared) select_statement (" - << endl; + << "shared_ptr st (" << endl + << "new (shared) select_statement (" << endl; object_query_statement_ctor_args (c); @@ -2791,7 +2739,15 @@ namespace relational post_query_ (c); - os << "}"; + os << endl + << "shared_ptr > r (" << endl + << "new (shared) " << db << + "::result_impl (" << endl + << "q, st, sts));" + << endl + << "return result (r);" + << "}"; // erase_query // -- cgit v1.1