summaryrefslogtreecommitdiff
path: root/odb/relational/pgsql/header.cxx
diff options
context:
space:
mode:
authorConstantin Michael <constantin@codesynthesis.com>2011-06-29 08:32:36 +0200
committerConstantin Michael <constantin@codesynthesis.com>2011-07-05 14:43:38 +0200
commite12f2adb8f345ecbff5d92d6bd2ba672769bd410 (patch)
tree9d04023bc9c9d920a37e8bf328034dd572afb945 /odb/relational/pgsql/header.cxx
parentba529a8179f27d3ccbc584925fde6cd270f790ce (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.cxx63
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)