From 521577bfe361f78543458d4b01e259574e1a46bb Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Mon, 4 Apr 2016 16:42:20 +0200 Subject: Add _has_cache() custom session interface, use in OLV implementation --- doc/manual.xhtml | 10 ++++++++-- odb/relational/source.cxx | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/doc/manual.xhtml b/doc/manual.xhtml index a3232b0..b417ced 100644 --- a/doc/manual.xhtml +++ b/doc/manual.xhtml @@ -11605,14 +11605,17 @@ odb --hxx-prologue "#include \"app/session.hxx\"" \ class custom_session { public: + static bool + _has_cache (); + + // Cache management functions. + // template <typename T> struct cache_position { ... }; - // Cache management functions. - // template <typename T> static cache_position<T> _cache_insert (odb::database&, @@ -11649,6 +11652,9 @@ public: }; +

The _has_cache() function shall return true + if the object cache is in effect in the current thread.

+

The cache_position class template represents a position in the cache of the inserted object. It should be default and copy-constructible as well as copy-assignable. The default diff --git a/odb/relational/source.cxx b/odb/relational/source.cxx index a20406a..4e9a069 100644 --- a/odb/relational/source.cxx +++ b/odb/relational/source.cxx @@ -5235,7 +5235,7 @@ traverse_view (type& c) os << endl; if (need_session) - os << "if (!session::has_current ())" << endl + os << "if (!" << options.session_type () << "::_has_cache ())" << endl << "throw session_required ();" << endl; -- cgit v1.1