$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r60902 - in sandbox/transaction/boost/transact: . detail
From: strasser_at_[hidden]
Date: 2010-03-28 14:56:15
Author: stefans
Date: 2010-03-28 14:56:14 EDT (Sun, 28 Mar 2010)
New Revision: 60902
URL: http://svn.boost.org/trac/boost/changeset/60902
Log:
minor changes:
 - embedded_vector, olog_buffer bugfixes
 - unsupported_exception -> unsupported_operation
 - MSVC pragmas guarded by #ifdef BOOST_MSVC
 - removed template<...> from member template friends; standard C++, accepted by GCC, MSVC and comeau
 - null_mutex -> null_lockable
Added:
   sandbox/transaction/boost/transact/detail/file.hpp   (contents, props changed)
Text files modified: 
   sandbox/transaction/boost/transact/basic_transaction_manager.hpp  |    26 ++++++++------------------              
   sandbox/transaction/boost/transact/detail/embedded_vector.hpp     |     2 +-                                      
   sandbox/transaction/boost/transact/detail/filebuf_file.hpp        |     6 +++++-                                  
   sandbox/transaction/boost/transact/detail/mutex.hpp               |     4 ++--                                    
   sandbox/transaction/boost/transact/exception.hpp                  |    10 ++--------                              
   sandbox/transaction/boost/transact/log.hpp                        |     2 +-                                      
   sandbox/transaction/boost/transact/simple_transaction_manager.hpp |     4 ++--                                    
   7 files changed, 21 insertions(+), 33 deletions(-)
Modified: sandbox/transaction/boost/transact/basic_transaction_manager.hpp
==============================================================================
--- sandbox/transaction/boost/transact/basic_transaction_manager.hpp	(original)
+++ sandbox/transaction/boost/transact/basic_transaction_manager.hpp	2010-03-28 14:56:14 EDT (Sun, 28 Mar 2010)
@@ -18,7 +18,6 @@
 #include <boost/fusion/include/count_if.hpp>
 #include <boost/fusion/include/at.hpp>
 #include <boost/fusion/include/vector.hpp>
-#include <boost/fusion/include/is_sequence.hpp>
 #include <boost/utility/in_place_factory.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/mpl/vector.hpp>
@@ -26,7 +25,6 @@
 #include <boost/mpl/size.hpp>
 #include <boost/mpl/if.hpp>
 #include <boost/mpl/at.hpp>
-#include <boost/mpl/is_sequence.hpp>
 #include <boost/mpl/map.hpp>
 #include <boost/mpl/range_c.hpp>
 #include <boost/mpl/for_each.hpp>
@@ -112,14 +110,8 @@
         BOOST_STATIC_ASSERT(Threads || !TThreads);
 private:
         struct detail{
-		typedef typename mpl::if_<
-			mpl::is_sequence<Resources>,
-			Resources,
-			mpl::vector1<Resources>
-		>::type resource_types;
-
                 typedef typename mpl::transform<
-			typename detail::resource_types,
+			Resources,
                         transact::detail::get_tag<mpl::_1>
 		>::type resource_tags;
 
@@ -128,7 +120,7 @@
                         typedef mpl::pair<typename Resource::tag,Resource> type;
                 };
                 typedef typename mpl::fold<
-			resource_types,
+			Resources,
                         mpl::map0<>,
                         mpl::insert<mpl::_1,make_resource_pair<mpl::_2> >
 		>::type resource_types_by_tag;
@@ -146,7 +138,7 @@
                 struct default_resource{
                         typedef typename mpl::deref<
                                 typename mpl::find_if<
-					resource_types,
+					Resources,
                                         mpl::contains<get_services<mpl::_1>,Service>
 				>::type
 			>::type::tag type;
@@ -156,7 +148,6 @@
                 class transaction_construct_t{
                         explicit transaction_construct_t(transaction *parent)
                                 : parent(parent){}
-			template<class R,bool Th,bool TTh,class L> 
                         friend class basic_transaction_manager;
                         transaction *parent;
                 };
@@ -167,7 +158,6 @@
                                 mpl::for_each<resource_tags>(beginner(*this));
                         }
                 private:
