diff options
Diffstat (limited to 'odb/relational')
-rw-r--r-- | odb/relational/pgsql/header.cxx | 13 | ||||
-rw-r--r-- | odb/relational/pgsql/source.cxx | 40 |
2 files changed, 43 insertions, 10 deletions
diff --git a/odb/relational/pgsql/header.cxx b/odb/relational/pgsql/header.cxx index 1622aff..8a606bd 100644 --- a/odb/relational/pgsql/header.cxx +++ b/odb/relational/pgsql/header.cxx @@ -21,9 +21,9 @@ namespace relational class_ (base const& x): base (x) {} virtual void - object_public_extra_post (type& t) + object_public_extra_post (type& c) { - if (abstract (t)) + if (abstract (c)) return; // Statement names. @@ -50,6 +50,15 @@ namespace relational << endl; } + + virtual void + view_public_extra_post (type&) + { + // Statement names. + // + os << "static const char* const query_statement_name;" + << endl; + } }; entry<class_> class_entry_; diff --git a/odb/relational/pgsql/source.cxx b/odb/relational/pgsql/source.cxx index da9d0d7..e21e2f5 100644 --- a/odb/relational/pgsql/source.cxx +++ b/odb/relational/pgsql/source.cxx @@ -873,14 +873,14 @@ namespace relational } virtual void - object_extra (type& t) + object_extra (type& c) { - if (abstract (t)) + if (abstract (c)) return; - string const& tn (t.fq_name ()); - string traits ("access::object_traits< " + tn + " >::"); - string const& fn (flat_name (tn)); + string const& n (c.fq_name ()); + string traits ("access::object_traits< " + n + " >::"); + string const& fn (flat_name (n)); string name_decl ("const char* const " + traits); os << name_decl << endl @@ -912,7 +912,7 @@ namespace relational // Statement types. // string oid_decl ("const unsigned int " + traits); - semantics::data_member* id_m (id_member (t)); + semantics::data_member* id_m (id_member (c)); // persist_statement_types. // @@ -922,7 +922,7 @@ namespace relational << "{"; instance<statement_oids> st; - st->traverse (t); + st->traverse (c); os << "};"; } @@ -948,7 +948,7 @@ namespace relational << "{"; instance<statement_oids> st; - st->traverse (t); + st->traverse (c); st->traverse_column (*id_m, "", false); os << "};"; @@ -969,6 +969,19 @@ namespace relational } virtual void + view_extra (type& c) + { + string const& n (c.fq_name ()); + string traits ("access::view_traits< " + n + " >::"); + string const& fn (flat_name (n)); + string name_decl ("const char* const " + traits); + + os << name_decl << endl + << "query_statement_name = " << strlit (fn + "_query") << ";" + << endl; + } + + virtual void object_query_statement_ctor_args (type&) { os << "sts.connection ()," << endl @@ -991,6 +1004,17 @@ namespace relational << "q.parameters_binding ()"; } + virtual void + view_query_statement_ctor_args (type&) + { + os << "sts.connection ()," << endl + << "query_statement_name," << endl + << "query_statement + q.clause (\"\")," << endl + << "q.parameter_types ()," << endl + << "q.parameter_count ()," << endl + << "q.parameters_binding ()," << endl + << "imb"; + } virtual void post_query_ (type&) |