aboutsummaryrefslogtreecommitdiff
path: root/odb/database.ixx
diff options
context:
space:
mode:
authorMichael Shepanski <michael@codesynthesis.com>2014-10-30 15:21:32 +1100
committerMichael Shepanski <michael@codesynthesis.com>2014-10-31 08:39:49 +1100
commit1f217e38f7507758da1d33d46e675e801621aa38 (patch)
treebad382ee315a820ec08bd2a83eaece12ac8169e3 /odb/database.ixx
parent31af5a488f2be9f4059e159492d4fe62f25a895a (diff)
Allow lambdas & std::functions as query factories with C++-98 builds of libodb
Diffstat (limited to 'odb/database.ixx')
-rw-r--r--odb/database.ixx27
1 files changed, 4 insertions, 23 deletions
diff --git a/odb/database.ixx b/odb/database.ixx
index a15bb7d..6cfbeec 100644
--- a/odb/database.ixx
+++ b/odb/database.ixx
@@ -3,7 +3,6 @@
// license : GNU GPL v2; see accompanying LICENSE file
#include <cstring> // std::strlen()
-#include <utility> // std::move
#include <odb/transaction.hxx>
@@ -65,31 +64,13 @@ namespace odb
return connection_ptr (connection_ ());
}
+#ifndef ODB_CXX11
inline void database::
- query_factory (const char* name, query_factory_type f)
+ query_factory (const char* name, query_factory_ptr f)
{
- if (f)
-#ifdef ODB_CXX11
- query_factory_map_[name] = std::move (f);
-#else
- query_factory_map_[name] = f;
-#endif
- else
- query_factory_map_.erase (name);
- }
-
- inline database::query_factory_type database::
- lookup_query_factory (const char* name) const
- {
- query_factory_map::const_iterator i (query_factory_map_.find (name));
-
- if (i == query_factory_map_.end ())
- i = query_factory_map_.find (""); // Wildcard factory.
-
- return i != query_factory_map_.end ()
- ? i->second
- : database::query_factory_type ();
+ query_factory (name, query_factory_wrapper (f));
}
+#endif
inline void database::
tracer (tracer_type& t)