// file : odb/sqlite/statement-cache.hxx // copyright : Copyright (c) 2005-2012 Code Synthesis Tools CC // license : GNU GPL v2; see accompanying LICENSE file #ifndef ODB_SQLITE_STATEMENT_CACHE_HXX #define ODB_SQLITE_STATEMENT_CACHE_HXX #include #include #include #include #include #include #include #include #include #include #include #include namespace odb { namespace sqlite { class LIBODB_SQLITE_EXPORT statement_cache { public: statement_cache (connection&); generic_statement& begin_statement () const { return *begin_; } generic_statement& begin_immediate_statement () const { if (!begin_immediate_) begin_immediate_statement_ (); return *begin_immediate_; } generic_statement& begin_exclusive_statement () const { if (!begin_exclusive_) begin_exclusive_statement_ (); return *begin_exclusive_; } generic_statement& commit_statement () const { return *commit_; } generic_statement& rollback_statement () const { return *rollback_; } template typename object_traits_impl::statements_type& find_object (); template view_statements& find_view (); private: void begin_immediate_statement_ () const; void begin_exclusive_statement_ () const; private: typedef std::map, details::type_info_comparator> map; connection& conn_; details::shared_ptr begin_; mutable details::shared_ptr begin_immediate_; mutable details::shared_ptr begin_exclusive_; details::shared_ptr commit_; details::shared_ptr rollback_; map map_; }; } } #include #include #endif // ODB_SQLITE_STATEMENT_CACHE_HXX