summaryrefslogtreecommitdiff
path: root/libodb/odb/result.txx
diff options
context:
space:
mode:
Diffstat (limited to 'libodb/odb/result.txx')
-rw-r--r--libodb/odb/result.txx49
1 files changed, 49 insertions, 0 deletions
diff --git a/libodb/odb/result.txx b/libodb/odb/result.txx
new file mode 100644
index 0000000..b69d92a
--- /dev/null
+++ b/libodb/odb/result.txx
@@ -0,0 +1,49 @@
+// file : odb/result.txx
+// license : GNU GPL v2; see accompanying LICENSE file
+
+#include <cassert>
+
+namespace odb
+{
+ template <typename T>
+ typename result<T>::pointer_type result<T>::
+ one ()
+ {
+ 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.
+ }
+}