| boost-optional.h | | boost-optional.h | |
| // | | // | |
| // Copyright (C) 2004-2008 Maciej Sobczak, Stephen Hutton | | // Copyright (C) 2004-2008 Maciej Sobczak, Stephen Hutton | |
| // Distributed under the Boost Software License, Version 1.0. | | // Distributed under the Boost Software License, Version 1.0. | |
| // (See accompanying file LICENSE_1_0.txt or copy at | | // (See accompanying file LICENSE_1_0.txt or copy at | |
| // http://www.boost.org/LICENSE_1_0.txt) | | // http://www.boost.org/LICENSE_1_0.txt) | |
| // | | // | |
| | | | |
| #ifndef SOCI_BOOST_OPTIONAL_H_INCLUDED | | #ifndef SOCI_BOOST_OPTIONAL_H_INCLUDED | |
| #define SOCI_BOOST_OPTIONAL_H_INCLUDED | | #define SOCI_BOOST_OPTIONAL_H_INCLUDED | |
| | | | |
|
| #include "type-conversion-traits.h" | | #include "soci/type-conversion-traits.h" | |
| // boost | | // boost | |
| #include <boost/optional.hpp> | | #include <boost/optional.hpp> | |
| | | | |
| namespace soci | | namespace soci | |
| { | | { | |
| | | | |
|
| | | // tmp is uninitialized | |
| | | #if defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ > 6) | |
| | | #pragma GCC diagnostic push | |
| | | #pragma GCC diagnostic ignored "-Wmaybe-uninitialized" | |
| | | #endif | |
| | | | |
| // simple fall-back for boost::optional | | // simple fall-back for boost::optional | |
| template <typename T> | | template <typename T> | |
| struct type_conversion<boost::optional<T> > | | struct type_conversion<boost::optional<T> > | |
| { | | { | |
| typedef typename type_conversion<T>::base_type base_type; | | typedef typename type_conversion<T>::base_type base_type; | |
| | | | |
| static void from_base(base_type const & in, indicator ind, | | static void from_base(base_type const & in, indicator ind, | |
| boost::optional<T> & out) | | boost::optional<T> & out) | |
| { | | { | |
| if (ind == i_null) | | if (ind == i_null) | |
| | | | |
| skipping to change at line 55 | | skipping to change at line 61 | |
| } | | } | |
| else | | else | |
| { | | { | |
| ind = i_null; | | ind = i_null; | |
| } | | } | |
| } | | } | |
| }; | | }; | |
| | | | |
| } // namespace soci | | } // namespace soci | |
| | | | |
|
| | | #if defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ > 6) | |
| | | #pragma GCC diagnostic pop | |
| | | #endif | |
| | | | |
| #endif // SOCI_BOOST_OPTIONAL_H_INCLUDED | | #endif // SOCI_BOOST_OPTIONAL_H_INCLUDED | |
| | | | |
End of changes. 3 change blocks. |
| 1 lines changed or deleted | | 11 lines changed or added | |
|
| error.h | | error.h | |
| // | | // | |
| // Copyright (C) 2004-2008 Maciej Sobczak | | // Copyright (C) 2004-2008 Maciej Sobczak | |
|
| | | // Copyright (C) 2015 Vadim Zeitlin | |
| // Distributed under the Boost Software License, Version 1.0. | | // Distributed under the Boost Software License, Version 1.0. | |
| // (See accompanying file LICENSE_1_0.txt or copy at | | // (See accompanying file LICENSE_1_0.txt or copy at | |
| // http://www.boost.org/LICENSE_1_0.txt) | | // http://www.boost.org/LICENSE_1_0.txt) | |
| // | | // | |
| | | | |
| #ifndef SOCI_ERROR_H_INCLUDED | | #ifndef SOCI_ERROR_H_INCLUDED | |
| #define SOCI_ERROR_H_INCLUDED | | #define SOCI_ERROR_H_INCLUDED | |
| | | | |
|
| #include "soci-config.h" | | #include "soci/soci-config.h" | |
| // std | | // std | |
| #include <stdexcept> | | #include <stdexcept> | |
| #include <string> | | #include <string> | |
| | | | |
| namespace soci | | namespace soci | |
| { | | { | |
| | | | |
| class SOCI_DECL soci_error : public std::runtime_error | | class SOCI_DECL soci_error : public std::runtime_error | |
| { | | { | |
| public: | | public: | |
| explicit soci_error(std::string const & msg); | | explicit soci_error(std::string const & msg); | |
|
| | | | |
| | | soci_error(soci_error const& e); | |
| | | soci_error& operator=(soci_error const& e); | |
| | | | |
| | | virtual ~soci_error() throw(); | |
| | | | |
| | | // Returns just the error message itself, without the context. | |
| | | std::string get_error_message() const; | |
| | | | |
| | | // Returns the full error message combining the message given to the ct | |
| | | or | |
| | | // with all the available context records. | |
| | | virtual char const* what() const throw(); | |
| | | | |
| | | // This is used only by SOCI itself to provide more information about t | |
| | | he | |
| | | // exception as it bubbles up. It can be called multiple times, with th | |
| | | e | |
| | | // first call adding the lowest level context and the last one -- the | |
| | | // highest level context. | |
| | | void add_context(std::string const& context); | |
| | | | |
| | | private: | |
| | | // Optional extra information (currently just the context data). | |
| | | class soci_error_extra_info* info_; | |
| }; | | }; | |
| | | | |
| } // namespace soci | | } // namespace soci | |
| | | | |
| #endif // SOCI_ERROR_H_INCLUDED | | #endif // SOCI_ERROR_H_INCLUDED | |
| | | | |
End of changes. 3 change blocks. |
| 1 lines changed or deleted | | 27 lines changed or added | |
|
| into.h | | into.h | |
| // | | // | |
| // Copyright (C) 2004-2008 Maciej Sobczak, Stephen Hutton | | // Copyright (C) 2004-2008 Maciej Sobczak, Stephen Hutton | |
| // Distributed under the Boost Software License, Version 1.0. | | // Distributed under the Boost Software License, Version 1.0. | |
| // (See accompanying file LICENSE_1_0.txt or copy at | | // (See accompanying file LICENSE_1_0.txt or copy at | |
| // http://www.boost.org/LICENSE_1_0.txt) | | // http://www.boost.org/LICENSE_1_0.txt) | |
| // | | // | |
| | | | |
| #ifndef SOCI_INTO_H_INCLUDED | | #ifndef SOCI_INTO_H_INCLUDED | |
| #define SOCI_INTO_H_INCLUDED | | #define SOCI_INTO_H_INCLUDED | |
| | | | |
|
| #include "into-type.h" | | #include "soci/into-type.h" | |
| #include "exchange-traits.h" | | #include "soci/exchange-traits.h" | |
| #include "type-conversion.h" | | #include "soci/type-conversion.h" | |
| // std | | // std | |
| #include <cstddef> | | #include <cstddef> | |
| #include <vector> | | #include <vector> | |
| | | | |
| namespace soci | | namespace soci | |
| { | | { | |
| | | | |
| // the into function is a helper for defining output variables | | // the into function is a helper for defining output variables | |
| // these helpers work with both basic and user-defined types thanks to | | // these helpers work with both basic and user-defined types thanks to | |
| // the tag-dispatching, as defined in exchange_traits template | | // the tag-dispatching, as defined in exchange_traits template | |
| | | | |
End of changes. 1 change blocks. |
| 3 lines changed or deleted | | 3 lines changed or added | |
|
| ref-counted-prepare-info.h | | ref-counted-prepare-info.h | |
| // | | // | |
| // Copyright (C) 2004-2008 Maciej Sobczak, Stephen Hutton | | // Copyright (C) 2004-2008 Maciej Sobczak, Stephen Hutton | |
| // Distributed under the Boost Software License, Version 1.0. | | // Distributed under the Boost Software License, Version 1.0. | |
| // (See accompanying file LICENSE_1_0.txt or copy at | | // (See accompanying file LICENSE_1_0.txt or copy at | |
| // http://www.boost.org/LICENSE_1_0.txt) | | // http://www.boost.org/LICENSE_1_0.txt) | |
| // | | // | |
| | | | |
| #ifndef SOCI_REF_COUNTED_PREPARE_INFO_INCLUDED | | #ifndef SOCI_REF_COUNTED_PREPARE_INFO_INCLUDED | |
| #define SOCI_REF_COUNTED_PREPARE_INFO_INCLUDED | | #define SOCI_REF_COUNTED_PREPARE_INFO_INCLUDED | |
| | | | |
|
| #include "bind-values.h" | | #include "soci/bind-values.h" | |
| #include "ref-counted-statement.h" | | #include "soci/ref-counted-statement.h" | |
| | | | |
| // std | | // std | |
| #include <string> | | #include <string> | |
| #include <vector> | | #include <vector> | |
| | | | |
| namespace soci | | namespace soci | |
| { | | { | |
| | | | |
| class session; | | class session; | |
| | | | |
| namespace details | | namespace details | |
| | | | |
| skipping to change at line 37 | | skipping to change at line 36 | |
| class statement_impl; | | class statement_impl; | |
| class into_type_base; | | class into_type_base; | |
| | | | |
| // this class conveys only the statement text and the bind/define info | | // this class conveys only the statement text and the bind/define info | |
| // it exists only to be passed to statement's constructor | | // it exists only to be passed to statement's constructor | |
| class ref_counted_prepare_info : public ref_counted_statement_base | | class ref_counted_prepare_info : public ref_counted_statement_base | |
| { | | { | |
| public: | | public: | |
| ref_counted_prepare_info(session& s) | | ref_counted_prepare_info(session& s) | |
| : ref_counted_statement_base(s) | | : ref_counted_statement_base(s) | |
|
| , session_(s) | | | |
| {} | | {} | |
| | | | |
| void exchange(use_type_ptr const& u) { uses_.exchange(u); } | | void exchange(use_type_ptr const& u) { uses_.exchange(u); } | |
| | | | |
| template <typename T, typename Indicator> | | template <typename T, typename Indicator> | |
| void exchange(use_container<T, Indicator> const &uc) | | void exchange(use_container<T, Indicator> const &uc) | |
| { uses_.exchange(uc); } | | { uses_.exchange(uc); } | |
| | | | |
| void exchange(into_type_ptr const& i) { intos_.exchange(i); } | | void exchange(into_type_ptr const& i) { intos_.exchange(i); } | |
| | | | |
| template <typename T, typename Indicator> | | template <typename T, typename Indicator> | |
| void exchange(into_container<T, Indicator> const &ic) | | void exchange(into_container<T, Indicator> const &ic) | |
| { intos_.exchange(ic); } | | { intos_.exchange(ic); } | |
| | | | |
| void final_action(); | | void final_action(); | |
| | | | |
| private: | | private: | |
| friend class statement_impl; | | friend class statement_impl; | |
| friend class procedure_impl; | | friend class procedure_impl; | |
| | | | |
|
| session& session_; | | | |
| | | | |
| into_type_vector intos_; | | into_type_vector intos_; | |
| use_type_vector uses_; | | use_type_vector uses_; | |
| | | | |
| std::string get_query() const; | | std::string get_query() const; | |
| }; | | }; | |
| | | | |
| } // namespace details | | } // namespace details | |
| | | | |
| } // namespace soci | | } // namespace soci | |
| | | | |
| | | | |
End of changes. 3 change blocks. |
| 6 lines changed or deleted | | 2 lines changed or added | |
|
| row.h | | row.h | |
| // | | // | |
| // Copyright (C) 2004-2008 Maciej Sobczak, Stephen Hutton | | // Copyright (C) 2004-2008 Maciej Sobczak, Stephen Hutton | |
| // Distributed under the Boost Software License, Version 1.0. | | // Distributed under the Boost Software License, Version 1.0. | |
| // (See accompanying file LICENSE_1_0.txt or copy at | | // (See accompanying file LICENSE_1_0.txt or copy at | |
| // http://www.boost.org/LICENSE_1_0.txt) | | // http://www.boost.org/LICENSE_1_0.txt) | |
| // | | // | |
| | | | |
| #ifndef SOCI_ROW_H_INCLUDED | | #ifndef SOCI_ROW_H_INCLUDED | |
| #define SOCI_ROW_H_INCLUDED | | #define SOCI_ROW_H_INCLUDED | |
| | | | |
|
| #include "type-holder.h" | | #include "soci/type-holder.h" | |
| #include "soci-backend.h" | | #include "soci/soci-backend.h" | |
| #include "type-conversion.h" | | #include "soci/type-conversion.h" | |
| // std | | // std | |
|
| #include <cassert> | | | |
| #include <cstddef> | | #include <cstddef> | |
| #include <map> | | #include <map> | |
| #include <string> | | #include <string> | |
| #include <vector> | | #include <vector> | |
| | | | |
| namespace soci | | namespace soci | |
| { | | { | |
| | | | |
| class SOCI_DECL column_properties | | class SOCI_DECL column_properties | |
| { | | { | |
| | | | |
| skipping to change at line 68 | | skipping to change at line 67 | |
| holders_.push_back(new details::type_holder<T>(t)); | | holders_.push_back(new details::type_holder<T>(t)); | |
| indicators_.push_back(ind); | | indicators_.push_back(ind); | |
| } | | } | |
| | | | |
| column_properties const& get_properties(std::size_t pos) const; | | column_properties const& get_properties(std::size_t pos) const; | |
| column_properties const& get_properties(std::string const& name) const; | | column_properties const& get_properties(std::string const& name) const; | |
| | | | |
| template <typename T> | | template <typename T> | |
| T get(std::size_t pos) const | | T get(std::size_t pos) const | |
| { | | { | |
|
| assert(holders_.size() >= pos + 1); | | | |
| | | | |
| typedef typename type_conversion<T>::base_type base_type; | | typedef typename type_conversion<T>::base_type base_type; | |
|
| base_type const& baseVal = holders_[pos]->get<base_type>(); | | base_type const& baseVal = holders_.at(pos)->get<base_type>(); | |
| | | | |
| T ret; | | T ret; | |
|
| type_conversion<T>::from_base(baseVal, *indicators_[pos], ret); | | type_conversion<T>::from_base(baseVal, *indicators_.at(pos), ret); | |
| return ret; | | return ret; | |
| } | | } | |
| | | | |
| template <typename T> | | template <typename T> | |
| T get(std::size_t pos, T const &nullValue) const | | T get(std::size_t pos, T const &nullValue) const | |
| { | | { | |
|
| assert(holders_.size() >= pos + 1); | | if (i_null == *indicators_.at(pos)) | |
| | | | |
| if (i_null == *indicators_[pos]) | | | |
| { | | { | |
| return nullValue; | | return nullValue; | |
| } | | } | |
| | | | |
| return get<T>(pos); | | return get<T>(pos); | |
| } | | } | |
| | | | |
| template <typename T> | | template <typename T> | |
| T get(std::string const &name) const | | T get(std::string const &name) const | |
| { | | { | |
| | | | |
End of changes. 6 change blocks. |
| 11 lines changed or deleted | | 6 lines changed or added | |
|
| rowset.h | | rowset.h | |
| // | | // | |
| // Copyright (C) 2006-2008 Mateusz Loskot | | // Copyright (C) 2006-2008 Mateusz Loskot | |
| // Distributed under the Boost Software License, Version 1.0. | | // Distributed under the Boost Software License, Version 1.0. | |
| // (See accompanying file LICENSE_1_0.txt or copy at | | // (See accompanying file LICENSE_1_0.txt or copy at | |
| // http://www.boost.org/LICENSE_1_0.txt) | | // http://www.boost.org/LICENSE_1_0.txt) | |
| // | | // | |
| | | | |
| #ifndef SOCI_ROWSET_H_INCLUDED | | #ifndef SOCI_ROWSET_H_INCLUDED | |
| #define SOCI_ROWSET_H_INCLUDED | | #define SOCI_ROWSET_H_INCLUDED | |
| | | | |
|
| #include "statement.h" | | #include "soci/statement.h" | |
| // std | | // std | |
| #include <iterator> | | #include <iterator> | |
| #include <memory> | | #include <memory> | |
| | | | |
| namespace soci | | namespace soci | |
| { | | { | |
| | | | |
| // | | // | |
| // rowset iterator of input category. | | // rowset iterator of input category. | |
| // | | // | |
| | | | |
| skipping to change at line 44 | | skipping to change at line 44 | |
| | | | |
| // Constructors | | // Constructors | |
| | | | |
| rowset_iterator() | | rowset_iterator() | |
| : st_(0), define_(0) | | : st_(0), define_(0) | |
| {} | | {} | |
| | | | |
| rowset_iterator(statement & st, T & define) | | rowset_iterator(statement & st, T & define) | |
| : st_(&st), define_(&define) | | : st_(&st), define_(&define) | |
| { | | { | |
|
| assert(0 != st_); | | | |
| assert(0 != define_); | | | |
| assert(0 != st_->get_backend()); | | | |
| | | | |
| // Fetch first row to properly initialize iterator | | // Fetch first row to properly initialize iterator | |
| ++(*this); | | ++(*this); | |
| } | | } | |
| | | | |
| // Access operators | | // Access operators | |
| | | | |
| reference operator*() const | | reference operator*() const | |
| { | | { | |
| return (*define_); | | return (*define_); | |
| } | | } | |
| | | | |
| skipping to change at line 122 | | skipping to change at line 118 | |
| template <typename T> | | template <typename T> | |
| class rowset_impl | | class rowset_impl | |
| { | | { | |
| public: | | public: | |
| | | | |
| typedef rowset_iterator<T> iterator; | | typedef rowset_iterator<T> iterator; | |
| | | | |
| rowset_impl(details::prepare_temp_type const & prep) | | rowset_impl(details::prepare_temp_type const & prep) | |
| : refs_(1), st_(new statement(prep)), define_(new T()) | | : refs_(1), st_(new statement(prep)), define_(new T()) | |
| { | | { | |
|
| assert(0 != st_.get()); | | | |
| assert(0 != define_.get()); | | | |
| | | | |
| st_->exchange_for_rowset(into(*define_)); | | st_->exchange_for_rowset(into(*define_)); | |
| st_->execute(); | | st_->execute(); | |
| } | | } | |
| | | | |
| void incRef() | | void incRef() | |
| { | | { | |
| ++refs_; | | ++refs_; | |
| } | | } | |
| | | | |
| void decRef() | | void decRef() | |
| | | | |
| skipping to change at line 157 | | skipping to change at line 150 | |
| | | | |
| iterator end() const | | iterator end() const | |
| { | | { | |
| return iterator(); | | return iterator(); | |
| } | | } | |
| | | | |
| private: | | private: | |
| | | | |
| unsigned int refs_; | | unsigned int refs_; | |
| | | | |
|
| | | #ifdef SOCI_CXX_C11 | |
| | | const std::unique_ptr<statement> st_; | |
| | | const std::unique_ptr<T> define_; | |
| | | #else | |
| const std::auto_ptr<statement> st_; | | const std::auto_ptr<statement> st_; | |
| const std::auto_ptr<T> define_; | | const std::auto_ptr<T> define_; | |
|
| | | #endif | |
| | | | |
| // Non-copyable | | // Non-copyable | |
| rowset_impl(rowset_impl const &); | | rowset_impl(rowset_impl const &); | |
| rowset_impl & operator=(rowset_impl const &); | | rowset_impl & operator=(rowset_impl const &); | |
| | | | |
| }; // class rowset_impl | | }; // class rowset_impl | |
| | | | |
| } // namespace details | | } // namespace details | |
| | | | |
| // | | // | |
| | | | |
| skipping to change at line 186 | | skipping to change at line 184 | |
| public: | | public: | |
| | | | |
| typedef T value_type; | | typedef T value_type; | |
| typedef rowset_iterator<T> iterator; | | typedef rowset_iterator<T> iterator; | |
| typedef rowset_iterator<T> const_iterator; | | typedef rowset_iterator<T> const_iterator; | |
| | | | |
| // this is a conversion constructor | | // this is a conversion constructor | |
| rowset(details::prepare_temp_type const& prep) | | rowset(details::prepare_temp_type const& prep) | |
| : pimpl_(new details::rowset_impl<T>(prep)) | | : pimpl_(new details::rowset_impl<T>(prep)) | |
| { | | { | |
|
| assert(0 != pimpl_); | | | |
| } | | } | |
| | | | |
| rowset(rowset const & other) | | rowset(rowset const & other) | |
| : pimpl_(other.pimpl_) | | : pimpl_(other.pimpl_) | |
| { | | { | |
|
| assert(0 != pimpl_); | | | |
| | | | |
| pimpl_->incRef(); | | pimpl_->incRef(); | |
| } | | } | |
| | | | |
| ~rowset() | | ~rowset() | |
| { | | { | |
|
| assert(0 != pimpl_); | | | |
| | | | |
| pimpl_->decRef(); | | pimpl_->decRef(); | |
| } | | } | |
| | | | |
| rowset& operator=(rowset const& rhs) | | rowset& operator=(rowset const& rhs) | |
| { | | { | |
|
| assert(0 != pimpl_); | | | |
| assert(0 != rhs.pimpl_); | | | |
| | | | |
| if (&rhs != this) | | if (&rhs != this) | |
| { | | { | |
| rhs.pimpl_->incRef(); | | rhs.pimpl_->incRef(); | |
| pimpl_->decRef(); | | pimpl_->decRef(); | |
| pimpl_ = rhs.pimpl_; | | pimpl_ = rhs.pimpl_; | |
| } | | } | |
| return *this; | | return *this; | |
| } | | } | |
| | | | |
| const_iterator begin() const | | const_iterator begin() const | |
| { | | { | |
|
| assert(0 != pimpl_); | | | |
| | | | |
| return pimpl_->begin(); | | return pimpl_->begin(); | |
| } | | } | |
| | | | |
| const_iterator end() const | | const_iterator end() const | |
| { | | { | |
|
| assert(0 != pimpl_); | | | |
| | | | |
| return pimpl_->end(); | | return pimpl_->end(); | |
| } | | } | |
| | | | |
| private: | | private: | |
| | | | |
| // Pointer to implementation - the body | | // Pointer to implementation - the body | |
| details::rowset_impl<T>* pimpl_; | | details::rowset_impl<T>* pimpl_; | |
| | | | |
| }; // class rowset | | }; // class rowset | |
| | | | |
| | | | |
End of changes. 11 change blocks. |
| 20 lines changed or deleted | | 6 lines changed or added | |
|
| session.h | | session.h | |
| // | | // | |
| // Copyright (C) 2004-2008 Maciej Sobczak, Stephen Hutton | | // Copyright (C) 2004-2008 Maciej Sobczak, Stephen Hutton | |
| // Distributed under the Boost Software License, Version 1.0. | | // Distributed under the Boost Software License, Version 1.0. | |
| // (See accompanying file LICENSE_1_0.txt or copy at | | // (See accompanying file LICENSE_1_0.txt or copy at | |
| // http://www.boost.org/LICENSE_1_0.txt) | | // http://www.boost.org/LICENSE_1_0.txt) | |
| // | | // | |
| | | | |
| #ifndef SOCI_SESSION_H_INCLUDED | | #ifndef SOCI_SESSION_H_INCLUDED | |
| #define SOCI_SESSION_H_INCLUDED | | #define SOCI_SESSION_H_INCLUDED | |
| | | | |
|
| #include "once-temp-type.h" | | #include "soci/once-temp-type.h" | |
| #include "query_transformation.h" | | #include "soci/query_transformation.h" | |
| #include "connection-parameters.h" | | #include "soci/connection-parameters.h" | |
| | | | |
| // std | | // std | |
| #include <cstddef> | | #include <cstddef> | |
| #include <memory> | | #include <memory> | |
| #include <ostream> | | #include <ostream> | |
| #include <sstream> | | #include <sstream> | |
| #include <string> | | #include <string> | |
| | | | |
| namespace soci | | namespace soci | |
| { | | { | |
| | | | |
| skipping to change at line 43 | | skipping to change at line 43 | |
| class blob_backend; | | class blob_backend; | |
| | | | |
| } // namespace details | | } // namespace details | |
| | | | |
| class connection_pool; | | class connection_pool; | |
| | | | |
| class SOCI_DECL session | | class SOCI_DECL session | |
| { | | { | |
| private: | | private: | |
| | | | |
|
| | | #ifdef SOCI_CXX_C11 | |
| | | void set_query_transformation_(std::unique_ptr<details::query_transform | |
| | | ation_function> & qtf); | |
| | | #else | |
| void set_query_transformation_(std::auto_ptr<details::query_transformat
ion_function> qtf); | | void set_query_transformation_(std::auto_ptr<details::query_transformat
ion_function> qtf); | |
|
| | | #endif | |
| | | | |
| public: | | public: | |
| session(); | | session(); | |
| explicit session(connection_parameters const & parameters); | | explicit session(connection_parameters const & parameters); | |
| session(backend_factory const & factory, std::string const & connectStr
ing); | | session(backend_factory const & factory, std::string const & connectStr
ing); | |
| session(std::string const & backendName, std::string const & connectStr
ing); | | session(std::string const & backendName, std::string const & connectStr
ing); | |
| explicit session(std::string const & connectString); | | explicit session(std::string const & connectString); | |
| explicit session(connection_pool & pool); | | explicit session(connection_pool & pool); | |
| | | | |
| ~session(); | | ~session(); | |
| | | | |
| skipping to change at line 80 | | skipping to change at line 84 | |
| // even more sugar | | // even more sugar | |
| template <typename T> | | template <typename T> | |
| details::once_temp_type operator<<(T const & t) { return once << t; } | | details::once_temp_type operator<<(T const & t) { return once << t; } | |
| | | | |
| std::ostringstream & get_query_stream(); | | std::ostringstream & get_query_stream(); | |
| std::string get_query() const; | | std::string get_query() const; | |
| | | | |
| template <typename T> | | template <typename T> | |
| void set_query_transformation(T callback) | | void set_query_transformation(T callback) | |
| { | | { | |
|
| | | | |
| | | #ifdef SOCI_CXX_C11 | |
| | | std::unique_ptr<details::query_transformation_function> qtf(new det | |
| | | ails::query_transformation<T>(callback)); | |
| | | #else | |
| std::auto_ptr<details::query_transformation_function> qtf(new detai
ls::query_transformation<T>(callback)); | | std::auto_ptr<details::query_transformation_function> qtf(new detai
ls::query_transformation<T>(callback)); | |
|
| | | #endif | |
| set_query_transformation_(qtf); | | set_query_transformation_(qtf); | |
|
| | | } | |
| assert(qtf.get() == NULL); | | | |
| } | | | |
| | | | |
| // support for basic logging | | // support for basic logging | |
| void set_log_stream(std::ostream * s); | | void set_log_stream(std::ostream * s); | |
| std::ostream * get_log_stream() const; | | std::ostream * get_log_stream() const; | |
| | | | |
| void log_query(std::string const & query); | | void log_query(std::string const & query); | |
| std::string get_last_query() const; | | std::string get_last_query() const; | |
| | | | |
| void set_got_data(bool gotData); | | void set_got_data(bool gotData); | |
| bool got_data() const; | | bool got_data() const; | |
| | | | |
End of changes. 6 change blocks. |
| 6 lines changed or deleted | | 15 lines changed or added | |
|
| soci-backend.h | | soci-backend.h | |
| // | | // | |
| // Copyright (C) 2004-2008 Maciej Sobczak, Stephen Hutton | | // Copyright (C) 2004-2008 Maciej Sobczak, Stephen Hutton | |
| // Distributed under the Boost Software License, Version 1.0. | | // Distributed under the Boost Software License, Version 1.0. | |
| // (See accompanying file LICENSE_1_0.txt or copy at | | // (See accompanying file LICENSE_1_0.txt or copy at | |
| // http://www.boost.org/LICENSE_1_0.txt) | | // http://www.boost.org/LICENSE_1_0.txt) | |
| // | | // | |
| | | | |
| #ifndef SOCI_BACKEND_H_INCLUDED | | #ifndef SOCI_BACKEND_H_INCLUDED | |
| #define SOCI_BACKEND_H_INCLUDED | | #define SOCI_BACKEND_H_INCLUDED | |
| | | | |
|
| #include "soci-config.h" | | #include "soci/soci-config.h" | |
| #include "error.h" | | #include "soci/error.h" | |
| // std | | // std | |
| #include <cstddef> | | #include <cstddef> | |
| #include <map> | | #include <map> | |
| #include <string> | | #include <string> | |
| | | | |
| namespace soci | | namespace soci | |
| { | | { | |
| | | | |
| // data types, as seen by the user | | // data types, as seen by the user | |
| enum data_type | | enum data_type | |
| | | | |
| skipping to change at line 173 | | skipping to change at line 173 | |
| ef_success, | | ef_success, | |
| ef_no_data | | ef_no_data | |
| }; | | }; | |
| | | | |
| virtual exec_fetch_result execute(int number) = 0; | | virtual exec_fetch_result execute(int number) = 0; | |
| virtual exec_fetch_result fetch(int number) = 0; | | virtual exec_fetch_result fetch(int number) = 0; | |
| | | | |
| virtual long long get_affected_rows() = 0; | | virtual long long get_affected_rows() = 0; | |
| virtual int get_number_of_rows() = 0; | | virtual int get_number_of_rows() = 0; | |
| | | | |
|
| | | virtual std::string get_parameter_name(int index) const = 0; | |
| | | | |
| virtual std::string rewrite_for_procedure_call(std::string const& query
) = 0; | | virtual std::string rewrite_for_procedure_call(std::string const& query
) = 0; | |
| | | | |
| virtual int prepare_for_describe() = 0; | | virtual int prepare_for_describe() = 0; | |
| virtual void describe_column(int colNum, data_type& dtype, | | virtual void describe_column(int colNum, data_type& dtype, | |
| std::string& column_name) = 0; | | std::string& column_name) = 0; | |
| | | | |
| virtual standard_into_type_backend* make_into_type_backend() = 0; | | virtual standard_into_type_backend* make_into_type_backend() = 0; | |
| virtual standard_use_type_backend* make_use_type_backend() = 0; | | virtual standard_use_type_backend* make_use_type_backend() = 0; | |
| virtual vector_into_type_backend* make_vector_into_type_backend() = 0; | | virtual vector_into_type_backend* make_vector_into_type_backend() = 0; | |
| virtual vector_use_type_backend* make_vector_use_type_backend() = 0; | | virtual vector_use_type_backend* make_vector_use_type_backend() = 0; | |
| | | | |
End of changes. 2 change blocks. |
| 2 lines changed or deleted | | 4 lines changed or added | |
|
| soci-empty.h | | soci-empty.h | |
| | | | |
| skipping to change at line 26 | | skipping to change at line 26 | |
| # define SOCI_EMPTY_DECL __declspec(dllimport) | | # define SOCI_EMPTY_DECL __declspec(dllimport) | |
| # endif // SOCI_EMPTY_SOURCE | | # endif // SOCI_EMPTY_SOURCE | |
| # endif // SOCI_DLL | | # endif // SOCI_DLL | |
| #endif // _WIN32 | | #endif // _WIN32 | |
| // | | // | |
| // If SOCI_EMPTY_DECL isn't defined yet define it now | | // If SOCI_EMPTY_DECL isn't defined yet define it now | |
| #ifndef SOCI_EMPTY_DECL | | #ifndef SOCI_EMPTY_DECL | |
| # define SOCI_EMPTY_DECL | | # define SOCI_EMPTY_DECL | |
| #endif | | #endif | |
| | | | |
|
| #include "soci-backend.h" | | #include <soci/soci-backend.h> | |
| | | | |
| #include <cstddef> | | #include <cstddef> | |
| #include <string> | | #include <string> | |
| | | | |
| namespace soci | | namespace soci | |
| { | | { | |
| | | | |
| struct empty_statement_backend; | | struct empty_statement_backend; | |
| | | | |
| struct SOCI_EMPTY_DECL empty_standard_into_type_backend : details::standard
_into_type_backend | | struct SOCI_EMPTY_DECL empty_standard_into_type_backend : details::standard
_into_type_backend | |
| | | | |
| skipping to change at line 119 | | skipping to change at line 119 | |
| | | | |
| void alloc(); | | void alloc(); | |
| void clean_up(); | | void clean_up(); | |
| void prepare(std::string const& query, details::statement_type eType); | | void prepare(std::string const& query, details::statement_type eType); | |
| | | | |
| exec_fetch_result execute(int number); | | exec_fetch_result execute(int number); | |
| exec_fetch_result fetch(int number); | | exec_fetch_result fetch(int number); | |
| | | | |
| long long get_affected_rows(); | | long long get_affected_rows(); | |
| int get_number_of_rows(); | | int get_number_of_rows(); | |
|
| | | std::string get_parameter_name(int index) const; | |
| | | | |
| std::string rewrite_for_procedure_call(std::string const& query); | | std::string rewrite_for_procedure_call(std::string const& query); | |
| | | | |
| int prepare_for_describe(); | | int prepare_for_describe(); | |
| void describe_column(int colNum, data_type& dtype, std::string& columnN
ame); | | void describe_column(int colNum, data_type& dtype, std::string& columnN
ame); | |
| | | | |
| empty_standard_into_type_backend* make_into_type_backend(); | | empty_standard_into_type_backend* make_into_type_backend(); | |
| empty_standard_use_type_backend* make_use_type_backend(); | | empty_standard_use_type_backend* make_use_type_backend(); | |
| empty_vector_into_type_backend* make_vector_into_type_backend(); | | empty_vector_into_type_backend* make_vector_into_type_backend(); | |
| empty_vector_use_type_backend* make_vector_use_type_backend(); | | empty_vector_use_type_backend* make_vector_use_type_backend(); | |
| | | | |
End of changes. 2 change blocks. |
| 1 lines changed or deleted | | 2 lines changed or added | |
|
| soci-mysql.h | | soci-mysql.h | |
| | | | |
| skipping to change at line 27 | | skipping to change at line 27 | |
| # define SOCI_MYSQL_DECL __declspec(dllimport) | | # define SOCI_MYSQL_DECL __declspec(dllimport) | |
| # endif // SOCI_DLL | | # endif // SOCI_DLL | |
| # endif // SOCI_MYSQL_SOURCE | | # endif // SOCI_MYSQL_SOURCE | |
| #endif // _WIN32 | | #endif // _WIN32 | |
| // | | // | |
| // If SOCI_MYSQL_DECL isn't defined yet define it now | | // If SOCI_MYSQL_DECL isn't defined yet define it now | |
| #ifndef SOCI_MYSQL_DECL | | #ifndef SOCI_MYSQL_DECL | |
| # define SOCI_MYSQL_DECL | | # define SOCI_MYSQL_DECL | |
| #endif | | #endif | |
| | | | |
|
| #include "soci-backend.h" | | #include <soci/soci-backend.h> | |
| #ifdef _WIN32 | | #ifdef _WIN32 | |
| #include <winsock.h> // SOCKET | | #include <winsock.h> // SOCKET | |
| #endif // _WIN32 | | #endif // _WIN32 | |
| #include <mysql.h> // MySQL Client | | #include <mysql.h> // MySQL Client | |
| #include <vector> | | #include <vector> | |
| | | | |
| namespace soci | | namespace soci | |
| { | | { | |
| | | | |
| class mysql_soci_error : public soci_error | | class mysql_soci_error : public soci_error | |
| | | | |
| skipping to change at line 155 | | skipping to change at line 155 | |
| virtual void alloc(); | | virtual void alloc(); | |
| virtual void clean_up(); | | virtual void clean_up(); | |
| virtual void prepare(std::string const &query, | | virtual void prepare(std::string const &query, | |
| details::statement_type eType); | | details::statement_type eType); | |
| | | | |
| virtual exec_fetch_result execute(int number); | | virtual exec_fetch_result execute(int number); | |
| virtual exec_fetch_result fetch(int number); | | virtual exec_fetch_result fetch(int number); | |
| | | | |
| virtual long long get_affected_rows(); | | virtual long long get_affected_rows(); | |
| virtual int get_number_of_rows(); | | virtual int get_number_of_rows(); | |
|
| | | virtual std::string get_parameter_name(int index) const; | |
| | | | |
| virtual std::string rewrite_for_procedure_call(std::string const &query
); | | virtual std::string rewrite_for_procedure_call(std::string const &query
); | |
| | | | |
| virtual int prepare_for_describe(); | | virtual int prepare_for_describe(); | |
| virtual void describe_column(int colNum, data_type &dtype, | | virtual void describe_column(int colNum, data_type &dtype, | |
| std::string &columnName); | | std::string &columnName); | |
| | | | |
| virtual mysql_standard_into_type_backend * make_into_type_backend(); | | virtual mysql_standard_into_type_backend * make_into_type_backend(); | |
| virtual mysql_standard_use_type_backend * make_use_type_backend(); | | virtual mysql_standard_use_type_backend * make_use_type_backend(); | |
| virtual mysql_vector_into_type_backend * make_vector_into_type_backend(
); | | virtual mysql_vector_into_type_backend * make_vector_into_type_backend(
); | |
| | | | |
| skipping to change at line 240 | | skipping to change at line 241 | |
| struct mysql_session_backend : details::session_backend | | struct mysql_session_backend : details::session_backend | |
| { | | { | |
| mysql_session_backend(connection_parameters const & parameters); | | mysql_session_backend(connection_parameters const & parameters); | |
| | | | |
| ~mysql_session_backend(); | | ~mysql_session_backend(); | |
| | | | |
| virtual void begin(); | | virtual void begin(); | |
| virtual void commit(); | | virtual void commit(); | |
| virtual void rollback(); | | virtual void rollback(); | |
| | | | |
|
| | | virtual bool get_last_insert_id(session&, std::string const&, long&); | |
| | | | |
| virtual std::string get_backend_name() const { return "mysql"; } | | virtual std::string get_backend_name() const { return "mysql"; } | |
| | | | |
| void clean_up(); | | void clean_up(); | |
| | | | |
| virtual mysql_statement_backend * make_statement_backend(); | | virtual mysql_statement_backend * make_statement_backend(); | |
| virtual mysql_rowid_backend * make_rowid_backend(); | | virtual mysql_rowid_backend * make_rowid_backend(); | |
| virtual mysql_blob_backend * make_blob_backend(); | | virtual mysql_blob_backend * make_blob_backend(); | |
| | | | |
| MYSQL *conn_; | | MYSQL *conn_; | |
| }; | | }; | |
| | | | |
End of changes. 3 change blocks. |
| 1 lines changed or deleted | | 4 lines changed or added | |
|
| soci-odbc.h | | soci-odbc.h | |
| | | | |
| skipping to change at line 27 | | skipping to change at line 27 | |
| # endif // SOCI_ODBC_SOURCE | | # endif // SOCI_ODBC_SOURCE | |
| # endif // SOCI_DLL | | # endif // SOCI_DLL | |
| #endif // _WIN32 | | #endif // _WIN32 | |
| // | | // | |
| // If SOCI_ODBC_DECL isn't defined yet define it now | | // If SOCI_ODBC_DECL isn't defined yet define it now | |
| #ifndef SOCI_ODBC_DECL | | #ifndef SOCI_ODBC_DECL | |
| # define SOCI_ODBC_DECL | | # define SOCI_ODBC_DECL | |
| #endif | | #endif | |
| | | | |
| #include <vector> | | #include <vector> | |
|
| | | #include <soci/soci-backend.h> | |
| #include <sstream> | | #include <sstream> | |
|
| #include <soci-backend.h> | | | |
| #if defined(_MSC_VER) || defined(__MINGW32__) | | #if defined(_MSC_VER) || defined(__MINGW32__) | |
|
| #include <soci-platform.h> | | #include "soci/soci-platform.h" | |
| #include <windows.h> | | #include <windows.h> | |
| #endif | | #endif | |
| #include <sqlext.h> // ODBC | | #include <sqlext.h> // ODBC | |
| #include <string.h> // strcpy() | | #include <string.h> // strcpy() | |
| | | | |
| namespace soci | | namespace soci | |
| { | | { | |
| | | | |
|
| // TODO: Do we want to make it a part of public interface? --mloskot | | | |
| namespace details | | namespace details | |
| { | | { | |
|
| | | // TODO: Do we want to make it a part of public interface? --mloskot | |
| std::size_t const odbc_max_buffer_length = 100 * 1024 * 1024; | | std::size_t const odbc_max_buffer_length = 100 * 1024 * 1024; | |
|
| | | | |
| | | // This cast is only used to avoid compiler warnings when passing strin | |
| | | gs | |
| | | // to ODBC functions, the returned string may *not* be really modified. | |
| | | inline SQLCHAR* sqlchar_cast(std::string const& s) | |
| | | { | |
| | | return reinterpret_cast<SQLCHAR*>(const_cast<char*>(s.c_str())); | |
| | | } | |
| } | | } | |
| | | | |
| // Option allowing to specify the "driver completion" parameter of | | // Option allowing to specify the "driver completion" parameter of | |
| // SQLDriverConnect(). Its possible values are the same as the allowed valu
es | | // SQLDriverConnect(). Its possible values are the same as the allowed valu
es | |
| // for this parameter in the official ODBC, i.e. one of SQL_DRIVER_XXX (in | | // for this parameter in the official ODBC, i.e. one of SQL_DRIVER_XXX (in | |
| // string form as all options are strings currently). | | // string form as all options are strings currently). | |
| extern SOCI_ODBC_DECL char const * odbc_option_driver_complete; | | extern SOCI_ODBC_DECL char const * odbc_option_driver_complete; | |
| | | | |
| struct odbc_statement_backend; | | struct odbc_statement_backend; | |
| | | | |
| | | | |
| skipping to change at line 214 | | skipping to change at line 221 | |
| virtual void alloc(); | | virtual void alloc(); | |
| virtual void clean_up(); | | virtual void clean_up(); | |
| virtual void prepare(std::string const &query, | | virtual void prepare(std::string const &query, | |
| details::statement_type eType); | | details::statement_type eType); | |
| | | | |
| virtual exec_fetch_result execute(int number); | | virtual exec_fetch_result execute(int number); | |
| virtual exec_fetch_result fetch(int number); | | virtual exec_fetch_result fetch(int number); | |
| | | | |
| virtual long long get_affected_rows(); | | virtual long long get_affected_rows(); | |
| virtual int get_number_of_rows(); | | virtual int get_number_of_rows(); | |
|
| | | virtual std::string get_parameter_name(int index) const; | |
| | | | |
| virtual std::string rewrite_for_procedure_call(std::string const &query
); | | virtual std::string rewrite_for_procedure_call(std::string const &query
); | |
| | | | |
| virtual int prepare_for_describe(); | | virtual int prepare_for_describe(); | |
| virtual void describe_column(int colNum, data_type &dtype, | | virtual void describe_column(int colNum, data_type &dtype, | |
| std::string &columnName); | | std::string &columnName); | |
| | | | |
| // helper for defining into vector<string> | | // helper for defining into vector<string> | |
| std::size_t column_size(int position); | | std::size_t column_size(int position); | |
| | | | |
| | | | |
| skipping to change at line 284 | | skipping to change at line 292 | |
| virtual void commit(); | | virtual void commit(); | |
| virtual void rollback(); | | virtual void rollback(); | |
| | | | |
| virtual bool get_next_sequence_value(session & s, | | virtual bool get_next_sequence_value(session & s, | |
| std::string const & sequence, long & value); | | std::string const & sequence, long & value); | |
| virtual bool get_last_insert_id(session & s, | | virtual bool get_last_insert_id(session & s, | |
| std::string const & table, long & value); | | std::string const & table, long & value); | |
| | | | |
| virtual std::string get_backend_name() const { return "odbc"; } | | virtual std::string get_backend_name() const { return "odbc"; } | |
| | | | |
|
| | | void configure_connection(); | |
| void reset_transaction(); | | void reset_transaction(); | |
| | | | |
| void clean_up(); | | void clean_up(); | |
| | | | |
| virtual odbc_statement_backend * make_statement_backend(); | | virtual odbc_statement_backend * make_statement_backend(); | |
| virtual odbc_rowid_backend * make_rowid_backend(); | | virtual odbc_rowid_backend * make_rowid_backend(); | |
| virtual odbc_blob_backend * make_blob_backend(); | | virtual odbc_blob_backend * make_blob_backend(); | |
| | | | |
| enum database_product | | enum database_product | |
| { | | { | |
| | | | |
End of changes. 8 change blocks. |
| 3 lines changed or deleted | | 13 lines changed or added | |
|
| soci-postgresql.h | | soci-postgresql.h | |
| | | | |
| skipping to change at line 27 | | skipping to change at line 27 | |
| # define SOCI_POSTGRESQL_DECL __declspec(dllimport) | | # define SOCI_POSTGRESQL_DECL __declspec(dllimport) | |
| # endif // SOCI_POSTGRESQL_SOURCE | | # endif // SOCI_POSTGRESQL_SOURCE | |
| # endif // SOCI_DLL | | # endif // SOCI_DLL | |
| #endif // _WIN32 | | #endif // _WIN32 | |
| // | | // | |
| // If SOCI_POSTGRESQL_DECL isn't defined yet define it now | | // If SOCI_POSTGRESQL_DECL isn't defined yet define it now | |
| #ifndef SOCI_POSTGRESQL_DECL | | #ifndef SOCI_POSTGRESQL_DECL | |
| # define SOCI_POSTGRESQL_DECL | | # define SOCI_POSTGRESQL_DECL | |
| #endif | | #endif | |
| | | | |
|
| #include <soci-backend.h> | | #include <soci/soci-backend.h> | |
| #include <libpq-fe.h> | | #include <libpq-fe.h> | |
| #include <vector> | | #include <vector> | |
| | | | |
| #ifdef _MSC_VER | | #ifdef _MSC_VER | |
| #pragma warning(disable:4512 4511) | | #pragma warning(disable:4512 4511) | |
| #endif | | #endif | |
| | | | |
| namespace soci | | namespace soci | |
| { | | { | |
| | | | |
| | | | |
| skipping to change at line 234 | | skipping to change at line 234 | |
| virtual void alloc(); | | virtual void alloc(); | |
| virtual void clean_up(); | | virtual void clean_up(); | |
| virtual void prepare(std::string const & query, | | virtual void prepare(std::string const & query, | |
| details::statement_type stType); | | details::statement_type stType); | |
| | | | |
| virtual exec_fetch_result execute(int number); | | virtual exec_fetch_result execute(int number); | |
| virtual exec_fetch_result fetch(int number); | | virtual exec_fetch_result fetch(int number); | |
| | | | |
| virtual long long get_affected_rows(); | | virtual long long get_affected_rows(); | |
| virtual int get_number_of_rows(); | | virtual int get_number_of_rows(); | |
|
| | | virtual std::string get_parameter_name(int index) const; | |
| | | | |
| virtual std::string rewrite_for_procedure_call(std::string const & quer
y); | | virtual std::string rewrite_for_procedure_call(std::string const & quer
y); | |
| | | | |
| virtual int prepare_for_describe(); | | virtual int prepare_for_describe(); | |
| virtual void describe_column(int colNum, data_type & dtype, | | virtual void describe_column(int colNum, data_type & dtype, | |
| std::string & columnName); | | std::string & columnName); | |
| | | | |
| virtual postgresql_standard_into_type_backend * make_into_type_backend(
); | | virtual postgresql_standard_into_type_backend * make_into_type_backend(
); | |
| virtual postgresql_standard_use_type_backend * make_use_type_backend(); | | virtual postgresql_standard_use_type_backend * make_use_type_backend(); | |
| virtual postgresql_vector_into_type_backend * make_vector_into_type_bac
kend(); | | virtual postgresql_vector_into_type_backend * make_vector_into_type_bac
kend(); | |
| | | | |
End of changes. 2 change blocks. |
| 1 lines changed or deleted | | 2 lines changed or added | |
|
| soci-sqlite3.h | | soci-sqlite3.h | |
| | | | |
| skipping to change at line 28 | | skipping to change at line 28 | |
| # endif // SOCI_DLL | | # endif // SOCI_DLL | |
| #endif // _WIN32 | | #endif // _WIN32 | |
| // | | // | |
| // If SOCI_SQLITE3_DECL isn't defined yet define it now | | // If SOCI_SQLITE3_DECL isn't defined yet define it now | |
| #ifndef SOCI_SQLITE3_DECL | | #ifndef SOCI_SQLITE3_DECL | |
| # define SOCI_SQLITE3_DECL | | # define SOCI_SQLITE3_DECL | |
| #endif | | #endif | |
| | | | |
| #include <cstdarg> | | #include <cstdarg> | |
| #include <vector> | | #include <vector> | |
|
| #include "soci-backend.h" | | #include <soci/soci-backend.h> | |
| | | | |
| // Disable flood of nonsense warnings generated for SQLite | | // Disable flood of nonsense warnings generated for SQLite | |
| #ifdef _MSC_VER | | #ifdef _MSC_VER | |
| #pragma warning(push) | | #pragma warning(push) | |
| #pragma warning(disable:4510 4512 4610) | | #pragma warning(disable:4510 4512 4610) | |
| #endif | | #endif | |
| | | | |
| namespace sqlite_api | | namespace sqlite_api | |
| { | | { | |
| | | | |
| | | | |
| skipping to change at line 189 | | skipping to change at line 189 | |
| virtual void clean_up(); | | virtual void clean_up(); | |
| virtual void prepare(std::string const &query, | | virtual void prepare(std::string const &query, | |
| details::statement_type eType); | | details::statement_type eType); | |
| void reset_if_needed(); | | void reset_if_needed(); | |
| | | | |
| virtual exec_fetch_result execute(int number); | | virtual exec_fetch_result execute(int number); | |
| virtual exec_fetch_result fetch(int number); | | virtual exec_fetch_result fetch(int number); | |
| | | | |
| virtual long long get_affected_rows(); | | virtual long long get_affected_rows(); | |
| virtual int get_number_of_rows(); | | virtual int get_number_of_rows(); | |
|
| | | virtual std::string get_parameter_name(int index) const; | |
| | | | |
| virtual std::string rewrite_for_procedure_call(std::string const &query
); | | virtual std::string rewrite_for_procedure_call(std::string const &query
); | |
| | | | |
| virtual int prepare_for_describe(); | | virtual int prepare_for_describe(); | |
| virtual void describe_column(int colNum, data_type &dtype, | | virtual void describe_column(int colNum, data_type &dtype, | |
| std::string &columnName); | | std::string &columnName); | |
| | | | |
| virtual sqlite3_standard_into_type_backend * make_into_type_backend(); | | virtual sqlite3_standard_into_type_backend * make_into_type_backend(); | |
| virtual sqlite3_standard_use_type_backend * make_use_type_backend(); | | virtual sqlite3_standard_use_type_backend * make_use_type_backend(); | |
| virtual sqlite3_vector_into_type_backend * make_vector_into_type_backen
d(); | | virtual sqlite3_vector_into_type_backend * make_vector_into_type_backen
d(); | |
| | | | |
| skipping to change at line 259 | | skipping to change at line 260 | |
| struct sqlite3_session_backend : details::session_backend | | struct sqlite3_session_backend : details::session_backend | |
| { | | { | |
| sqlite3_session_backend(connection_parameters const & parameters); | | sqlite3_session_backend(connection_parameters const & parameters); | |
| | | | |
| ~sqlite3_session_backend(); | | ~sqlite3_session_backend(); | |
| | | | |
| virtual void begin(); | | virtual void begin(); | |
| virtual void commit(); | | virtual void commit(); | |
| virtual void rollback(); | | virtual void rollback(); | |
| | | | |
|
| | | virtual bool get_last_insert_id(session&, std::string const&, long&); | |
| | | | |
| virtual std::string get_backend_name() const { return "sqlite3"; } | | virtual std::string get_backend_name() const { return "sqlite3"; } | |
| | | | |
| void clean_up(); | | void clean_up(); | |
| | | | |
| virtual sqlite3_statement_backend * make_statement_backend(); | | virtual sqlite3_statement_backend * make_statement_backend(); | |
| virtual sqlite3_rowid_backend * make_rowid_backend(); | | virtual sqlite3_rowid_backend * make_rowid_backend(); | |
| virtual sqlite3_blob_backend * make_blob_backend(); | | virtual sqlite3_blob_backend * make_blob_backend(); | |
| | | | |
| sqlite_api::sqlite3 *conn_; | | sqlite_api::sqlite3 *conn_; | |
| }; | | }; | |
| | | | |
End of changes. 3 change blocks. |
| 1 lines changed or deleted | | 4 lines changed or added | |
|
| soci.h | | soci.h | |
| | | | |
| skipping to change at line 16 | | skipping to change at line 16 | |
| // | | // | |
| | | | |
| #ifndef SOCI_H_INCLUDED | | #ifndef SOCI_H_INCLUDED | |
| #define SOCI_H_INCLUDED | | #define SOCI_H_INCLUDED | |
| | | | |
| #ifdef _MSC_VER | | #ifdef _MSC_VER | |
| #pragma warning(disable:4251 4512 4511) | | #pragma warning(disable:4251 4512 4511) | |
| #endif | | #endif | |
| | | | |
| // namespace soci | | // namespace soci | |
|
| #include "backend-loader.h" | | #include "soci/backend-loader.h" | |
| #include "blob.h" | | #include "soci/blob.h" | |
| #include "blob-exchange.h" | | #include "soci/blob-exchange.h" | |
| #include "connection-pool.h" | | #include "soci/connection-pool.h" | |
| #include "error.h" | | #include "soci/error.h" | |
| #include "exchange-traits.h" | | #include "soci/exchange-traits.h" | |
| #include "into.h" | | #include "soci/into.h" | |
| #include "into-type.h" | | #include "soci/into-type.h" | |
| #include "once-temp-type.h" | | #include "soci/once-temp-type.h" | |
| #include "prepare-temp-type.h" | | #include "soci/prepare-temp-type.h" | |
| #include "procedure.h" | | #include "soci/procedure.h" | |
| #include "ref-counted-prepare-info.h" | | #include "soci/ref-counted-prepare-info.h" | |
| #include "ref-counted-statement.h" | | #include "soci/ref-counted-statement.h" | |
| #include "row.h" | | #include "soci/row.h" | |
| #include "row-exchange.h" | | #include "soci/row-exchange.h" | |
| #include "rowid.h" | | #include "soci/rowid.h" | |
| #include "rowid-exchange.h" | | #include "soci/rowid-exchange.h" | |
| #include "rowset.h" | | #include "soci/rowset.h" | |
| #include "session.h" | | #include "soci/session.h" | |
| #include "soci-backend.h" | | #include "soci/soci-backend.h" | |
| #include "soci-config.h" | | #include "soci/soci-config.h" | |
| #include "soci-platform.h" | | #include "soci/soci-platform.h" | |
| #include "statement.h" | | #include "soci/statement.h" | |
| #include "transaction.h" | | #include "soci/transaction.h" | |
| #include "type-conversion.h" | | #include "soci/type-conversion.h" | |
| #include "type-conversion-traits.h" | | #include "soci/type-conversion-traits.h" | |
| #include "type-holder.h" | | #include "soci/type-holder.h" | |
| #include "type-ptr.h" | | #include "soci/type-ptr.h" | |
| #include "unsigned-types.h" | | #include "soci/unsigned-types.h" | |
| #include "use.h" | | #include "soci/use.h" | |
| #include "use-type.h" | | #include "soci/use-type.h" | |
| #include "values.h" | | #include "soci/values.h" | |
| #include "values-exchange.h" | | #include "soci/values-exchange.h" | |
| | | | |
| // namespace boost | | // namespace boost | |
| #ifdef SOCI_USE_BOOST | | #ifdef SOCI_USE_BOOST | |
| #include <boost/version.hpp> | | #include <boost/version.hpp> | |
| #if defined(BOOST_VERSION) && BOOST_VERSION >= 103500 | | #if defined(BOOST_VERSION) && BOOST_VERSION >= 103500 | |
|
| #include "boost-fusion.h" | | #include "soci/boost-fusion.h" | |
| #endif // BOOST_VERSION | | #endif // BOOST_VERSION | |
|
| #include "boost-optional.h" | | #include "soci/boost-optional.h" | |
| #include "boost-tuple.h" | | #include "soci/boost-tuple.h" | |
| #include "boost-gregorian-date.h" | | #include "soci/boost-gregorian-date.h" | |
| #endif // SOCI_USE_BOOST | | #endif // SOCI_USE_BOOST | |
| | | | |
| #endif // SOCI_H_INCLUDED | | #endif // SOCI_H_INCLUDED | |
| | | | |
End of changes. 3 change blocks. |
| 37 lines changed or deleted | | 37 lines changed or added | |
|
| statement.h | | statement.h | |
| // | | // | |
| // Copyright (C) 2004-2008 Maciej Sobczak, Stephen Hutton | | // Copyright (C) 2004-2008 Maciej Sobczak, Stephen Hutton | |
| // Distributed under the Boost Software License, Version 1.0. | | // Distributed under the Boost Software License, Version 1.0. | |
| // (See accompanying file LICENSE_1_0.txt or copy at | | // (See accompanying file LICENSE_1_0.txt or copy at | |
| // http://www.boost.org/LICENSE_1_0.txt) | | // http://www.boost.org/LICENSE_1_0.txt) | |
| // | | // | |
| | | | |
| #ifndef SOCI_STATEMENT_H_INCLUDED | | #ifndef SOCI_STATEMENT_H_INCLUDED | |
| #define SOCI_STATEMENT_H_INCLUDED | | #define SOCI_STATEMENT_H_INCLUDED | |
| | | | |
|
| #include "bind-values.h" | | #include "soci/bind-values.h" | |
| #include "into-type.h" | | #include "soci/into-type.h" | |
| #include "into.h" | | #include "soci/into.h" | |
| #include "use-type.h" | | #include "soci/noreturn.h" | |
| #include "use.h" | | #include "soci/use-type.h" | |
| #include "soci-backend.h" | | #include "soci/use.h" | |
| #include "row.h" | | #include "soci/soci-backend.h" | |
| | | #include "soci/row.h" | |
| // std | | // std | |
| #include <cstddef> | | #include <cstddef> | |
| #include <string> | | #include <string> | |
|
| #include <map> | | | |
| #include <vector> | | #include <vector> | |
| | | | |
| namespace soci | | namespace soci | |
| { | | { | |
| | | | |
| class session; | | class session; | |
| class values; | | class values; | |
| | | | |
| namespace details | | namespace details | |
| { | | { | |
| | | | |
| skipping to change at line 95 | | skipping to change at line 95 | |
| session & session_; | | session & session_; | |
| | | | |
| std::string rewrite_for_procedure_call(std::string const & query); | | std::string rewrite_for_procedure_call(std::string const & query); | |
| | | | |
| protected: | | protected: | |
| into_type_vector intos_; | | into_type_vector intos_; | |
| use_type_vector uses_; | | use_type_vector uses_; | |
| std::vector<indicator *> indicators_; | | std::vector<indicator *> indicators_; | |
| | | | |
| private: | | private: | |
|
| | | // Call this method from a catch clause (only!) to rethrow the exceptio | |
| | | n | |
| | | // after adding the context in which it happened, including the provide | |
| | | d | |
| | | // description of the operation that failed, the SQL query and, if | |
| | | // applicable, its parameters. | |
| | | SOCI_NORETURN rethrow_current_exception_with_context(char const* operat | |
| | | ion); | |
| | | | |
| int refCount_; | | int refCount_; | |
| | | | |
| row * row_; | | row * row_; | |
| std::size_t fetchSize_; | | std::size_t fetchSize_; | |
| std::size_t initialFetchSize_; | | std::size_t initialFetchSize_; | |
| std::string query_; | | std::string query_; | |
|
| std::map<std::string, use_type_base *> namedUses_; | | | |
| | | | |
| into_type_vector intosForRow_; | | into_type_vector intosForRow_; | |
| int definePositionForRow_; | | int definePositionForRow_; | |
| | | | |
| template <typename Into> | | template <typename Into> | |
| void exchange_for_rowset_(Into const &i) | | void exchange_for_rowset_(Into const &i) | |
| { | | { | |
| if (intos_.empty() == false) | | if (intos_.empty() == false) | |
| { | | { | |
| throw soci_error("Explicit into elements not allowed with rowse
t."); | | throw soci_error("Explicit into elements not allowed with rowse
t."); | |
| | | | |
End of changes. 4 change blocks. |
| 9 lines changed or deleted | | 16 lines changed or added | |
|
| type-conversion.h | | type-conversion.h | |
| // | | // | |
| // Copyright (C) 2004-2008 Maciej Sobczak, Stephen Hutton | | // Copyright (C) 2004-2008 Maciej Sobczak, Stephen Hutton | |
| // Distributed under the Boost Software License, Version 1.0. | | // Distributed under the Boost Software License, Version 1.0. | |
| // (See accompanying file LICENSE_1_0.txt or copy at | | // (See accompanying file LICENSE_1_0.txt or copy at | |
| // http://www.boost.org/LICENSE_1_0.txt) | | // http://www.boost.org/LICENSE_1_0.txt) | |
| // | | // | |
| | | | |
| #ifndef SOCI_TYPE_CONVERSION_H_INCLUDED | | #ifndef SOCI_TYPE_CONVERSION_H_INCLUDED | |
| #define SOCI_TYPE_CONVERSION_H_INCLUDED | | #define SOCI_TYPE_CONVERSION_H_INCLUDED | |
| | | | |
|
| #include "type-conversion-traits.h" | | #include "soci/type-conversion-traits.h" | |
| #include "into-type.h" | | #include "soci/into-type.h" | |
| #include "use-type.h" | | #include "soci/use-type.h" | |
| // std | | // std | |
|
| #include <cassert> | | | |
| #include <cstddef> | | #include <cstddef> | |
| #include <string> | | #include <string> | |
| #include <vector> | | #include <vector> | |
| | | | |
| namespace soci | | namespace soci | |
| { | | { | |
| | | | |
| namespace details | | namespace details | |
| { | | { | |
| | | | |
| | | | |
| skipping to change at line 51 | | skipping to change at line 50 | |
| { | | { | |
| public: | | public: | |
| typedef typename type_conversion<T>::base_type base_type; | | typedef typename type_conversion<T>::base_type base_type; | |
| | | | |
| conversion_into_type(T & value) | | conversion_into_type(T & value) | |
| : into_type<base_type>(details::base_value_holder<T>::val_, ownInd_
) | | : into_type<base_type>(details::base_value_holder<T>::val_, ownInd_
) | |
| , value_(value) | | , value_(value) | |
| , ownInd_() | | , ownInd_() | |
| , ind_(ownInd_) | | , ind_(ownInd_) | |
| { | | { | |
|
| assert(ownInd_ == ind_); | | | |
| } | | } | |
| | | | |
| conversion_into_type(T & value, indicator & ind) | | conversion_into_type(T & value, indicator & ind) | |
| : into_type<base_type>(details::base_value_holder<T>::val_, ind) | | : into_type<base_type>(details::base_value_holder<T>::val_, ind) | |
| , value_(value) | | , value_(value) | |
| , ownInd_(ind) // unused, just keep the pair of indicator(s) consis
tent | | , ownInd_(ind) // unused, just keep the pair of indicator(s) consis
tent | |
| , ind_(ind) | | , ind_(ind) | |
| { | | { | |
|
| assert(ownInd_ == ind_); | | | |
| } | | } | |
| | | | |
| private: | | private: | |
| void convert_from_base() | | void convert_from_base() | |
| { | | { | |
| type_conversion<T>::from_base( | | type_conversion<T>::from_base( | |
| details::base_value_holder<T>::val_, ind_, value_); | | details::base_value_holder<T>::val_, ind_, value_); | |
| } | | } | |
| | | | |
| T & value_; | | T & value_; | |
| | | | |
| skipping to change at line 97 | | skipping to change at line 94 | |
| public: | | public: | |
| typedef typename type_conversion<T>::base_type base_type; | | typedef typename type_conversion<T>::base_type base_type; | |
| | | | |
| conversion_use_type(T & value, std::string const & name = std::string()
) | | conversion_use_type(T & value, std::string const & name = std::string()
) | |
| : use_type<base_type>(details::base_value_holder<T>::val_, ownInd_,
name) | | : use_type<base_type>(details::base_value_holder<T>::val_, ownInd_,
name) | |
| , value_(value) | | , value_(value) | |
| , ownInd_() | | , ownInd_() | |
| , ind_(ownInd_) | | , ind_(ownInd_) | |
| , readOnly_(false) | | , readOnly_(false) | |
| { | | { | |
|
| assert(ownInd_ == ind_); | | | |
| | | | |
| // TODO: likely to be removed (SHA: c166625a28f7c907318134f625ff5ac
ea7d9a1f8) | | // TODO: likely to be removed (SHA: c166625a28f7c907318134f625ff5ac
ea7d9a1f8) | |
| //convert_to_base(); | | //convert_to_base(); | |
| } | | } | |
| | | | |
| conversion_use_type(T const & value, std::string const & name = std::st
ring()) | | conversion_use_type(T const & value, std::string const & name = std::st
ring()) | |
| : use_type<base_type>(details::base_value_holder<T>::val_, ownInd_,
name) | | : use_type<base_type>(details::base_value_holder<T>::val_, ownInd_,
name) | |
| , value_(const_cast<T &>(value)) | | , value_(const_cast<T &>(value)) | |
| , ownInd_() | | , ownInd_() | |
| , ind_(ownInd_) | | , ind_(ownInd_) | |
| , readOnly_(true) | | , readOnly_(true) | |
| { | | { | |
|
| assert(ownInd_ == ind_); | | | |
| | | | |
| // TODO: likely to be removed (SHA: c166625a28f7c907318134f625ff5ac
ea7d9a1f8) | | // TODO: likely to be removed (SHA: c166625a28f7c907318134f625ff5ac
ea7d9a1f8) | |
| //convert_to_base(); | | //convert_to_base(); | |
| } | | } | |
| | | | |
| conversion_use_type(T & value, indicator & ind, | | conversion_use_type(T & value, indicator & ind, | |
| std::string const & name = std::string()) | | std::string const & name = std::string()) | |
| : use_type<base_type>(details::base_value_holder<T>::val_, ind, nam
e) | | : use_type<base_type>(details::base_value_holder<T>::val_, ind, nam
e) | |
| , value_(value) | | , value_(value) | |
| , ind_(ind) | | , ind_(ind) | |
| , readOnly_(false) | | , readOnly_(false) | |
| | | | |
| skipping to change at line 202 | | skipping to change at line 195 | |
| typename type_conversion<T>::base_type | | typename type_conversion<T>::base_type | |
| > base_type; | | > base_type; | |
| | | | |
| conversion_into_type(std::vector<T> & value) | | conversion_into_type(std::vector<T> & value) | |
| : details::base_vector_holder<T>(value.size()) | | : details::base_vector_holder<T>(value.size()) | |
| , into_type<base_type>(details::base_vector_holder<T>::vec_, ownInd
_) | | , into_type<base_type>(details::base_vector_holder<T>::vec_, ownInd
_) | |
| , value_(value) | | , value_(value) | |
| , ownInd_() | | , ownInd_() | |
| , ind_(ownInd_) | | , ind_(ownInd_) | |
| { | | { | |
|
| assert(ownInd_ == ind_); | | | |
| } | | } | |
| | | | |
| conversion_into_type(std::vector<T> & value, std::vector<indicator> & i
nd) | | conversion_into_type(std::vector<T> & value, std::vector<indicator> & i
nd) | |
| : details::base_vector_holder<T>(value.size()) | | : details::base_vector_holder<T>(value.size()) | |
| , into_type<base_type>(details::base_vector_holder<T>::vec_, ind) | | , into_type<base_type>(details::base_vector_holder<T>::vec_, ind) | |
| , value_(value) | | , value_(value) | |
| , ind_(ind) | | , ind_(ind) | |
| {} | | {} | |
| | | | |
| virtual std::size_t size() const | | virtual std::size_t size() const | |
| | | | |
| skipping to change at line 273 | | skipping to change at line 265 | |
| | | | |
| conversion_use_type(std::vector<T> & value, | | conversion_use_type(std::vector<T> & value, | |
| std::string const & name=std::string()) | | std::string const & name=std::string()) | |
| : details::base_vector_holder<T>(value.size()) | | : details::base_vector_holder<T>(value.size()) | |
| , use_type<base_type>( | | , use_type<base_type>( | |
| details::base_vector_holder<T>::vec_, ownInd_, name) | | details::base_vector_holder<T>::vec_, ownInd_, name) | |
| , value_(value) | | , value_(value) | |
| , ownInd_() | | , ownInd_() | |
| , ind_(ownInd_) | | , ind_(ownInd_) | |
| { | | { | |
|
| assert(ownInd_ == ind_); | | | |
| } | | } | |
| | | | |
| conversion_use_type(std::vector<T> & value, | | conversion_use_type(std::vector<T> & value, | |
| std::vector<indicator> & ind, | | std::vector<indicator> & ind, | |
| std::string const & name = std::string()) | | std::string const & name = std::string()) | |
| : details::base_vector_holder<T>(value.size()) | | : details::base_vector_holder<T>(value.size()) | |
| , use_type<base_type>( | | , use_type<base_type>( | |
| details::base_vector_holder<T>::vec_, ind, name) | | details::base_vector_holder<T>::vec_, ind, name) | |
| , value_(value) | | , value_(value) | |
| , ind_(ind) | | , ind_(ind) | |
| | | | |
End of changes. 8 change blocks. |
| 12 lines changed or deleted | | 3 lines changed or added | |
|
| use-type.h | | use-type.h | |
| // | | // | |
| // Copyright (C) 2004-2008 Maciej Sobczak, Stephen Hutton | | // Copyright (C) 2004-2008 Maciej Sobczak, Stephen Hutton | |
| // Distributed under the Boost Software License, Version 1.0. | | // Distributed under the Boost Software License, Version 1.0. | |
| // (See accompanying file LICENSE_1_0.txt or copy at | | // (See accompanying file LICENSE_1_0.txt or copy at | |
| // http://www.boost.org/LICENSE_1_0.txt) | | // http://www.boost.org/LICENSE_1_0.txt) | |
| // | | // | |
| | | | |
| #ifndef SOCI_USE_TYPE_H_INCLUDED | | #ifndef SOCI_USE_TYPE_H_INCLUDED | |
| #define SOCI_USE_TYPE_H_INCLUDED | | #define SOCI_USE_TYPE_H_INCLUDED | |
| | | | |
|
| #include "soci-backend.h" | | #include "soci/soci-backend.h" | |
| #include "type-ptr.h" | | #include "soci/type-ptr.h" | |
| #include "exchange-traits.h" | | #include "soci/exchange-traits.h" | |
| // std | | // std | |
| #include <cstddef> | | #include <cstddef> | |
|
| | | #include <ostream> | |
| #include <string> | | #include <string> | |
| #include <vector> | | #include <vector> | |
| | | | |
| namespace soci { namespace details { | | namespace soci { namespace details { | |
| | | | |
| class statement_impl; | | class statement_impl; | |
| | | | |
| // this is intended to be a base class for all classes that deal with | | // this is intended to be a base class for all classes that deal with | |
| // binding input data (and OUT PL/SQL variables) | | // binding input data (and OUT PL/SQL variables) | |
| class SOCI_DECL use_type_base | | class SOCI_DECL use_type_base | |
| { | | { | |
| public: | | public: | |
| virtual ~use_type_base() {} | | virtual ~use_type_base() {} | |
| | | | |
| virtual void bind(statement_impl & st, int & position) = 0; | | virtual void bind(statement_impl & st, int & position) = 0; | |
|
| | | virtual std::string get_name() const = 0; | |
| | | virtual void dump_value(std::ostream& os) const = 0; | |
| virtual void pre_use() = 0; | | virtual void pre_use() = 0; | |
| virtual void post_use(bool gotData) = 0; | | virtual void post_use(bool gotData) = 0; | |
| virtual void clean_up() = 0; | | virtual void clean_up() = 0; | |
| | | | |
| virtual std::size_t size() const = 0; // returns the number of element
s | | virtual std::size_t size() const = 0; // returns the number of element
s | |
| }; | | }; | |
| | | | |
| typedef type_ptr<use_type_base> use_type_ptr; | | typedef type_ptr<use_type_base> use_type_ptr; | |
| | | | |
| class SOCI_DECL standard_use_type : public use_type_base | | class SOCI_DECL standard_use_type : public use_type_base | |
| | | | |
| skipping to change at line 73 | | skipping to change at line 76 | |
| , readOnly_(readOnly) | | , readOnly_(readOnly) | |
| , name_(name) | | , name_(name) | |
| , backEnd_(NULL) | | , backEnd_(NULL) | |
| { | | { | |
| // FIXME | | // FIXME | |
| //convert_to_base(); | | //convert_to_base(); | |
| } | | } | |
| | | | |
| virtual ~standard_use_type(); | | virtual ~standard_use_type(); | |
| virtual void bind(statement_impl & st, int & position); | | virtual void bind(statement_impl & st, int & position); | |
|
| std::string get_name() const { return name_; } | | virtual std::string get_name() const { return name_; } | |
| | | virtual void dump_value(std::ostream& os) const; | |
| virtual void * get_data() { return data_; } | | virtual void * get_data() { return data_; } | |
| | | | |
| // conversion hook (from arbitrary user type to base type) | | // conversion hook (from arbitrary user type to base type) | |
| virtual void convert_to_base() {} | | virtual void convert_to_base() {} | |
| virtual void convert_from_base() {} | | virtual void convert_from_base() {} | |
| | | | |
| protected: | | protected: | |
| virtual void pre_use(); | | virtual void pre_use(); | |
| | | | |
| private: | | private: | |
| | | | |
| skipping to change at line 123 | | skipping to change at line 127 | |
| , type_(type) | | , type_(type) | |
| , ind_(&ind) | | , ind_(&ind) | |
| , name_(name) | | , name_(name) | |
| , backEnd_(NULL) | | , backEnd_(NULL) | |
| {} | | {} | |
| | | | |
| ~vector_use_type(); | | ~vector_use_type(); | |
| | | | |
| private: | | private: | |
| virtual void bind(statement_impl& st, int & position); | | virtual void bind(statement_impl& st, int & position); | |
|
| | | virtual std::string get_name() const { return name_; } | |
| | | virtual void dump_value(std::ostream& os) const; | |
| virtual void pre_use(); | | virtual void pre_use(); | |
| virtual void post_use(bool) { /* nothing to do */ } | | virtual void post_use(bool) { /* nothing to do */ } | |
| virtual void clean_up(); | | virtual void clean_up(); | |
| virtual std::size_t size() const; | | virtual std::size_t size() const; | |
| | | | |
| void* data_; | | void* data_; | |
| exchange_type type_; | | exchange_type type_; | |
| std::vector<indicator> const* ind_; | | std::vector<indicator> const* ind_; | |
| std::string name_; | | std::string name_; | |
| | | | |
| | | | |
End of changes. 5 change blocks. |
| 4 lines changed or deleted | | 10 lines changed or added | |
|
| use.h | | use.h | |
| // | | // | |
| // Copyright (C) 2004-2008 Maciej Sobczak, Stephen Hutton | | // Copyright (C) 2004-2008 Maciej Sobczak, Stephen Hutton | |
| // Distributed under the Boost Software License, Version 1.0. | | // Distributed under the Boost Software License, Version 1.0. | |
| // (See accompanying file LICENSE_1_0.txt or copy at | | // (See accompanying file LICENSE_1_0.txt or copy at | |
| // http://www.boost.org/LICENSE_1_0.txt) | | // http://www.boost.org/LICENSE_1_0.txt) | |
| // | | // | |
| | | | |
| #ifndef SOCI_USE_H_INCLUDED | | #ifndef SOCI_USE_H_INCLUDED | |
| #define SOCI_USE_H_INCLUDED | | #define SOCI_USE_H_INCLUDED | |
| | | | |
|
| #include "soci-backend.h" | | #include "soci/use-type.h" | |
| | | #include "soci/exchange-traits.h" | |
| | | #include "soci/type-conversion.h" | |
| | | #include "soci/soci-backend.h" | |
| | | | |
| namespace soci | | namespace soci | |
| { | | { | |
| | | | |
| namespace details | | namespace details | |
| { | | { | |
| template <typename T, typename Indicator> | | template <typename T, typename Indicator> | |
| struct use_container | | struct use_container | |
| { | | { | |
| use_container(T &_t, Indicator &_ind, const std::string &_name) | | use_container(T &_t, Indicator &_ind, const std::string &_name) | |
| | | | |
End of changes. 1 change blocks. |
| 1 lines changed or deleted | | 4 lines changed or added | |
|
| values-exchange.h | | values-exchange.h | |
| // | | // | |
| // Copyright (C) 2004-2008 Maciej Sobczak, Stephen Hutton | | // Copyright (C) 2004-2008 Maciej Sobczak, Stephen Hutton | |
| // Distributed under the Boost Software License, Version 1.0. | | // Distributed under the Boost Software License, Version 1.0. | |
| // (See accompanying file LICENSE_1_0.txt or copy at | | // (See accompanying file LICENSE_1_0.txt or copy at | |
| // http://www.boost.org/LICENSE_1_0.txt) | | // http://www.boost.org/LICENSE_1_0.txt) | |
| // | | // | |
| | | | |
| #ifndef SOCI_VALUES_EXCHANGE_H_INCLUDED | | #ifndef SOCI_VALUES_EXCHANGE_H_INCLUDED | |
| #define SOCI_VALUES_EXCHANGE_H_INCLUDED | | #define SOCI_VALUES_EXCHANGE_H_INCLUDED | |
| | | | |
|
| #include "values.h" | | #include "soci/values.h" | |
| #include "into-type.h" | | #include "soci/into-type.h" | |
| #include "use-type.h" | | #include "soci/use-type.h" | |
| #include "row-exchange.h" | | #include "soci/row-exchange.h" | |
| // std | | // std | |
| #include <cstddef> | | #include <cstddef> | |
|
| | | #include <sstream> | |
| #include <string> | | #include <string> | |
| #include <vector> | | #include <vector> | |
| | | | |
| namespace soci | | namespace soci | |
| { | | { | |
| | | | |
| namespace details | | namespace details | |
| { | | { | |
| | | | |
| template <> | | template <> | |
| | | | |
| skipping to change at line 56 | | skipping to change at line 57 | |
| {} | | {} | |
| | | | |
| virtual void bind(details::statement_impl & st, int & /*position*/) | | virtual void bind(details::statement_impl & st, int & /*position*/) | |
| { | | { | |
| v_.uppercase_column_names(st.session_.get_uppercase_column_names())
; | | v_.uppercase_column_names(st.session_.get_uppercase_column_names())
; | |
| | | | |
| convert_to_base(); | | convert_to_base(); | |
| st.bind(v_); | | st.bind(v_); | |
| } | | } | |
| | | | |
|
| | | virtual std::string get_name() const | |
| | | { | |
| | | std::ostringstream oss; | |
| | | | |
| | | oss << "("; | |
| | | | |
| | | std::size_t const num_columns = v_.get_number_of_columns(); | |
| | | for (std::size_t n = 0; n < num_columns; ++n) | |
| | | { | |
| | | if (n != 0) | |
| | | oss << ", "; | |
| | | | |
| | | oss << v_.get_properties(n).get_name(); | |
| | | } | |
| | | | |
| | | oss << ")"; | |
| | | | |
| | | return oss.str(); | |
| | | } | |
| | | | |
| | | virtual void dump_value(std::ostream& os) const | |
| | | { | |
| | | // TODO: Dump all columns. | |
| | | os << "<value>"; | |
| | | } | |
| | | | |
| virtual void post_use(bool /*gotData*/) | | virtual void post_use(bool /*gotData*/) | |
| { | | { | |
| v_.reset_get_counter(); | | v_.reset_get_counter(); | |
| convert_from_base(); | | convert_from_base(); | |
| } | | } | |
| | | | |
| virtual void pre_use() {convert_to_base();} | | virtual void pre_use() {convert_to_base();} | |
| virtual void clean_up() {v_.clean_up();} | | virtual void clean_up() {v_.clean_up();} | |
| virtual std::size_t size() const { return 1; } | | virtual std::size_t size() const { return 1; } | |
| | | | |
| | | | |
End of changes. 3 change blocks. |
| 4 lines changed or deleted | | 31 lines changed or added | |
|
| values.h | | values.h | |
| // | | // | |
| // Copyright (C) 2004-2008 Maciej Sobczak, Stephen Hutton | | // Copyright (C) 2004-2008 Maciej Sobczak, Stephen Hutton | |
| // Distributed under the Boost Software License, Version 1.0. | | // Distributed under the Boost Software License, Version 1.0. | |
| // (See accompanying file LICENSE_1_0.txt or copy at | | // (See accompanying file LICENSE_1_0.txt or copy at | |
| // http://www.boost.org/LICENSE_1_0.txt) | | // http://www.boost.org/LICENSE_1_0.txt) | |
| // | | // | |
| | | | |
| #ifndef SOCI_VALUES_H_INCLUDED | | #ifndef SOCI_VALUES_H_INCLUDED | |
| #define SOCI_VALUES_H_INCLUDED | | #define SOCI_VALUES_H_INCLUDED | |
| | | | |
|
| #include "statement.h" | | #include "soci/statement.h" | |
| #include "into-type.h" | | #include "soci/into-type.h" | |
| #include "use-type.h" | | #include "soci/use-type.h" | |
| // std | | // std | |
| #include <cstddef> | | #include <cstddef> | |
| #include <map> | | #include <map> | |
| #include <sstream> | | #include <sstream> | |
| #include <string> | | #include <string> | |
| #include <utility> | | #include <utility> | |
| #include <vector> | | #include <vector> | |
| | | | |
| namespace soci | | namespace soci | |
| { | | { | |
| | | | |
| skipping to change at line 233 | | skipping to change at line 233 | |
| { | | { | |
| set(value); | | set(value); | |
| return *this; | | return *this; | |
| } | | } | |
| | | | |
| void uppercase_column_names(bool forceToUpper) | | void uppercase_column_names(bool forceToUpper) | |
| { | | { | |
| uppercaseColumnNames_ = forceToUpper; | | uppercaseColumnNames_ = forceToUpper; | |
| } | | } | |
| | | | |
|
| | | std::size_t get_number_of_columns() const | |
| | | { | |
| | | return row_ ? row_->size() : 0; | |
| | | } | |
| | | | |
| column_properties const& get_properties(std::size_t pos) const; | | column_properties const& get_properties(std::size_t pos) const; | |
| column_properties const& get_properties(std::string const &name) const; | | column_properties const& get_properties(std::string const &name) const; | |
| | | | |
| private: | | private: | |
| | | | |
| //TODO To make values generally usable outside of type_conversion's, | | //TODO To make values generally usable outside of type_conversion's, | |
| // these should be reference counted smart pointers | | // these should be reference counted smart pointers | |
| row * row_; | | row * row_; | |
| std::vector<details::standard_use_type *> uses_; | | std::vector<details::standard_use_type *> uses_; | |
| std::map<details::use_type_base *, indicator *> unused_; | | std::map<details::use_type_base *, indicator *> unused_; | |
| | | | |
End of changes. 2 change blocks. |
| 3 lines changed or deleted | | 8 lines changed or added | |
|
| version.h | | version.h | |
| | | | |
| skipping to change at line 13 | | skipping to change at line 13 | |
| // | | // | |
| // Copyright (C) 2011 Mateusz Loskot <mateusz@loskot.net> | | // Copyright (C) 2011 Mateusz Loskot <mateusz@loskot.net> | |
| // Distributed under the Boost Software License, Version 1.0. | | // Distributed under the Boost Software License, Version 1.0. | |
| // (See accompanying file LICENSE_1_0.txt or copy at | | // (See accompanying file LICENSE_1_0.txt or copy at | |
| // http://www.boost.org/LICENSE_1_0.txt) | | // http://www.boost.org/LICENSE_1_0.txt) | |
| // | | // | |
| | | | |
| #ifndef SOCI_VERSION_HPP | | #ifndef SOCI_VERSION_HPP | |
| #define SOCI_VERSION_HPP | | #define SOCI_VERSION_HPP | |
| | | | |
|
| | | // When updating the version here, don't forget to update it in CMakeLists. | |
| | | txt! | |
| | | | |
| // | | // | |
| // Caution, this is the only SOCI header that is guarenteed | | // Caution, this is the only SOCI header that is guarenteed | |
| // to change with every SOCI release, including this header | | // to change with every SOCI release, including this header | |
| // will cause a recompile every time a new SOCI version is | | // will cause a recompile every time a new SOCI version is | |
| // released. | | // released. | |
| // | | // | |
| // SOCI_VERSION % 100 is the patch level | | // SOCI_VERSION % 100 is the patch level | |
| // SOCI_VERSION / 100 % 1000 is the minor version | | // SOCI_VERSION / 100 % 1000 is the minor version | |
| // SOCI_VERSION / 100000 is the major version | | // SOCI_VERSION / 100000 is the major version | |
| | | | |
|
| #define SOCI_VERSION 300203 | | #define SOCI_VERSION 400000 | |
| | | | |
| // | | // | |
| // SOCI_LIB_VERSION must be defined to be the same as SOCI_VERSION | | // SOCI_LIB_VERSION must be defined to be the same as SOCI_VERSION | |
| // but as a *string* in the form "x_y[_z]" where x is the major version | | // but as a *string* in the form "x_y[_z]" where x is the major version | |
| // number, y is the minor version number, and z is the patch level if not
0. | | // number, y is the minor version number, and z is the patch level if not
0. | |
| | | | |
|
| #define SOCI_LIB_VERSION "3_2_3" | | #define SOCI_LIB_VERSION "4_0_0" | |
| | | | |
| #endif // SOCI_VERSION_HPP | | #endif // SOCI_VERSION_HPP | |
| | | | |
End of changes. 3 change blocks. |
| 2 lines changed or deleted | | 5 lines changed or added | |
|