aboutsummaryrefslogtreecommitdiff
path: root/odb/forward.hxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2012-10-08 16:09:07 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2012-10-08 16:09:07 +0200
commitbe97326d67365e16175cc599e23348feaf80e0fe (patch)
treeb38678104546ebd549824096683bd00f3f2be299 /odb/forward.hxx
parent0b583b575ec00c544759cbf8d6481d35c34c5f63 (diff)
Ground work for multi-database support
All generated code now includes database id. The database-specific database class interface has been updated to include all the database operations. The database-specific tests now use this interface.
Diffstat (limited to 'odb/forward.hxx')
-rw-r--r--odb/forward.hxx35
1 files changed, 34 insertions, 1 deletions
diff --git a/odb/forward.hxx b/odb/forward.hxx
index 4c5e4b9..ff4a531 100644
--- a/odb/forward.hxx
+++ b/odb/forward.hxx
@@ -7,6 +7,8 @@
#include <odb/pre.hxx>
+#include <cstddef> // std::size_t
+
#include <odb/details/export.hxx>
#include <odb/details/shared-ptr-fwd.hxx>
@@ -42,25 +44,50 @@ namespace odb
// Implementation details.
//
+ // Keep real databases first since their enumerators are used as array
+ // indexes
+ //
+ enum database_id
+ {
+ id_mysql,
+ id_sqlite,
+ id_pgsql,
+ id_oracle,
+ id_mssql,
+ id_default
+ };
+
+ // Number of real databases in the database_id enum.
+ //
+ const std::size_t database_count = id_default;
+
+ // Traits.
+ //
class access
{
public:
template <typename T>
class object_traits;
+ template <typename T, database_id DB>
+ class object_traits_impl;
+
template <typename T, typename P>
class object_factory;
template <typename T>
class view_traits;
+ template <typename T, database_id DB>
+ class view_traits_impl;
+
template <typename T, typename P>
class view_factory;
template <typename T, typename P>
class pointer_factory;
- template <typename T>
+ template <typename T, database_id DB>
class composite_value_traits;
template <typename C>
@@ -70,9 +97,15 @@ namespace odb
template <typename T>
struct object_traits;
+ template <typename T, database_id DB>
+ struct object_traits_impl;
+
template <typename T>
struct view_traits;
+ template <typename T, database_id DB>
+ struct view_traits_impl;
+
// Cache traits.
//
template <typename T> struct no_id_pointer_cache_traits;