diff options
author | Constantin Michael <constantin@codesynthesis.com> | 2011-06-29 08:32:36 +0200 |
---|---|---|
committer | Constantin Michael <constantin@codesynthesis.com> | 2011-07-05 14:43:38 +0200 |
commit | e12f2adb8f345ecbff5d92d6bd2ba672769bd410 (patch) | |
tree | 9d04023bc9c9d920a37e8bf328034dd572afb945 /odb/relational/pgsql/header.cxx | |
parent | ba529a8179f27d3ccbc584925fde6cd270f790ce (diff) |
Implement PostgreSQL container statement name and types array generation
Diffstat (limited to 'odb/relational/pgsql/header.cxx')
-rw-r--r-- | odb/relational/pgsql/header.cxx | 63 |
1 files changed, 45 insertions, 18 deletions
diff --git a/odb/relational/pgsql/header.cxx b/odb/relational/pgsql/header.cxx index 172bf03..e66529e 100644 --- a/odb/relational/pgsql/header.cxx +++ b/odb/relational/pgsql/header.cxx @@ -23,28 +23,55 @@ namespace relational virtual void object_public_extra_post (type& t) { - if (!abstract (t)) - { - // Statement names. - // - os << "static const char* const persist_statement_name;" - << "static const char* const find_statement_name;" - << "static const char* const update_statement_name;" - << "static const char* const erase_statement_name;" - << endl; - - // Statement oids. - // - os << "static const Oid persist_statement_types[];" - << "static const Oid find_statement_types[];" - << "static const Oid update_statement_types[];" - << "static const Oid erase_statement_types[];" - << endl; - } + if (abstract (t)) + return; + + // Statement names. + // + os << "static const char* const persist_statement_name;" + << "static const char* const find_statement_name;" + << "static const char* const update_statement_name;" + << "static const char* const erase_statement_name;" + << endl; + + // Statement types. + // + os << "static const Oid persist_statement_types[];" + << "static const Oid find_statement_types[];" + << "static const Oid update_statement_types[];" + << "static const Oid erase_statement_types[];" + << endl; } }; entry<class_> class_entry_; + struct container_traits: relational::container_traits, context + { + container_traits (base const& x): base (x) {} + + virtual void + container_public_extra_pre (semantics::data_member&) + { + if (abstract (c_)) + return; + + // Container statement names. + // + os << "static const char* const select_all_name;" + << "static const char* const insert_one_name;" + << "static const char* const delete_all_name;" + << endl; + + // Container statement types. + // + os << "static const Oid select_all_types[];" + << "static const Oid insert_one_types[];" + << "static const Oid delete_all_types[];" + << endl; + } + }; + entry<container_traits> container_traits_; + struct image_member: relational::image_member, member_base { image_member (base const& x) |