From 7ce07d1c371e32e474897e8b03da7e330aaefb57 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Tue, 6 Sep 2011 16:56:07 +0200 Subject: Support for views; native part --- odb/pgsql/view-statements.hxx | 111 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 odb/pgsql/view-statements.hxx (limited to 'odb/pgsql/view-statements.hxx') diff --git a/odb/pgsql/view-statements.hxx b/odb/pgsql/view-statements.hxx new file mode 100644 index 0000000..e1e5614 --- /dev/null +++ b/odb/pgsql/view-statements.hxx @@ -0,0 +1,111 @@ +// file : odb/pgsql/view-statements.hxx +// author : Constantin Michael +// copyright : Copyright (c) 2005-2011 Code Synthesis Tools CC +// license : GNU GPL v2; see accompanying LICENSE file + +#ifndef ODB_PGSQL_VIEW_STATEMENTS_HXX +#define ODB_PGSQL_VIEW_STATEMENTS_HXX + +#include + +#include // std::size_t + +#include +#include + +#include + +#include +#include +#include +#include + +namespace odb +{ + namespace pgsql + { + template + class view_statements: public statements_base + { + public: + typedef T view_type; + typedef odb::view_traits view_traits; + typedef typename view_traits::pointer_type pointer_type; + typedef typename view_traits::image_type image_type; + + typedef pgsql::select_statement query_statement_type; + + public: + view_statements (connection_type&); + + virtual + ~view_statements (); + + // View image. + // + image_type& + image () + { + return image_; + } + + std::size_t + image_version () const + { + return image_version_; + } + + void + image_version (std::size_t v) + { + image_version_ = v; + } + + binding& + image_binding () + { + return image_binding_; + } + + bool* + image_truncated () + { + return image_truncated_; + } + + query_statement_type& + query_statement () + { + if (query_ == 0) + { + query_.reset ( + new (details::shared) query_statement_type ( + conn_, + view_traits::query_statement_name, + image_binding_)); + } + + return *query_; + } + + private: + view_statements (const view_statements&); + view_statements& operator= (const view_statements&); + + private: + image_type image_; + std::size_t image_version_; + binding image_binding_; + bind image_bind_[view_traits::column_count]; + bool image_truncated_[view_traits::column_count]; + + details::shared_ptr query_; + }; + } +} + +#include + +#include + +#endif // ODB_PGSQL_VIEW_STATEMENTS_HXX -- cgit v1.1