aboutsummaryrefslogtreecommitdiff
path: root/odb/result.txx
diff options
context:
space:
mode:
Diffstat (limited to 'odb/result.txx')
-rw-r--r--odb/result.txx52
1 files changed, 52 insertions, 0 deletions
diff --git a/odb/result.txx b/odb/result.txx
new file mode 100644
index 0000000..c1bed1c
--- /dev/null
+++ b/odb/result.txx
@@ -0,0 +1,52 @@
+// file : odb/result.txx
+// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
+// license : GNU GPL v2; see accompanying LICENSE file
+
+#include <cassert>
+
+namespace odb
+{
+ template <typename T>
+ typename object_traits<T>::pointer_type result<T>::
+ one ()
+ {
+ typedef typename object_traits<T>::pointer_type pointer_type;
+
+ iterator i (begin ());
+
+ if (i != end ())
+ {
+ pointer_type o (i.load ());
+ assert (++i == end ()); // More than one element in query_one() result.
+ return o;
+ }
+
+ return pointer_type ();
+ }
+
+ template <typename T>
+ bool result<T>::
+ one (T& o)
+ {
+ iterator i (begin ());
+
+ if (i != end ())
+ {
+ i.load (o);
+ assert (++i == end ()); // More than one element in query_one() result.
+ return true;
+ }
+
+ return false;
+ }
+
+ template <typename T>
+ void result<T>::
+ value (T& o)
+ {
+ iterator i (begin ());
+ assert (i != end ()); // Zero elements in query_value() result.
+ i.load (o);
+ assert (++i == end ()); // More than one element in query_value() result.
+ }
+}