From 9ad0acf37561de9bf359a561faed53de17c2ca3b Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Wed, 21 Nov 2012 13:11:43 +0200 Subject: Add dynamic multi-database query support --- odb/relational/common-query.hxx | 64 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 odb/relational/common-query.hxx (limited to 'odb/relational/common-query.hxx') diff --git a/odb/relational/common-query.hxx b/odb/relational/common-query.hxx new file mode 100644 index 0000000..2e8fdd4 --- /dev/null +++ b/odb/relational/common-query.hxx @@ -0,0 +1,64 @@ +// file : odb/relational/common-query.hxx +// copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC +// license : GNU GPL v3; see accompanying LICENSE file + +#ifndef ODB_RELATIONAL_COMMON_QUERY_HXX +#define ODB_RELATIONAL_COMMON_QUERY_HXX + +#include + +namespace relational +{ + // + // + struct query_alias_traits: ::query_alias_traits, virtual context + { + typedef query_alias_traits base_impl; + + query_alias_traits (base const& x): base (x) {} + + virtual void + generate_decl_body (); + + virtual void + generate_def (semantics::data_member&, semantics::class_&); + + virtual void + generate_def (string const& tag, semantics::class_&, string const& alias); + }; + + // + // + struct query_columns_base: ::query_columns_base, virtual context + { + typedef query_columns_base base_impl; + + query_columns_base (base const& x): base (x) {const_ = "const ";} + }; + + // + // + struct query_columns: ::query_columns, virtual context + { + typedef query_columns base_impl; + + query_columns (base const& x): base (x) {const_ = "const ";} + + virtual string + database_type_id (semantics::data_member&) = 0; + + virtual void + column_ctor (string const& type, string const& name, string const& base); + + virtual void + column_ctor_args_extra (semantics::data_member&); + + virtual void + column_common (semantics::data_member&, + string const& type, + string const& column, + string const& suffix); + }; +} + +#endif // ODB_RELATIONAL_COMMON_QUERY_HXX -- cgit v1.1