-			template<class R,bool Th,bool TTh,class L> 
                         friend class basic_transaction_manager;
         
                         template<class Resource>
@@ -176,7 +166,7 @@
                         };
                         typedef typename fusion::result_of::as_map<
                                 typename mpl::transform<
-					resource_types,
+					Resources,
                                         make_resource_transaction_pair<mpl::_1>
 				>::type
 			>::type resource_transactions_type;
@@ -187,7 +177,7 @@
                         typedef typename mpl::if_c<
                                 TThreads,
                                 transact::detail::mutex_type,
-				transact::detail::null_mutex
+				transact::detail::null_lockable
 			>::type mutex_type;
         
                         mutex_type mutex;
@@ -201,7 +191,7 @@
         /// \endcond
 public:
         typedef typename detail::transaction transaction;
-	typedef typename detail::resource_types resource_types;
+	typedef Resources resource_types;
         template<class ServiceTag>
         struct default_resource{
                 typedef typename detail::template default_resource<ServiceTag>::type type;
@@ -434,7 +424,7 @@
                 void prepare(Resource &res,typename Resource::transaction &rtx,mpl::false_){
                         //a resource that does not support two-phase-commit was used
                         //together with other persistent resources
-			throw unsupported_exception();
+			throw unsupported_operation();
                 }
                 transaction &tx;
         };
@@ -460,7 +450,7 @@
         };
         typedef typename fusion::result_of::as_map<
                 typename mpl::transform<
-			resource_types,
+			Resources,
                         make_resource_ptr_pair<mpl::_1>
 		>::type
 	>::type resources_type;
Modified: sandbox/transaction/boost/transact/detail/embedded_vector.hpp
==============================================================================
--- sandbox/transaction/boost/transact/detail/embedded_vector.hpp	(original)
+++ sandbox/transaction/boost/transact/detail/embedded_vector.hpp	2010-03-28 14:56:14 EDT (Sun, 28 Mar 2010)
@@ -217,7 +217,7 @@
                 }catch(...){ ::operator delete(newdata); throw; }
                 this->end_=newbegin + this->size();
                 this->end_storage=newbegin + newcap;
-		::operator delete(this->begin_);
+		if(this->begin() != this->emb_data()) ::operator delete(this->begin_);
                 this->begin_=newbegin;
         }
         T *emb_data(){
Added: sandbox/transaction/boost/transact/detail/file.hpp
==============================================================================
--- (empty file)
+++ sandbox/transaction/boost/transact/detail/file.hpp	2010-03-28 14:56:14 EDT (Sun, 28 Mar 2010)
@@ -0,0 +1,17 @@
+#ifndef BOOST_TRANSACT_DETAIL_FILE_HPP
+#define BOOST_TRANSACT_DETAIL_FILE_HPP
+
+#include <boost/transact/exception.hpp>
+
+namespace boost{
+namespace transact{
+namespace detail{
+
+struct eof_exception : io_failure{};
+
+}
+}
+}
+
+
+#endif
Modified: sandbox/transaction/boost/transact/detail/filebuf_file.hpp
==============================================================================
--- sandbox/transaction/boost/transact/detail/filebuf_file.hpp	(original)
+++ sandbox/transaction/boost/transact/detail/filebuf_file.hpp	2010-03-28 14:56:14 EDT (Sun, 28 Mar 2010)
@@ -12,8 +12,10 @@
 #include <boost/mpl/size_t.hpp>
 #include <boost/transact/exception.hpp>
 
+#ifdef BOOST_MSVC
 #pragma warning(push)
 #pragma warning(disable:4996)
+#endif
 
 namespace boost{
 namespace transact{
@@ -43,7 +45,7 @@
                 if(this->buf.pubsync() != 0) throw io_failure();
         }
         void sync(){
-		throw unsupported_exception();
+		throw unsupported_operation();
         }
 private:
         std::filebuf buf;
@@ -87,6 +89,8 @@
 }
 }
 
