aboutsummaryrefslogtreecommitdiff
path: root/odb/database.ixx
diff options
context:
space:
mode:
Diffstat (limited to 'odb/database.ixx')
-rw-r--r--odb/database.ixx83
1 files changed, 83 insertions, 0 deletions
diff --git a/odb/database.ixx b/odb/database.ixx
index 36766e2..d4869c1 100644
--- a/odb/database.ixx
+++ b/odb/database.ixx
@@ -66,6 +66,21 @@ namespace odb
return persist_<T> (pobj);
}
+ template <typename T, typename A1, template <typename, typename> class P>
+ inline typename object_traits<T>::id_type database::
+ persist (const P<T, A1>& p)
+ {
+ typedef typename object_traits<T>::pointer_type object_pointer;
+
+ // The passed pointer should be the same or implicit-convertible
+ // to the object pointer. This way we make sure the object pointer
+ // does not assume ownership of the passed object.
+ //
+ const object_pointer& pobj (p);
+
+ return persist_<T> (pobj);
+ }
+
template <typename T, template <typename> class P>
inline typename object_traits<T>::id_type database::
persist (P<T>& p)
@@ -74,6 +89,14 @@ namespace odb
return persist<T, P> (cr);
}
+ template <typename T, typename A1, template <typename, typename> class P>
+ inline typename object_traits<T>::id_type database::
+ persist (P<T, A1>& p)
+ {
+ const P<T, A1>& cr (p);
+ return persist<T, A1, P> (cr);
+ }
+
template <typename T>
inline typename object_traits<T>::id_type database::
persist (const typename object_traits<T>::pointer_type& pobj)
@@ -95,6 +118,13 @@ namespace odb
reload (odb::pointer_traits< P<T> >::get_ref (p));
}
+ template <typename T, typename A1, template <typename, typename> class P>
+ inline void database::
+ reload (const P<T, A1>& p)
+ {
+ reload (odb::pointer_traits< P<T, A1> >::get_ref (p));
+ }
+
template <typename T, template <typename> class P>
inline void database::
reload (P<T>& p)
@@ -102,6 +132,13 @@ namespace odb
reload (odb::pointer_traits< P<T> >::get_ref (p));
}
+ template <typename T, typename A1, template <typename, typename> class P>
+ inline void database::
+ reload (P<T, A1>& p)
+ {
+ reload (odb::pointer_traits< P<T, A1> >::get_ref (p));
+ }
+
template <typename T>
inline void database::
reload (const typename object_traits<T>::pointer_type& pobj)
@@ -141,6 +178,21 @@ namespace odb
update_<T> (pobj);
}
+ template <typename T, typename A1, template <typename, typename> class P>
+ inline void database::
+ update (const P<T, A1>& p)
+ {
+ typedef typename object_traits<T>::pointer_type object_pointer;
+
+ // The passed pointer should be the same or implicit-convertible
+ // to the object pointer. This way we make sure the object pointer
+ // does not assume ownership of the passed object.
+ //
+ const object_pointer& pobj (p);
+
+ update_<T> (pobj);
+ }
+
template <typename T, template <typename> class P>
inline void database::
update (P<T>& p)
@@ -149,6 +201,14 @@ namespace odb
update<T, P> (cr);
}
+ template <typename T, typename A1, template <typename, typename> class P>
+ inline void database::
+ update (P<T, A1>& p)
+ {
+ const P<T, A1>& cr (p);
+ update<T, A1, P> (cr);
+ }
+
template <typename T>
inline void database::
update (const typename object_traits<T>::pointer_type& pobj)
@@ -186,6 +246,21 @@ namespace odb
erase_<T> (pobj);
}
+ template <typename T, typename A1, template <typename, typename> class P>
+ inline void database::
+ erase (const P<T, A1>& p)
+ {
+ typedef typename object_traits<T>::pointer_type object_pointer;
+
+ // The passed pointer should be the same or implicit-convertible
+ // to the object pointer. This way we make sure the object pointer
+ // does not assume ownership of the passed object.
+ //
+ const object_pointer& pobj (p);
+
+ erase_<T> (pobj);
+ }
+
template <typename T, template <typename> class P>
inline void database::
erase (P<T>& p)
@@ -194,6 +269,14 @@ namespace odb
erase<T, P> (cr);
}
+ template <typename T, typename A1, template <typename, typename> class P>
+ inline void database::
+ erase (P<T, A1>& p)
+ {
+ const P<T, A1>& cr (p);
+ erase<T, A1, P> (cr);
+ }
+
template <typename T>
inline void database::
erase (const typename object_traits<T>::pointer_type& pobj)