summaryrefslogtreecommitdiff
path: root/libodb/odb/function-table.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'libodb/odb/function-table.hxx')
-rw-r--r--libodb/odb/function-table.hxx50
1 files changed, 50 insertions, 0 deletions
diff --git a/libodb/odb/function-table.hxx b/libodb/odb/function-table.hxx
new file mode 100644
index 0000000..b1a5a94
--- /dev/null
+++ b/libodb/odb/function-table.hxx
@@ -0,0 +1,50 @@
+// file : odb/function-table.hxx
+// license : GNU GPL v2; see accompanying LICENSE file
+
+#ifndef ODB_FUNCTION_TABLE_HXX
+#define ODB_FUNCTION_TABLE_HXX
+
+#include <odb/pre.hxx>
+
+#include <odb/forward.hxx>
+
+namespace odb
+{
+ template <typename T, database_id DB>
+ struct object_function_table_entry
+ {
+ typedef access::object_traits_impl<T, id_common> common_traits;
+
+ object_function_table_entry (
+ const typename common_traits::function_table_type* t)
+ {
+ common_traits::function_table[DB] = t;
+ }
+
+ ~object_function_table_entry ()
+ {
+ common_traits::function_table[DB] = 0;
+ }
+ };
+
+ template <typename T, database_id DB>
+ struct view_function_table_entry
+ {
+ typedef access::view_traits_impl<T, id_common> common_traits;
+
+ view_function_table_entry (
+ const typename common_traits::function_table_type* t)
+ {
+ common_traits::function_table[DB] = t;
+ }
+
+ ~view_function_table_entry ()
+ {
+ common_traits::function_table[DB] = 0;
+ }
+ };
+}
+
+#include <odb/post.hxx>
+
+#endif // ODB_FUNCTION_TABLE_HXX