+#ifdef BOOST_MSVC
 #pragma warning(pop)
+#endif
 
 #endif
Modified: sandbox/transaction/boost/transact/detail/mutex.hpp
==============================================================================
--- sandbox/transaction/boost/transact/detail/mutex.hpp	(original)
+++ sandbox/transaction/boost/transact/detail/mutex.hpp	2010-03-28 14:56:14 EDT (Sun, 28 Mar 2010)
@@ -12,7 +12,7 @@
 namespace transact{
 namespace detail{
 
-struct null_mutex{
+struct null_lockable{
         void lock(){}
         bool try_lock(){ return true; }
         void unlock(){}
@@ -49,7 +49,7 @@
                 }
         }
         void unlock(){
-		unsigned int old=this->count.fetch_sub(1,boost::memory_order_release);
+		int old=this->count.fetch_sub(1,boost::memory_order_release);
                 BOOST_ASSERT(old >= 0);
                 if(old > 0) this->smutex.unlock();
         }
Modified: sandbox/transaction/boost/transact/exception.hpp
==============================================================================
--- sandbox/transaction/boost/transact/exception.hpp	(original)
+++ sandbox/transaction/boost/transact/exception.hpp	2010-03-28 14:56:14 EDT (Sun, 28 Mar 2010)
@@ -27,12 +27,6 @@
 ///\brief Indicates that an internal operation reading from/writing to files failed.
 struct io_failure : transact::exception{};
 
-namespace detail{
-
-struct eof_exception : io_failure{};
-
-}
-
 ///\brief Indicates that this operation required an active transaction but there was no active transaction bound for this thread.
 struct no_active_transaction : transact::exception{};
 
@@ -43,7 +37,7 @@
 struct no_transaction_manager : transact::exception{};
 
 ///\brief Indicates that this operation is not supported by this implementation
-struct unsupported_exception : transact::exception{};
+struct unsupported_operation : transact::exception{};
 
 struct isolation_exception;
 template<class ResMgr>
@@ -96,7 +90,7 @@
 };
 
 
-///´\brief Indicates that the operation conflicted with another transaction.
+///\brief Indicates that the operation conflicted with another transaction.
 ///
 ///The base class \c isolation_exception should be used to catch this exception,
 ///in order to catch isolation exceptions of all resource managers.
Modified: sandbox/transaction/boost/transact/log.hpp
==============================================================================
--- sandbox/transaction/boost/transact/log.hpp	(original)
+++ sandbox/transaction/boost/transact/log.hpp	2010-03-28 14:56:14 EDT (Sun, 28 Mar 2010)
@@ -361,7 +361,7 @@
         olog_buffer(Log &log,Lockable &lockable)
                 : log(log), lockable(lockable){}
         template<class T>
-	olog &operator<<(T const &t){
+	olog_buffer &operator<<(T const &t){
                 static std::size_t const size=sizeof(id_type) + sizeof(T);
                 BOOST_STATIC_ASSERT(size <= Size);
                 id_type const id=this->log.template id<T>();	
Modified: sandbox/transaction/boost/transact/simple_transaction_manager.hpp
==============================================================================
--- sandbox/transaction/boost/transact/simple_transaction_manager.hpp	(original)
+++ sandbox/transaction/boost/transact/simple_transaction_manager.hpp	2010-03-28 14:56:14 EDT (Sun, 28 Mar 2010)
@@ -33,7 +33,7 @@
                 class transaction_construct_t{
                         explicit transaction_construct_t(transaction *parent)
                                 : parent(parent){}
-			template <class R, bool Th> friend class simple_transaction_manager;
+			friend class simple_transaction_manager;
                         friend class transaction;
                         transaction *parent;
                 };
@@ -51,7 +51,7 @@
                                 }
                         }
                 private:
-			template <class R, bool Th> friend class simple_transaction_manager;
+			friend class simple_transaction_manager;
                         optional<typename Resource::transaction> rtx;
                         transaction * const parent;
                 };