Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r77380 - in branches/quickbook-dev: . boost boost/filesystem/v3 boost/geometry/strategies boost/geometry/strategies/cartesian boost/math boost/math/concepts boost/thread boost/thread/detail boost/thread/win32 doc/src libs/chrono/test libs/filesystem/v3/doc libs/filesystem/v3/doc/src libs/filesystem/v3/src libs/filesystem/v3/test libs/geometry/test/algorithms libs/geometry/test/algorithms/overlay libs/thread/example libs/thread/src libs/thread/src/win32 libs/thread/test libs/thread/test/sync/mutual_exclusion/locks/lock_guard libs/thread/test/sync/mutual_exclusion/locks/shared_lock libs/thread/test/sync/mutual_exclusion/locks/shared_lock/cons libs/thread/test/sync/mutual_exclusion/locks/unique_lock libs/thread/test/sync/mutual_exclusion/locks/upgrade_lock libs/thread/test/sync/mutual_exclusion/locks/upgrade_lock/cons libs/timer/src more/getting_started more/getting_started/detail status tools tools/quickbook tools/quickbook/extra/cxx_committee tools/quickbook/extra/cxx_committee/html tools/quickbook/src tools/release
From: dnljms_at_[hidden]
Date: 2012-03-18 14:44:55


Author: danieljames
Date: 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
New Revision: 77380
URL: http://svn.boost.org/trac/boost/changeset/77380

Log:
Quickbook: Merge from trunk.
Added:
   branches/quickbook-dev/libs/thread/example/shared_monitor.cpp
      - copied unchanged from r77378, /trunk/libs/thread/example/shared_monitor.cpp
   branches/quickbook-dev/libs/thread/example/shared_mutex.cpp
      - copied unchanged from r77378, /trunk/libs/thread/example/shared_mutex.cpp
   branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/lock_guard/adopt_lock_pass.cpp
      - copied unchanged from r77378, /trunk/libs/thread/test/sync/mutual_exclusion/locks/lock_guard/adopt_lock_pass.cpp
   branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/lock_guard/copy_assign_fail.cpp
      - copied unchanged from r77378, /trunk/libs/thread/test/sync/mutual_exclusion/locks/lock_guard/copy_assign_fail.cpp
   branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/lock_guard/copy_ctor_fail.cpp
      - copied unchanged from r77378, /trunk/libs/thread/test/sync/mutual_exclusion/locks/lock_guard/copy_ctor_fail.cpp
   branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/lock_guard/default_pass.cpp
      - copied unchanged from r77378, /trunk/libs/thread/test/sync/mutual_exclusion/locks/lock_guard/default_pass.cpp
   branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/lock_guard/types_pass.cpp
      - copied unchanged from r77378, /trunk/libs/thread/test/sync/mutual_exclusion/locks/lock_guard/types_pass.cpp
   branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/shared_lock/types_pass.cpp
      - copied unchanged from r77378, /trunk/libs/thread/test/sync/mutual_exclusion/locks/shared_lock/types_pass.cpp
   branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/upgrade_lock/types_pass.cpp
      - copied unchanged from r77378, /trunk/libs/thread/test/sync/mutual_exclusion/locks/upgrade_lock/types_pass.cpp
Properties modified:
   branches/quickbook-dev/ (props changed)
   branches/quickbook-dev/boost/math/ (props changed)
   branches/quickbook-dev/status/explicit-failures-markup.xml (contents, props changed)
   branches/quickbook-dev/tools/ (props changed)
   branches/quickbook-dev/tools/quickbook/ (props changed)
Text files modified:
   branches/quickbook-dev/Jamroot | 2
   branches/quickbook-dev/boost/filesystem/v3/path.hpp | 28 +-
   branches/quickbook-dev/boost/geometry/strategies/cartesian/cart_intersect.hpp | 129 ++++++++++----
   branches/quickbook-dev/boost/geometry/strategies/side_info.hpp | 20 ++
   branches/quickbook-dev/boost/math/concepts/real_type_concept.hpp | 1
   branches/quickbook-dev/boost/thread/detail/thread.hpp | 17 +
   branches/quickbook-dev/boost/thread/future.hpp | 13
   branches/quickbook-dev/boost/thread/win32/basic_timed_mutex.hpp | 90 +++++----
   branches/quickbook-dev/boost/thread/win32/shared_mutex.hpp | 262 ++++++++++++++++++++++++++++
   branches/quickbook-dev/boost/version.hpp | 4
   branches/quickbook-dev/doc/src/minimal.css | 17
   branches/quickbook-dev/index.html | 8
   branches/quickbook-dev/libs/chrono/test/Jamfile.v2 | 130 +++++++-------
   branches/quickbook-dev/libs/filesystem/v3/doc/reference.html | 17
   branches/quickbook-dev/libs/filesystem/v3/doc/release_history.html | 7
   branches/quickbook-dev/libs/filesystem/v3/doc/src/source.html | 9
   branches/quickbook-dev/libs/filesystem/v3/doc/src/tr2_snippets.html | 154 +++++++++++-----
   branches/quickbook-dev/libs/filesystem/v3/src/path.cpp | 12
   branches/quickbook-dev/libs/filesystem/v3/test/path_unit_test.cpp | 4
   branches/quickbook-dev/libs/geometry/test/algorithms/overlay/overlay_cases.hpp | 18 +
   branches/quickbook-dev/libs/geometry/test/algorithms/union.cpp | 1
   branches/quickbook-dev/libs/thread/src/future.cpp | 12 -
   branches/quickbook-dev/libs/thread/src/win32/thread.cpp | 17 +
   branches/quickbook-dev/libs/thread/test/Jamfile.v2 | 368 +++++++++++++++++++++------------------
   branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/shared_lock/cons/duration_pass.cpp | 3
   branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/shared_lock/cons/move_assign_pass.cpp | 8
   branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/unique_lock/types_pass.cpp | 25 +-
   branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/upgrade_lock/cons/duration_pass.cpp | 3
   branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/upgrade_lock/cons/move_assign_pass.cpp | 4
   branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/upgrade_lock/cons/time_point_pass.cpp | 8
   branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/upgrade_lock/cons/try_to_lock_pass.cpp | 12
   branches/quickbook-dev/libs/thread/test/test_thread_launching.cpp | 6
   branches/quickbook-dev/libs/timer/src/cpu_timer.cpp | 2
   branches/quickbook-dev/more/getting_started/detail/release-variables.rst | 8
   branches/quickbook-dev/more/getting_started/unix-variants.html | 22 +-
   branches/quickbook-dev/more/getting_started/windows.html | 30 +-
   branches/quickbook-dev/status/explicit-failures-markup.xml | 10
   branches/quickbook-dev/tools/quickbook/extra/cxx_committee/html/proposal.css | 2
   branches/quickbook-dev/tools/quickbook/extra/cxx_committee/library_proposal.qbk | 16 +
   branches/quickbook-dev/tools/quickbook/src/actions.cpp | 4
   branches/quickbook-dev/tools/quickbook/src/doc_info_actions.cpp | 2
   branches/quickbook-dev/tools/quickbook/src/files.cpp | 2
   branches/quickbook-dev/tools/quickbook/src/files.hpp | 2
   branches/quickbook-dev/tools/quickbook/src/input_path.hpp | 2
   branches/quickbook-dev/tools/quickbook/src/quickbook.cpp | 6
   branches/quickbook-dev/tools/quickbook/src/quickbook.hpp | 2
   branches/quickbook-dev/tools/release/snapshot_inspection.bat | 2
   47 files changed, 989 insertions(+), 532 deletions(-)

Modified: branches/quickbook-dev/Jamroot
==============================================================================
--- branches/quickbook-dev/Jamroot (original)
+++ branches/quickbook-dev/Jamroot 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -132,7 +132,7 @@
 import path ;
 
 path-constant BOOST_ROOT : . ;
-constant BOOST_VERSION : 1.49.0 ;
+constant BOOST_VERSION : 1.50.0 ;
 constant BOOST_JAMROOT_MODULE : $(__name__) ;
 
 boostcpp.set-version $(BOOST_VERSION) ;

Modified: branches/quickbook-dev/boost/filesystem/v3/path.hpp
==============================================================================
--- branches/quickbook-dev/boost/filesystem/v3/path.hpp (original)
+++ branches/quickbook-dev/boost/filesystem/v3/path.hpp 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -58,13 +58,16 @@
     // value_type is the character type used by the operating system API to
     // represent paths.
 
-# ifdef BOOST_WINDOWS_API
- typedef wchar_t value_type;
-# else
- typedef char value_type;
-# endif
- typedef std::basic_string<value_type> string_type;
- typedef std::codecvt<wchar_t, char, std::mbstate_t> codecvt_type;
+# ifdef BOOST_WINDOWS_API
+ typedef wchar_t value_type;
+ BOOST_STATIC_CONSTEXPR value_type preferred_separator = L'\\';
+# else
+ typedef char value_type;
+ BOOST_STATIC_CONSTEXPR value_type preferred_separator = '/';
+# endif
+ typedef std::basic_string<value_type> string_type;
+ typedef std::codecvt<wchar_t, char,
+ std::mbstate_t> codecvt_type;
 
 
     // ----- character encoding conversions -----
@@ -406,15 +409,10 @@
     iterator begin() const;
     iterator end() const;
 
- // ----- static members -----
-
- // ----- imbue -----
-
- static std::locale imbue(const std::locale& loc);
-
- // ----- codecvt -----
+ // ----- static member functions -----
 
- static const codecvt_type& codecvt()
+ static std::locale imbue(const std::locale& loc);
+ static const codecvt_type& codecvt()
     {
       return *wchar_t_codecvt_facet();
     }

Modified: branches/quickbook-dev/boost/geometry/strategies/cartesian/cart_intersect.hpp
==============================================================================
--- branches/quickbook-dev/boost/geometry/strategies/cartesian/cart_intersect.hpp (original)
+++ branches/quickbook-dev/boost/geometry/strategies/cartesian/cart_intersect.hpp 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -152,6 +152,33 @@
             collinear = true;
                 }
 
+ if (sides.meeting())
+ {
+ // If two segments meet each other at their segment-points, two sides are zero,
+ // the other two are not (unless collinear but we don't mean those here).
+ // However, in near-epsilon ranges it can happen that two sides are zero
+ // but they do not meet at their segment-points.
+ // In that case they are nearly collinear and handled as such.
+ if (! point_equals
+ (
+ select(sides.zero_index<0>(), a),
+ select(sides.zero_index<1>(), b)
+ )
+ )
+ {
+ //std::cout << "ROBUSTNESS: Suspicious ";
+ //sides.debug();
+ //std::cout << std::endl;
+ //std::cout << " " << d << " " << da << std::endl;
+ //std::cout << " -> " << geometry::wkt(a) << " " << geometry::wkt(b) << std::endl;
+ //std::cout << " -> " << dx_a << " " << dy_a << " " << dx_b << " " << dy_b << std::endl;
+
+ sides.set<0>(0,0);
+ sides.set<1>(0,0);
+ collinear = true;
+ }
+ }
+
         if (sides.same<0>() || sides.same<1>())
         {
             // Both points are at same side of other segment, we can leave
@@ -206,51 +233,47 @@
 
                 if (r < zero || r > one)
                 {
- if (sides.crossing() || sides.touching())
+ if (double_check_disjoint<0>(a, b)
+ || double_check_disjoint<1>(a, b))
+ {
+ // Can still be disjoint (even if not one is left or right from another)
+ // This is e.g. in case #snake4 of buffer test.
+ return Policy::disjoint();
+ }
+
+ //std::cout << "ROBUSTNESS: correction of r " << r << std::endl;
+ // sides.debug()
+
+ // ROBUSTNESS: the r value can in epsilon-cases much larger than 1, while (with perfect arithmetic)
+ // it should be one. It can be 1.14 or even 1.98049 or 2 (while still intersecting)
+
+ // If segments are crossing (we can see that with the sides)
+ // and one is inside the other, there must be an intersection point.
+ // We correct for that.
+ // This is (only) in case #ggl_list_20110820_christophe in unit tests
+
+ // If segments are touching (two sides zero), of course they should intersect
+ // This is (only) in case #buffer_rt_i in the unit tests)
+
+ // If one touches in the middle, they also should intersect (#buffer_rt_j)
+
+ // Note that even for ttmath r is occasionally > 1, e.g. 1.0000000000000000000000036191231203575
+
+ if (r > one)
                     {
- // ROBUSTNESS: the r value can in epsilon-cases be 1.14, while (with perfect arithmetic)
- // it should be one. If segments are crossing (we can see that with the sides)
- // and one is inside the other, there must be an intersection point.
- // We correct for that.
- // This is (only) in case #ggl_list_20110820_christophe in unit tests
- // If segments are touching (two sides zero), of course they should intersect
- // This is (only) in case #buffer_rt_i in the unit tests)
- // TODO: find more cases
- if (r > one)
- {
- // std::cout << "ROBUSTNESS: correction of r " << r << std::endl;
- r = one;
- }
- else if (r < zero)
- {
- // std::cout << "ROBUSTNESS: correction of r " << r << std::endl;
- r = zero;
- }
+ r = one;
+ }
+ else if (r < zero)
+ {
+ r = zero;
                     }
-
- if (r < zero)
- {
- if (r < -epsilon)
- {
- return Policy::disjoint();
- }
- r = zero;
- }
- else if (r > one)
- {
- if (r > one + epsilon)
- {
- return Policy::disjoint();
- }
- r = one;
- }
                 }
                         }
                 }
 
         if(collinear)
         {
- if (math::abs(dx_a) + math::abs(dx_b) < math::abs(dy_a) + math::abs(dy_a))
+ if (math::abs(dx_a) + math::abs(dx_b) < math::abs(dy_a) + math::abs(dy_b))
             {
                                 // Y direction contains larger segments (maybe dx is zero)
                 return relate_collinear<1>(a, b);
@@ -269,6 +292,38 @@
 private :
 
         template <std::size_t Dimension>
+ static inline bool double_check_disjoint(segment_type1 const& a,
+ segment_type2 const& b)
+ {
+ coordinate_type a_1, a_2, b_1, b_2;
+ bool a_swapped = false, b_swapped = false;
+ detail::segment_arrange<Dimension>(a, a_1, a_2, a_swapped);
+ detail::segment_arrange<Dimension>(b, b_1, b_2, b_swapped);
+ return math::smaller(a_2, b_1) || math::larger(a_1, b_2);
+ }
+
+ template <typename Segment>
+ static inline typename point_type<Segment>::type select(int index, Segment const& segment)
+ {
+ return index == 0
+ ? detail::get_from_index<0>(segment)
+ : detail::get_from_index<1>(segment)
+ ;
+ }
+
+ // We cannot use geometry::equals here. Besides that this will be changed
+ // to compare segment-coordinate-values directly (not necessary to retrieve point first)
+ template <typename Point1, typename Point2>
+ static inline bool point_equals(Point1 const& point1, Point2 const& point2)
+ {
+ return math::equals(get<0>(point1), get<0>(point2))
+ && math::equals(get<1>(point1), get<1>(point2))
+ ;
+ }
+
+
+
+ template <std::size_t Dimension>
     static inline return_type relate_collinear(segment_type1 const& a,
                                                                                            segment_type2 const& b)
         {

Modified: branches/quickbook-dev/boost/geometry/strategies/side_info.hpp
==============================================================================
--- branches/quickbook-dev/boost/geometry/strategies/side_info.hpp (original)
+++ branches/quickbook-dev/boost/geometry/strategies/side_info.hpp 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -81,12 +81,32 @@
             && sides[1].second == 0 && sides[0].second == 0);
     }
 
+ inline bool meeting() const
+ {
+ // Two of them (in each segment) zero, two not
+ return one_zero<0>() && one_zero<1>();
+ }
+
     template <int Which>
     inline bool zero() const
     {
         return sides[Which].first == 0 && sides[Which].second == 0;
     }
 
+ template <int Which>
+ inline bool one_zero() const
+ {
+ return (sides[Which].first == 0 && sides[Which].second != 0)
+ || (sides[Which].first != 0 && sides[Which].second == 0);
+ }
+
+ template <int Which>
+ inline int zero_index() const
+ {
+ return sides[Which].first == 0 ? 0 : 1;
+ }
+
+
     inline void debug() const
     {
         std::cout << sides[0].first << " "

Modified: branches/quickbook-dev/boost/math/concepts/real_type_concept.hpp
==============================================================================
--- branches/quickbook-dev/boost/math/concepts/real_type_concept.hpp (original)
+++ branches/quickbook-dev/boost/math/concepts/real_type_concept.hpp 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -6,6 +6,7 @@
 #ifndef BOOST_MATH_REAL_TYPE_CONCEPT_HPP
 #define BOOST_MATH_REAL_TYPE_CONCEPT_HPP
 
+#include <boost/config.hpp>
 #ifdef BOOST_MSVC
 #pragma warning(push)
 #pragma warning(disable: 4100)

Modified: branches/quickbook-dev/boost/thread/detail/thread.hpp
==============================================================================
--- branches/quickbook-dev/boost/thread/detail/thread.hpp (original)
+++ branches/quickbook-dev/boost/thread/detail/thread.hpp 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -503,19 +503,24 @@
         template <class Rep, class Period>
         bool try_join_for(const chrono::duration<Rep, Period>& rel_time)
         {
- return try_join_for(chrono::ceil<chrono::milliseconds>(rel_time));
+ return try_join_until(chrono::steady_clock::now() + rel_time);
         }
         template <class Clock, class Duration>
         bool try_join_until(const chrono::time_point<Clock, Duration>& t)
         {
           using namespace chrono;
+ system_clock::time_point s_now = system_clock::now();
           typename Clock::time_point c_now = Clock::now();
- return try_join_for(chrono::ceil<chrono::milliseconds>(t - c_now));
+ return try_join_until(s_now + ceil<nanoseconds>(t - c_now));
         }
-#endif
- private:
-#ifdef BOOST_THREAD_USES_CHRONO
- bool do_try_join_for(chrono::milliseconds const &rel_time_in_milliseconds);
+ template <class Duration>
+ bool try_join_until(const chrono::time_point<chrono::system_clock, Duration>& t)
+ {
+ using namespace chrono;
+ typedef time_point<system_clock, nanoseconds> nano_sys_tmpt;
+ return try_join_until(nano_sys_tmpt(ceil<nanoseconds>(t.time_since_epoch())));
+ }
+ bool try_join_until(const chrono::time_point<chrono::system_clock, chrono::nanoseconds>& tp);
 #endif
     public:
 

Modified: branches/quickbook-dev/boost/thread/future.hpp
==============================================================================
--- branches/quickbook-dev/boost/thread/future.hpp (original)
+++ branches/quickbook-dev/boost/thread/future.hpp 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -104,14 +104,17 @@
     }
   }
 
- class BOOST_THREAD_DECL future_error
+ class BOOST_SYMBOL_VISIBLE future_error
       : public std::logic_error
   {
       system::error_code ec_;
   public:
- future_error(system::error_code ec);
+ future_error(system::error_code ec)
+ : logic_error(ec.message()),
+ ec_(ec)
+ {
+ }
 
- BOOST_SYMBOL_VISIBLE
       const system::error_code& code() const BOOST_NOEXCEPT
       {
         return ec_;
@@ -1624,7 +1627,7 @@
                 {
                     this->mark_finished_with_result(f());
                 }
- catch(thread_interrupted& it)
+ catch(thread_interrupted& )
                 {
                     this->mark_interrupted_finish();
                 }
@@ -1666,7 +1669,7 @@
                     f();
                     this->mark_finished_with_result();
                 }
- catch(thread_interrupted& it)
+ catch(thread_interrupted& )
                 {
                     this->mark_interrupted_finish();
                 }

Modified: branches/quickbook-dev/boost/thread/win32/basic_timed_mutex.hpp
==============================================================================
--- branches/quickbook-dev/boost/thread/win32/basic_timed_mutex.hpp (original)
+++ branches/quickbook-dev/boost/thread/win32/basic_timed_mutex.hpp 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -145,34 +145,7 @@
                 }
                 return true;
             }
- bool try_lock_for(chrono::milliseconds const& rel_time)
- {
- if(try_lock())
- {
- return true;
- }
- long old_count=active_count;
- mark_waiting_and_try_lock(old_count);
-
- if(old_count&lock_flag_value)
- {
- bool lock_acquired=false;
- void* const sem=get_event();
 
- do
- {
- if(win32::WaitForSingleObject(sem,static_cast<unsigned long>(rel_time.count()))!=0)
- {
- BOOST_INTERLOCKED_DECREMENT(&active_count);
- return false;
- }
- clear_waiting_and_try_lock(old_count);
- lock_acquired=!(old_count&lock_flag_value);
- }
- while(!lock_acquired);
- }
- return true;
- }
 
             template<typename Duration>
             bool timed_lock(Duration const& timeout)
@@ -185,19 +158,56 @@
                 return timed_lock(system_time(timeout));
             }
 
- template <class Rep, class Period>
- bool try_lock_for(const chrono::duration<Rep, Period>& rel_time)
- {
- using namespace chrono;
- return try_lock_for(ceil<milliseconds>(rel_time));
- }
- template <class Clock, class Duration>
- bool try_lock_until(const chrono::time_point<Clock, Duration>& t)
- {
- using namespace chrono;
- typename Clock::time_point c_now = Clock::now();
- return try_lock_for(ceil<milliseconds>(t - c_now));
- }
+ template <class Rep, class Period>
+ bool try_lock_for(const chrono::duration<Rep, Period>& rel_time)
+ {
+ return try_lock_until(chrono::steady_clock::now() + rel_time);
+ }
+ template <class Clock, class Duration>
+ bool try_lock_until(const chrono::time_point<Clock, Duration>& t)
+ {
+ using namespace chrono;
+ system_clock::time_point s_now = system_clock::now();
+ typename Clock::time_point c_now = Clock::now();
+ return try_lock_until(s_now + ceil<system_clock::duration>(t - c_now));
+ }
+ template <class Duration>
+ bool try_lock_until(const chrono::time_point<chrono::system_clock, Duration>& t)
+ {
+ using namespace chrono;
+ typedef time_point<chrono::system_clock, chrono::system_clock::duration> sys_tmpt;
+ return try_lock_until(sys_tmpt(chrono::ceil<chrono::system_clock::duration>(t.time_since_epoch())));
+ }
+ bool try_lock_until(const chrono::time_point<chrono::system_clock, chrono::system_clock::duration>& tp)
+ {
+ if(try_lock())
+ {
+ return true;
+ }
+ long old_count=active_count;
+ mark_waiting_and_try_lock(old_count);
+
+ if(old_count&lock_flag_value)
+ {
+ bool lock_acquired=false;
+ void* const sem=get_event();
+
+ do
+ {
+ chrono::milliseconds rel_time= chrono::ceil<chrono::milliseconds>(tp-chrono::system_clock::now());
+
+ if(win32::WaitForSingleObject(sem,static_cast<unsigned long>(rel_time.count()))!=0)
+ {
+ BOOST_INTERLOCKED_DECREMENT(&active_count);
+ return false;
+ }
+ clear_waiting_and_try_lock(old_count);
+ lock_acquired=!(old_count&lock_flag_value);
+ }
+ while(!lock_acquired);
+ }
+ return true;
+ }
 
             void unlock()
             {

Modified: branches/quickbook-dev/boost/thread/win32/shared_mutex.hpp
==============================================================================
--- branches/quickbook-dev/boost/thread/win32/shared_mutex.hpp (original)
+++ branches/quickbook-dev/boost/thread/win32/shared_mutex.hpp 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -14,6 +14,10 @@
 #include <limits.h>
 #include <boost/utility.hpp>
 #include <boost/thread/thread_time.hpp>
+#ifdef BOOST_THREAD_USES_CHRONO
+#include <boost/chrono/system_clocks.hpp>
+#include <boost/chrono/ceil.hpp>
+#endif
 
 #include <boost/config/abi_prefix.hpp>
 
@@ -21,9 +25,15 @@
 {
     class shared_mutex
     {
+#ifndef BOOST_NO_DELETED_FUNCTIONS
+ public:
+ shared_mutex(shared_mutex const&) = delete;
+ shared_mutex& operator=(shared_mutex const&) = delete;
+#else // BOOST_NO_DELETED_FUNCTIONS
     private:
         shared_mutex(shared_mutex const&);
         shared_mutex& operator=(shared_mutex const&);
+#endif // BOOST_NO_DELETED_FUNCTIONS
     private:
         struct state_data
         {
@@ -218,6 +228,113 @@
             }
         }
 
+ template <class Rep, class Period>
+ bool try_lock_shared_for(const chrono::duration<Rep, Period>& rel_time)
+ {
+ return try_lock_shared_until(chrono::steady_clock::now() + rel_time);
+ }
+ template <class Clock, class Duration>
+ bool try_lock_shared_until(const chrono::time_point<Clock, Duration>& t)
+ {
+ using namespace chrono;
+ system_clock::time_point s_now = system_clock::now();
+ typename Clock::time_point c_now = Clock::now();
+ return try_lock_shared_until(s_now + ceil<system_clock::duration>(t - c_now));
+ }
+ template <class Duration>
+ bool try_lock_shared_until(const chrono::time_point<chrono::system_clock, Duration>& t)
+ {
+ using namespace chrono;
+ typedef time_point<chrono::system_clock, chrono::system_clock::duration> sys_tmpt;
+ return try_lock_shared_until(sys_tmpt(chrono::ceil<chrono::system_clock::duration>(t.time_since_epoch())));
+ }
+ bool try_lock_shared_until(const chrono::time_point<chrono::system_clock, chrono::system_clock::duration>& tp)
+ {
+ for(;;)
+ {
+ state_data old_state=state;
+ for(;;)
+ {
+ state_data new_state=old_state;
+ if(new_state.exclusive || new_state.exclusive_waiting_blocked)
+ {
+ ++new_state.shared_waiting;
+ if(!new_state.shared_waiting)
+ {
+ boost::throw_exception(boost::lock_error());
+ }
+ }
+ else
+ {
+ ++new_state.shared_count;
+ if(!new_state.shared_count)
+ {
+ boost::throw_exception(boost::lock_error());
+ }
+ }
+
+ state_data const current_state=interlocked_compare_exchange(&state,new_state,old_state);
+ if(current_state==old_state)
+ {
+ break;
+ }
+ old_state=current_state;
+ }
+
+ if(!(old_state.exclusive| old_state.exclusive_waiting_blocked))
+ {
+ return true;
+ }
+
+ chrono::system_clock::time_point n = chrono::system_clock::now();
+ unsigned long res;
+ if (tp>n) {
+ chrono::milliseconds rel_time= chrono::ceil<chrono::milliseconds>(tp-n);
+ res=detail::win32::WaitForSingleObject(semaphores[unlock_sem],
+ static_cast<unsigned long>(rel_time.count()));
+ } else {
+ res=detail::win32::timeout;
+ }
+ if(res==detail::win32::timeout)
+ {
+ for(;;)
+ {
+ state_data new_state=old_state;
+ if(new_state.exclusive || new_state.exclusive_waiting_blocked)
+ {
+ if(new_state.shared_waiting)
+ {
+ --new_state.shared_waiting;
+ }
+ }
+ else
+ {
+ ++new_state.shared_count;
+ if(!new_state.shared_count)
+ {
+ return false;
+ }
+ }
+
+ state_data const current_state=interlocked_compare_exchange(&state,new_state,old_state);
+ if(current_state==old_state)
+ {
+ break;
+ }
+ old_state=current_state;
+ }
+
+ if(!(old_state.exclusive| old_state.exclusive_waiting_blocked))
+ {
+ return true;
+ }
+ return false;
+ }
+
+ BOOST_ASSERT(res==0);
+ }
+ }
+
         void unlock_shared()
         {
             state_data old_state=state;
@@ -380,6 +497,115 @@
             }
         }
 
+
+ template <class Rep, class Period>
+ bool try_lock_for(const chrono::duration<Rep, Period>& rel_time)
+ {
+ return try_lock_until(chrono::steady_clock::now() + rel_time);
+ }
+ template <class Clock, class Duration>
+ bool try_lock_until(const chrono::time_point<Clock, Duration>& t)
+ {
+ using namespace chrono;
+ system_clock::time_point s_now = system_clock::now();
+ typename Clock::time_point c_now = Clock::now();
+ return try_lock_until(s_now + ceil<system_clock::duration>(t - c_now));
+ }
+ template <class Duration>
+ bool try_lock_until(const chrono::time_point<chrono::system_clock, Duration>& t)
+ {
+ using namespace chrono;
+ typedef time_point<chrono::system_clock, chrono::system_clock::duration> sys_tmpt;
+ return try_lock_until(sys_tmpt(chrono::ceil<chrono::system_clock::duration>(t.time_since_epoch())));
+ }
+ bool try_lock_until(const chrono::time_point<chrono::system_clock, chrono::system_clock::duration>& tp)
+ {
+ for(;;)
+ {
+ state_data old_state=state;
+
+ for(;;)
+ {
+ state_data new_state=old_state;
+ if(new_state.shared_count || new_state.exclusive)
+ {
+ ++new_state.exclusive_waiting;
+ if(!new_state.exclusive_waiting)
+ {
+ boost::throw_exception(boost::lock_error());
+ }
+
+ new_state.exclusive_waiting_blocked=true;
+ }
+ else
+ {
+ new_state.exclusive=true;
+ }
+
+ state_data const current_state=interlocked_compare_exchange(&state,new_state,old_state);
+ if(current_state==old_state)
+ {
+ break;
+ }
+ old_state=current_state;
+ }
+
+ if(!old_state.shared_count && !old_state.exclusive)
+ {
+ return true;
+ }
+ #ifndef UNDER_CE
+ const bool wait_all = true;
+ #else
+ const bool wait_all = false;
+ #endif
+
+ chrono::system_clock::time_point n = chrono::system_clock::now();
+ unsigned long wait_res;
+ if (tp>n) {
+ chrono::milliseconds rel_time= chrono::ceil<chrono::milliseconds>(tp-chrono::system_clock::now());
+ wait_res=detail::win32::WaitForMultipleObjects(2,semaphores,wait_all,
+ static_cast<unsigned long>(rel_time.count()));
+ } else {
+ wait_res=detail::win32::timeout;
+ }
+ if(wait_res==detail::win32::timeout)
+ {
+ for(;;)
+ {
+ state_data new_state=old_state;
+ if(new_state.shared_count || new_state.exclusive)
+ {
+ if(new_state.exclusive_waiting)
+ {
+ if(!--new_state.exclusive_waiting)
+ {
+ new_state.exclusive_waiting_blocked=false;
+ }
+ }
+ }
+ else
+ {
+ new_state.exclusive=true;
+ }
+
+ state_data const current_state=interlocked_compare_exchange(&state,new_state,old_state);
+ if(current_state==old_state)
+ {
+ break;
+ }
+ old_state=current_state;
+ }
+ if(!old_state.shared_count && !old_state.exclusive)
+ {
+ return true;
+ }
+ return false;
+ }
+ BOOST_ASSERT(wait_res<2);
+ }
+ }
+
         void unlock()
         {
             state_data old_state=state;
@@ -563,7 +789,17 @@
             }
             release_waiters(old_state);
         }
-
+#if 0 // To be added
+ bool try_unlock_upgrade_and_lock();
+ template <class Rep, class Period>
+ bool
+ try_unlock_upgrade_and_lock_for(
+ const chrono::duration<Rep, Period>& rel_time);
+ template <class Clock, class Duration>
+ bool
+ try_unlock_upgrade_and_lock_until(
+ const chrono::time_point<Clock, Duration>& abs_time);
+#endif
         void unlock_and_lock_shared()
         {
             state_data old_state=state;
@@ -588,7 +824,17 @@
             }
             release_waiters(old_state);
         }
-
+#if 0 // To be added
+ bool try_unlock_shared_and_lock();
+ template <class Rep, class Period>
+ bool
+ try_unlock_shared_and_lock_for(
+ const chrono::duration<Rep, Period>& rel_time);
+ template <class Clock, class Duration>
+ bool
+ try_unlock_shared_and_lock_until(
+ const chrono::time_point<Clock, Duration>& abs_time);
+#endif
         void unlock_upgrade_and_lock_shared()
         {
             state_data old_state=state;
@@ -612,7 +858,17 @@
             }
             release_waiters(old_state);
         }
-
+#if 0 // To be added
+ bool try_unlock_shared_and_lock_upgrade();
+ template <class Rep, class Period>
+ bool
+ try_unlock_shared_and_lock_upgrade_for(
+ const chrono::duration<Rep, Period>& rel_time);
+ template <class Clock, class Duration>
+ bool
+ try_unlock_shared_and_lock_upgrade_until(
+ const chrono::time_point<Clock, Duration>& abs_time);
+#endif
     };
 }
 

Modified: branches/quickbook-dev/boost/version.hpp
==============================================================================
--- branches/quickbook-dev/boost/version.hpp (original)
+++ branches/quickbook-dev/boost/version.hpp 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -19,7 +19,7 @@
 // BOOST_VERSION / 100 % 1000 is the minor version
 // BOOST_VERSION / 100000 is the major version
 
-#define BOOST_VERSION 104900
+#define BOOST_VERSION 105000
 
 //
 // BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION
@@ -27,7 +27,7 @@
 // number, y is the minor version number, and z is the patch level if not 0.
 // This is used by <config/auto_link.hpp> to select which library version to link to.
 
-#define BOOST_LIB_VERSION "1_49"
+#define BOOST_LIB_VERSION "1_50"
 
 #endif
 

Modified: branches/quickbook-dev/doc/src/minimal.css
==============================================================================
--- branches/quickbook-dev/doc/src/minimal.css (original)
+++ branches/quickbook-dev/doc/src/minimal.css 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -7,16 +7,17 @@
   
 */
 
-/*******************************************************************************
- Body
-*******************************************************************************/
+body {
+ font-family: sans-serif;
+ margin: 1em;
+ max-width : 8.5in;
+ }
 
-body { font-family: sans-serif; margin: 1em; }
+table { margin: 0.5em; }
 
-/*******************************************************************************
- Table
-*******************************************************************************/
+pre { background-color:#D7EEFF }
 
-table { margin: 0.5em; }
+ins { background-color:#A0FFA0 }
+del { background-color:#FFA0A0 }
 
 /*** end ***/
\ No newline at end of file

Modified: branches/quickbook-dev/index.html
==============================================================================
--- branches/quickbook-dev/index.html (original)
+++ branches/quickbook-dev/index.html 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -12,9 +12,9 @@
     <tr>
       <td width="277">
         <a href="index.html">
- <img src="boost.png" alt="boost.png (6897 bytes)" align="middle" width="277" height="86" border="0"></a></td>
+ <img src="boost.png" alt="boost.png (6897 bytes)" align="middle" width="277" height="86" border="0"/></a></td>
       <td width="337" align="middle">
- <h2 style="text-align: center">Release 1.49.0</h2>
+ <h2 style="text-align: center">Release 1.50.0</h2>
       </td>
     </tr>
   </table>
@@ -57,7 +57,7 @@
 
   <p>This release includes one new library, Boost.Heap,
   as well as updates to many existing libraries. See
- <a href="http://www.boost.org/users/history/version_1_49_0">Release
+ <a href="http://www.boost.org/users/history/version_1_50_0.html">Release
   History</a> for more information.</p>
 
   <h3>Getting Started</h3>
@@ -117,4 +117,4 @@
     Initiative.</p>
   </div>
 </body>
-</html>
\ No newline at end of file
+</html>

Modified: branches/quickbook-dev/libs/chrono/test/Jamfile.v2
==============================================================================
--- branches/quickbook-dev/libs/chrono/test/Jamfile.v2 (original)
+++ branches/quickbook-dev/libs/chrono/test/Jamfile.v2 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -52,18 +52,18 @@
         :
             <library>/boost/system//boost_system
             <define>BOOST_CHRONO_VERSION=2
- : $(sources[1]:B)_shared ]
+ : $(sources[1]:B)_d ]
     #[ run $(sources) ../build//boost_chrono/<link>static
     # : :
     # :
     # <library>/boost/system//boost_system
- # : $(sources[1]:B)_static ]
+ # : $(sources[1]:B)_s ]
     [ run $(sources)
         : :
         : <define>BOOST_CHRONO_HEADER_ONLY
            <define>BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
             <define>BOOST_CHRONO_VERSION=2
- : $(sources[1]:B)_header ]
+ : $(sources[1]:B)_h ]
     ;
 }
 
@@ -75,24 +75,24 @@
         :
             <library>/boost/system//boost_system
             <define>BOOST_CHRONO_VERSION=2
- : $(sources[1]:B)_shared ]
+ : $(sources[1]:B)_d ]
     [ run $(sources) ../build//boost_chrono/<link>static
         : :
         :
             <library>/boost/system//boost_system
- : v1_$(sources[1]:B)_static ]
+ : v1_$(sources[1]:B)_s ]
     [ run $(sources)
         : :
         : <define>BOOST_CHRONO_HEADER_ONLY
            <define>BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
             <define>BOOST_CHRONO_VERSION=2
- : $(sources[1]:B)_header ]
+ : $(sources[1]:B)_h ]
     [ run $(sources)
         : :
         : <define>BOOST_CHRONO_HEADER_ONLY
            <define>BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
             <define>BOOST_CHRONO_VERSION=2
- : v1_$(sources[1]:B)_header ]
+ : v1_$(sources[1]:B)_h ]
     ;
 }
 
@@ -104,18 +104,18 @@
         :
             <library>/boost/system//boost_system
             <define>BOOST_CHRONO_VERSION=2
- : $(name)_shared ]
+ : $(name)_d ]
     #[ run $(sources) ../build//boost_chrono/<link>static
     # : :
     # :
     # <library>/boost/system//boost_system
- # : $(name)_static ]
+ # : $(name)_s ]
     [ run $(sources)
         : :
         : <define>BOOST_CHRONO_HEADER_ONLY
            <define>BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
             <define>BOOST_CHRONO_VERSION=2
- : $(name)_header ]
+ : $(name)_h ]
     ;
 }
 
@@ -127,13 +127,13 @@
         :
             <library>/boost/system//boost_system
             <define>BOOST_CHRONO_VERSION=2
- : $(sources[1]:B)_shared ]
+ : $(sources[1]:B)_d ]
     [ run $(sources)
         : :
         : <define>BOOST_CHRONO_HEADER_ONLY
            <define>BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
             <define>BOOST_CHRONO_VERSION=2
- : $(name)_header ]
+ : $(name)_h ]
     ;
 }
 
@@ -145,13 +145,13 @@
         :
             <library>/boost/system//boost_system
             <define>BOOST_CHRONO_VERSION=2
- : $(name)_shared ]
+ : $(name)_d ]
     [ run $(sources)
         : :
         : <define>BOOST_CHRONO_HEADER_ONLY
            <define>BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
             <define>BOOST_CHRONO_VERSION=2
- : $(name)_header ]
+ : $(name)_h ]
     ;
 }
 
@@ -163,7 +163,7 @@
         :
             <library>/boost/system//boost_system
             <define>BOOST_CHRONO_VERSION=2
- : $(sources[1]:B)_shared ]
+ : $(sources[1]:B)_d ]
     ;
 }
 
@@ -175,7 +175,7 @@
         :
             <library>/boost/system//boost_system
             <define>BOOST_CHRONO_VERSION=2
- : $(name)_shared ]
+ : $(name)_d ]
     ;
 }
 
@@ -188,18 +188,18 @@
         :
             <library>/boost/system//boost_system
             <define>BOOST_CHRONO_VERSION=2
- : $(sources[1]:B)_shared ]
+ : $(sources[1]:B)_d ]
     #[ run $(sources) ../build//boost_chrono/<link>static
     # : :
     # :
     # <library>/boost/system//boost_system
- # : $(sources[1]:B)_static ]
+ # : $(sources[1]:B)_s ]
     [ run $(sources)
         : :
         : <define>BOOST_CHRONO_HEADER_ONLY
            <define>BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
             <define>BOOST_CHRONO_VERSION=2
- : $(sources[1]:B)_header ]
+ : $(sources[1]:B)_h ]
     ;
 }
 rule chrono-run2-mt ( sources : name )
@@ -210,18 +210,18 @@
         :
             <library>/boost/system//boost_system
             <define>BOOST_CHRONO_VERSION=2
- : $(name)_shared ]
+ : $(name)_d ]
     #[ run $(sources) ../build//boost_chrono/<link>static
     # : :
     # :
     # <library>/boost/system//boost_system
- # : $(name)_static ]
+ # : $(name)_s ]
     [ run $(sources)
         : :
         : <define>BOOST_CHRONO_HEADER_ONLY
            <define>BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
             <define>BOOST_CHRONO_VERSION=2
- : $(name)_header ]
+ : $(name)_h ]
     ;
 }
 
@@ -233,19 +233,19 @@
         :
             <library>/boost/system//boost_system
             <define>BOOST_CHRONO_VERSION=2
- : $(sources[1]:B)_shared ]
+ : $(sources[1]:B)_d ]
     [ run $(sources)
         : :
         :
             <library>/boost/system//boost_system
             <define>BOOST_CHRONO_VERSION=2
- : $(sources[1]:B)_static ]
+ : $(sources[1]:B)_s ]
     [ run $(sources)
         : :
         : <define>BOOST_CHRONO_HEADER_ONLY
            <define>BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
             <define>BOOST_CHRONO_VERSION=2
- : $(sources[1]:B)_header ]
+ : $(sources[1]:B)_h ]
     ;
 }
 
@@ -257,19 +257,19 @@
         :
             <library>/boost/system//boost_system
             <define>BOOST_CHRONO_VERSION=2
- : $(name)_shared ]
+ : $(name)_d ]
     [ run $(sources)
         : :
         :
             <library>/boost/system//boost_system
             <define>BOOST_CHRONO_VERSION=2
- : $(name)_static ]
+ : $(name)_s ]
     [ run $(sources)
         : :
         : <define>BOOST_CHRONO_HEADER_ONLY
            <define>BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
             <define>BOOST_CHRONO_VERSION=2
- : $(name)_header ]
+ : $(name)_h ]
     ;
 }
 
@@ -281,7 +281,7 @@
         : <define>BOOST_CHRONO_HEADER_ONLY
            <define>BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
             <define>BOOST_CHRONO_VERSION=2
- : $(sources[1]:B)_header ]
+ : $(sources[1]:B)_h ]
     ;
 }
 
@@ -293,12 +293,12 @@
         : <define>BOOST_CHRONO_HEADER_ONLY
            <define>BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
             <define>BOOST_CHRONO_VERSION=2
- : $(sources[1]:B)_header ]
+ : $(sources[1]:B)_h ]
     [ run $(sources)
         : :
         : <define>BOOST_CHRONO_HEADER_ONLY
            <define>BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
- : v1_$(sources[1]:B)_header ]
+ : v1_$(sources[1]:B)_h ]
     ;
 }
 
@@ -310,7 +310,7 @@
         : <define>BOOST_CHRONO_HEADER_ONLY
            <define>BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
             <define>BOOST_CHRONO_VERSION=2
- : $(name)_header ]
+ : $(name)_h ]
     ;
 }
 
@@ -320,12 +320,12 @@
     [ compile $(sources)
         :
             <define>BOOST_CHRONO_VERSION=2
- : $(sources[1]:B)_lib ]
+ : $(sources[1]:B)_l ]
     [ compile $(sources)
         : <define>BOOST_CHRONO_HEADER_ONLY
            <define>BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
             <define>BOOST_CHRONO_VERSION=2
- : $(sources[1]:B)_header ]
+ : $(sources[1]:B)_h ]
     ;
 }
 
@@ -335,12 +335,12 @@
     [ compile $(sources)
         :
             <define>BOOST_CHRONO_VERSION=2
- : $(name)_lib ]
+ : $(name)_l ]
     [ compile $(sources)
         : <define>BOOST_CHRONO_HEADER_ONLY
            <define>BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
             <define>BOOST_CHRONO_VERSION=2
- : $(name)_header ]
+ : $(name)_h ]
     ;
 }
 
@@ -370,10 +370,10 @@
 
     test-suite "traits"
         :
- [ chrono-compile2 traits/common_type_duration_pass.cpp : traits_common_type_duration_pass ]
- [ chrono-compile2 traits/common_type_time_point_pass.cpp : traits_common_type_time_point_pass ]
- [ chrono-compile2 traits/treat_as_floating_point_pass.cpp : traits_treat_as_floating_point_pass ]
- [ chrono-run-header2 traits/duration_values_pass.cpp : traits_duration_values_pass ]
+ [ chrono-compile2 traits/common_type_duration_pass.cpp : traits_common_type_duration_p ]
+ [ chrono-compile2 traits/common_type_time_point_pass.cpp : traits_common_type_time_point_p ]
+ [ chrono-compile2 traits/treat_as_floating_point_pass.cpp : traits_treat_as_floating_point_p ]
+ [ chrono-run-header2 traits/duration_values_pass.cpp : traits_duration_values_p ]
         ;
 
     test-suite "duration"
@@ -404,35 +404,35 @@
 
     test-suite "time_point"
         :
- [ chrono-compile2 time_point/default_duration_pass.cpp : time_point_default_duration_pass ]
- [ compile-fail time_point/not_duration_fail.cpp : : time_point_not_duration_fail ]
- [ chrono-run-header2 time_point/arithmetic_pass.cpp : time_point_arithmetic_pass ]
- [ chrono-run-header2 time_point/arithmetic_ext_pass.cpp : time_point_arithmetic_ext_pass ]
- [ chrono-run-header2 time_point/time_point_cast_pass.cpp : time_point_time_point_cast_pass ]
- [ compile-fail time_point/time_point_cast_int_fail.cpp : : time_point_time_point_cast_int_fail ]
- [ chrono-run-header2 time_point/comparisons_pass.cpp : time_point_comparisons_pass ]
- [ compile-fail time_point/comparisons/equal_fail.cpp : : time_point_equal_fail ]
- [ compile-fail time_point/comparisons/less_fail.cpp : : time_point_less_fail ]
- [ chrono-run-header2 time_point/constructor_pass.cpp : time_point_constructor_pass ]
- [ compile-fail time_point/cons/implicit_fail.cpp : : time_point_implicit_fail ]
- [ compile-fail time_point/cons/non_implicit_convertible_duration_fail.cpp : : time_point_non_implicit_convertible_duration_fail ]
- [ chrono-run-header2 time_point/min_max_pass.cpp : time_point_min_max_pass ]
+ [ chrono-compile2 time_point/default_duration_pass.cpp : time_point_default_duration_p ]
+ [ compile-fail time_point/not_duration_fail.cpp : : time_point_not_duration_f ]
+ [ chrono-run-header2 time_point/arithmetic_pass.cpp : time_point_arithmetic_p ]
+ [ chrono-run-header2 time_point/arithmetic_ext_pass.cpp : time_point_arithmetic_ext_p ]
+ [ chrono-run-header2 time_point/time_point_cast_pass.cpp : time_point_time_point_cast_p ]
+ [ compile-fail time_point/time_point_cast_int_fail.cpp : : time_point_time_point_cast_int_f ]
+ [ chrono-run-header2 time_point/comparisons_pass.cpp : time_point_comparisons_p ]
+ [ compile-fail time_point/comparisons/equal_fail.cpp : : time_point_equal_f ]
+ [ compile-fail time_point/comparisons/less_fail.cpp : : time_point_less_f ]
+ [ chrono-run-header2 time_point/constructor_pass.cpp : time_point_constructor_p ]
+ [ compile-fail time_point/cons/implicit_fail.cpp : : time_point_implicit_f ]
+ [ compile-fail time_point/cons/non_implicit_convertible_duration_fail.cpp : : time_point_non_implicit_convertible_duration_f ]
+ [ chrono-run-header2 time_point/min_max_pass.cpp : time_point_min_max_p ]
         ;
 
     test-suite "clock"
         :
- [ chrono-run2-mt clock/clock_pass.cpp : clock_clock_pass ]
+ [ chrono-run2-mt clock/clock_pass.cpp : clock_clock_p ]
         ;
 
     test-suite "stopwatch"
         :
- [ stopwatch-run2 stopwatch/simple_stopwatch_pass.cpp : simple_stopwatch_pass ]
- [ stopwatch-run2 stopwatch/basic_stopwatch_pass.cpp : basic_stopwatch_pass ]
- [ stopwatch-run2 stopwatch/basic_stopwatch_last_lap_pass.cpp : basic_stopwatch_last_lap_pass ]
- [ stopwatch-run2 stopwatch/basic_stopwatch_laps_accumulator_set_pass.cpp : basic_stopwatch_laps_accumulator_set_pass ]
- [ stopwatch-run2 stopwatch/basic_stopwatch_laps_container_pass.cpp : basic_stopwatch_laps_container_pass ]
+ [ stopwatch-run2 stopwatch/simple_stopwatch_pass.cpp : simple_stopwatch_p ]
+ [ stopwatch-run2 stopwatch/basic_stopwatch_pass.cpp : basic_stopwatch_p ]
+ [ stopwatch-run2 stopwatch/basic_stopwatch_last_lap_pass.cpp : basic_stopwatch_last_lap_p ]
+ [ stopwatch-run2 stopwatch/basic_stopwatch_laps_accumulator_set_pass.cpp : basic_stopwatch_laps_accumulator_set_p ]
+ [ stopwatch-run2 stopwatch/basic_stopwatch_laps_container_pass.cpp : basic_stopwatch_laps_container_p ]
 
- [ stopwatch-run2 stopwatch/suspendable_stopwatch_pass.cpp : suspendable_stopwatch_pass ]
+ [ stopwatch-run2 stopwatch/suspendable_stopwatch_pass.cpp : suspendable_stopwatch_p ]
         ;
 
     test-suite "stopwatch_ex"
@@ -442,11 +442,11 @@
 
     test-suite "stopclock"
         :
- [ stopwatch-run2 stopwatch/simple_stopwatch_reporter_pass.cpp : simple_stopwatch_reporter_pass ]
- [ stopwatch-run2 stopwatch/basic_stopwatch_reporter_pass.cpp : basic_stopwatch_reporter_pass ]
- [ stopwatch-run2 stopwatch/basic_stopwatch_reporter_laps_accumulator_set_pass.cpp : basic_stopwatch_reporter_laps_accumulator_set_pass ]
- [ stopwatch-run2 stopwatch/laps_stopclock_pass.cpp : laps_stopclock_pass ]
- [ stopwatch-run2 stopwatch/laps_stopclock_laps_accumulator_set_pass.cpp : laps_stopclock_laps_accumulator_set_pass ]
+ [ stopwatch-run2 stopwatch/simple_stopwatch_reporter_pass.cpp : simple_stopwatch_reporter_p ]
+ [ stopwatch-run2 stopwatch/basic_stopwatch_reporter_pass.cpp : basic_stopwatch_reporter_p ]
+ [ stopwatch-run2 stopwatch/basic_stopwatch_reporter_laps_accumulator_set_pass.cpp : basic_stopwatch_reporter_laps_accumulator_set_p ]
+ [ stopwatch-run2 stopwatch/laps_stopclock_pass.cpp : laps_stopclock_p ]
+ [ stopwatch-run2 stopwatch/laps_stopclock_laps_accumulator_set_pass.cpp : laps_stopclock_laps_accumulator_set_p ]
 
         ;
     test-suite "stopclock_ex"

Modified: branches/quickbook-dev/libs/filesystem/v3/doc/reference.html
==============================================================================
--- branches/quickbook-dev/libs/filesystem/v3/doc/reference.html (original)
+++ branches/quickbook-dev/libs/filesystem/v3/doc/reference.html 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -20,17 +20,17 @@
 */
 
 body {
- font-family: sans-serif;
- margin: 1em;
- max-width : 8.5in;
- }
+ font-family: sans-serif;
+ margin: 1em;
+ max-width : 8.5in;
+ }
 
-table { margin: 0.5em; }
+table { margin: 0.5em; }
 
-pre { background-color:#D7EEFF }
+pre { background-color:#D7EEFF }
 
-ins { background-color:#A0FFA0 }
-del { background-color:#FFA0A0 }
+ins { background-color:#A0FFA0 }
+del { background-color:#FFA0A0 }
 
 /*** end ***/
 </style>
@@ -632,6 +632,7 @@
         typedef <b><i>see below</i></b> value_type; // char for POSIX, wchar_t for Windows
         typedef std::basic_string&lt;value_type&gt; string_type;
         typedef std::codecvt&lt;wchar_t, char, std::mbstate_t&gt; codecvt_type;
+ constexpr value_type preferred_separator;
 
         // constructors and destructor
         path();

Modified: branches/quickbook-dev/libs/filesystem/v3/doc/release_history.html
==============================================================================
--- branches/quickbook-dev/libs/filesystem/v3/doc/release_history.html (original)
+++ branches/quickbook-dev/libs/filesystem/v3/doc/release_history.html 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -36,6 +36,11 @@
   </tr>
 </table>
 
+<h2>1.50.0</h2>
+<ul>
+ <li>Add constexpr value_type preferred_separator to class path.</li>
+</ul>
+
 <h2>1.49.0</h2>
 <ul>
   <li>Fix #3714,
@@ -118,7 +123,7 @@
 </ul>
 <hr>
 <p>Revised
-<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->24 January, 2012<!--webbot bot="Timestamp" endspan i-checksum="38510" --></p>
+<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->17 March, 2012<!--webbot bot="Timestamp" endspan i-checksum="28827" --></p>
 <p>© Copyright Beman Dawes, 2011</p>
 <p> Use, modification, and distribution are subject to the Boost Software
 License, Version 1.0. See <a href="http://www.boost.org/LICENSE_1_0.txt">

Modified: branches/quickbook-dev/libs/filesystem/v3/doc/src/source.html
==============================================================================
--- branches/quickbook-dev/libs/filesystem/v3/doc/src/source.html (original)
+++ branches/quickbook-dev/libs/filesystem/v3/doc/src/source.html 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -23,12 +23,12 @@
   Filesystem TR2 Proposal
   $def WHAT "Clause"
   $def SNIPPET_FILE "tr2_snippets.html"
- $def HEADER "files"
+ $def HEADER "filesystem"
   $def NAMESPACE std
- $def SUBNAMESPACE files
- $def NAMESPACE_BEGIN "namespace std { namespace tr2 { namespace files {
+ $def SUBNAMESPACE filesystem
+ $def NAMESPACE_BEGIN "namespace std { namespace tbd { namespace filesystem {
 "
- $def NAMESPACE_END "} } } // namespaces std::tr2::files"
+ $def NAMESPACE_END "} } } // namespaces std::tbd::filesystem"
 $endif
 </title>
 <style type="text/css">
@@ -588,6 +588,7 @@
         typedef <b><i>see below</i></b> value_type; // char for POSIX, wchar_t for Windows
         typedef std::basic_string&lt;value_type&gt; string_type;
         typedef std::codecvt&lt;wchar_t, char, std::mbstate_t&gt; codecvt_type;
+ constexpr value_type preferred_separator;
 
         // constructors and destructor
         path();

Modified: branches/quickbook-dev/libs/filesystem/v3/doc/src/tr2_snippets.html
==============================================================================
--- branches/quickbook-dev/libs/filesystem/v3/doc/src/tr2_snippets.html (original)
+++ branches/quickbook-dev/libs/filesystem/v3/doc/src/tr2_snippets.html 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -18,7 +18,7 @@
     <tr>
       <td width="153" align="left" valign="top">Date:</td>
       <td width="426">
- <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y-%m-%d" startspan -->2012-02-02<!--webbot bot="Timestamp" endspan i-checksum="12106" --></td>
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y-%m-%d" startspan -->2012-03-16<!--webbot bot="Timestamp" endspan i-checksum="12179" --></td>
     </tr>
     <tr>
       <td width="153" align="left" valign="top">Project:</td>
@@ -31,28 +31,37 @@
   </table>
 
 
-<h1>Filesystem Library for C++11/TR2 (Revision 2)</h1>
+<h1><span style="background-color: #FFFF00">Draft</span><br>
+Filesystem Library Proposal (Revision 3)</h1>
 
 
-<p>This paper proposes that the&nbsp;filesystem library component of <i>C++ Standard
-Library Technical Report 2</i> be based on Version 3 of the Boost Filesystem
+<p>This paper proposes a filesystem library component suitable for a <i>C++
+Standard Library Technical Report</i> or for the <i>C++ Standard Library</i>.
+The proposed library is based on Version 3 of the Boost Filesystem
 Library (see <a href="http://www.boost.org/libs/filesystem">
 www.boost.org/libs/filesystem</a>). Preliminary wording is provided. A
 <a href="#TODO">TODO</a> list identifies remaining work to be done.</p>
 
 
-<h2>Revision history </h2>
+<h2>Revision history</h2>
 
 
-<p><span style="background-color: #FFFF00">N????=12-????</span>, Filesystem Library for C++11/TR2 (Revision
+<p><span style="background-color: #FFFF00">D????=12-????</span></p>
+
+
+<p>N3365=12-0055, Filesystem Library Proposal (Revision
 2). Changes
 include:</p>
 
 
 <ul>
+ <li>Namespaces changed to <code>std::tbd::filesystem</code> per
+ <a href="#Issues-List">issue
+ 1</a> discussion in Kona.</li>
   <li>Removed references to Boost within the proposed wording.</li>
- <li>Corrected namespaces and made other minor fixes to the proposed wording.</li>
+ <li>Minor fixes to the proposed wording.</li>
   <li>Added Issue 7: How should class path inserter and extractor be specified?</li>
+ <li>Marked up all issues to reflect Kona LWG discussions.</li>
 </ul>
 
 
@@ -142,9 +151,6 @@
     application is correct.</li>
     <li>Boost.Filesystem needs to implement <code>char16_t</code> and <code>char32_t</code> support to verify the
     specification for these is correct.</li>
- <li>Replace path inserter and extractor <i>Effects</i> with prose, since the
- current wording relies on
- <code>boost::io::quoted</code></span>.</li>
     <li>The Boost implementation has more class path non-member relational
     functions that shown in the docs, and the specific set of relational
     functions varies between Windows and POSIX. Figure out what's happening and
@@ -153,8 +159,40 @@
     implemented. Expose <code>path_traits</code>?</li>
     <li><i>Effects</i> for <code>copy</code> and <code>copy_directory</code>
     need to be reviewed, revised, tested, peer reviewed.</li>
- <li>Review changes to header &lt;fstream&gt;. Add semantics. Add section
- names. Verify still in sync with WP.</li>
+ <li>Dinkumware/Microsoft report slightly different results for Decomposition
+ table. Rerun table. Check discrepancies.</li>
+ <li>Apply issue resolutions from Kona.</li>
+ <li>Remove registered trademarks from normative text per ISO policy.</li>
+ <li>Review Nick Stoughton's email for suggestions, action items.</li>
+ <li>Change <code>time_t</code> to <code>chrono system_clock::time_point</code>,
+ per LWG discussion in Kona. </li>
+ <li>Add [section.name] and, if possible, section numbering, per LWG
+ discussion in Kona.</li>
+ <li>Add Ed Smith-Rowland's suggestion: <br>
+ &gt;path&amp; path+=(const path&amp; p);<br>
+ &gt; and<br>
+ &gt; path operator+(const path&amp; lhs, const path&amp; rhs);<br>
+ &gt; to tack on things like suffixes or numbers on the end of files.<br>
+ &gt; This has no real semantics, it just concatenates pathnames.</li>
+ <li>Ed Smith-Rowland:<br>
+ &gt; I found it less confusing to switch to positive logic for
+ recursive_directory_iterator:<br>
+ &gt; bool no_push_pending() const noexcept;<br>
+ &gt; to say<br>
+ &gt; bool is_push_pending() const noexcept;<br>
+ &gt;<br>
+ &gt; and<br>
+ &gt; void no_push(bool value=true);<br>
+ &gt; to say<br>
+ &gt; void push_pending(bool value=false);<br>
+ &gt; or<br>
+ &gt; void set_push_pending(bool value=false);<br>
+ &gt; I found it less confusing and I think other parts of the library strive
+ for this.</li>
+ <li>recursive_directory_iterator is specified in terms of private data
+ members. Remove these (including the comment!) and specify in terms of
+ behavior only.<br>
+&nbsp;</li>
   </ul>
   
   $endid
@@ -239,9 +277,10 @@
 <hr>
 <h2><a name="Issues-List">Issues List</a></h2>
 <hr>
-<h3>Issue 1: What is the appropriate namespace?</h3>
+<h3>Issue 1: What is the appropriate namespace?&nbsp;&nbsp;&nbsp; Status:
+Tentatively resolved</h3>
 <h4>Discussion</h4>
-<p>The proposal places the library in <code>namespace std::tr2::$SUBNAMESPACE;</code>.
+<p>The N3335 proposal places the library in namespace <code>std::tr2::files</code>.
 Rationale for a sub-namespace is that the library uses several names that don't
 seem appropriate for namespace <code>tr2</code> since full standardization would
 then put the names into <code>std</code>. The function names <code>remove</code>
@@ -249,12 +288,17 @@
 in behavior from current standard library functions with those names. It also
 doesn't seem desirable to preempt names like <code>equivalent</code> and <code>
 status</code>.</p>
-<p>The Boost Filesystem library used <code>namespace boost::filesystem</code>,
-but that always seemed a bit too long.</p>
-<h4>Proposed resolution</h4>
-<p>Status quo. Leave in <code>namespace std::tr2::$SUBNAMESPACE;</code>.</p>
+<h4>Resolution</h4>
+<p><i>Kona: Strong support for <code>filesystem</code> as the library's
+namespace. Strong support for a technical report namespace that alerts uses that
+contents are likely to change if and when they later get moved into the
+standard. </i></p>
+<p><i>No decision yet on a TR namespace; <code>experimental</code> being used as
+a placeholder. Thus the full namespace is changed to <code>
+std::experimental::filesystem.</code></i></p>
 <hr>
-<h3>Issue 2: Excessive use of <code>const codecvt_type&amp;</code> arguments</h3>
+<h3>Issue 2: Excessive use of <code>const codecvt_type&amp;</code> arguments&nbsp;&nbsp;&nbsp;
+Status: Open</h3>
 <h4>Discussion</h4>
 <p>Users sometimes need to do path conversions that use something other than the
 imbued codecvt facet. The need is particularly acute in multi-threaded
@@ -263,38 +307,45 @@
 function where the need might possibly arise is excessive because its use is so
 rare and it adds considerable interface clutter.</p>
 <h4>Proposed resolution</h4>
-<p dir="ltr">Remove all existing class path <code>const codecvt_type&amp;</code>
-arguments.</p>
-<p>Add an additional non-member function:</p>
-<blockquote>
- <pre>unspecified-iterator-type convert(<code>const path&amp; p, const codecvt_type&amp; codecvt</code>);</pre>
- <p dir="ltr"><i>Returns: </i>An unspecified iterator type whose value type is
- <code>path::value_type</code>. The returned iterator points to the beginning
- of a sequence equivalent to <code>p.native()</code> with encoding as specified
- by <code>codecvt</code>.</p>
-</blockquote>
+<p dir="ltr"><i>Kona:</i></p>
+<p dir="ltr"><i>Remove all existing class path <code>const codecvt_type&amp;</code>
+arguments.</i></p>
+<p dir="ltr"><i>Beman to pursue separate encoding conversion functionality, per
+Thursday N3336 &quot;Adapting standard library strings and IO to a Unicode World&quot;
+discussion. See Kona wiki.</i></p>
+<p dir="ltr"><i>If a separate encoding conversion facility isn't possible, then
+some form of minimal class path encoding conversion facility will be needed.
+But..., the LWG would like to see use cases and clearer explanation of
+motivation before deciding on specifics, and be very sure that there is no way
+to achieve with existing std library functionality, albeit with some loss of
+efficiency.</i></p>
 <hr>
-<h3>Issue 3: Possible &quot;implicit cast to native type&quot;?</h3>
+<h3>Issue 3: Possible &quot;implicit cast to native type&quot;?&nbsp;&nbsp;&nbsp;&nbsp;
+Status: Open</h3>
 <h4>Discussion</h4>
 <p>In Bloomington there was discussion of &quot;implicit cast to implicit cast to
 native OS type to inter operate with existing iostream library and native
 functions instead of modifying fstream&quot;.</p>
-<p>Beman comments: I wasn't in Bloomington and am not sure of the context of the
-above. N3239 inadvertently included the Boost docs for &lt;fstream&gt; rather than
-suggested &lt;fstream&gt; changes for TR2, and that may have caused some confusion. Or
-maybe I'm just missing something from the wiki notes. Some further discussions
-are needed to better define the issue.</p>
 <h4>Proposed resolution</h4>
+<p><i>Kona: The Dinkumware/Microsoft implementation has added an implicit
+conversion to the string type, eliminating any need to modify fstream.
+(Discussion: might be safer to make the implicit conversion protected, then make
+fstream classes friends).</i></p>
+<p><i>Action: Beman to investigate, test, as avoiding modification of existing
+header and classes is much desired.</i></p>
 <hr>
-<h3>Issue 4: Given move semantics, it is best not to return const strings.</h3>
+<h3>Issue 4: Given move semantics, it is best not to return const strings.&nbsp;&nbsp;&nbsp;&nbsp;
+Status: Resolved</h3>
 <h4>Discussion</h4>
 <p>The issue title pretty much says it all.</p>
 <h4>Proposed resolution</h4>
-<p>As part of the C++11 refinements to the interface, review returns of const
-strings and change to plain strings where appropriate.</p>
+<p><i>Kona: Return plain strings. Remove the permission for implementations to
+return const refs, since uses are not in performace critical code and subtle
+portability bugs may occur.</i></p>
+<p><i>Action: Beman to apply to proposed wording.</i></p>
 <hr>
 <h3>Issue 5: Is there a way to handle characters that are illegal for particular
-OS?</h3>
+OS?&nbsp;&nbsp;&nbsp;&nbsp; Status: NAD</h3>
 <h4>Discussion</h4>
 <p>Question raised by Pablo in Bloomington.</p>
 <h4>Proposed resolution</h4>
@@ -304,15 +355,20 @@
 believe it should be deferred to some future release since (1) it is complex
 enough that I'd like to see actual implementation and use experience (presumably
 via Boost), and (2) I can't recall a user ever requesting such a feature.</p>
+<p><i>Kona: No consensus for change, since there doesn't appear to be any
+compelling use case.</i></p>
 <hr>
-<h3>Issue 6: Could allocator support be added to class path?</h3>
+<h3>Issue 6: Could allocator support be added to class path?&nbsp;&nbsp;&nbsp;&nbsp;
+Status: Open</h3>
 <h4>Discussion</h4>
 <p>Question raised by a committee member in private email.</p>
-<p>Comment from Beman: How would allocator support work, given that class path
-is not a template?</p>
-<h4>Proposed resolution</h4>
+<p><i>Kona: Much discussion.</i></p>
+<p><i>Action: Alisdair to write paper, based on a real implementation, so that
+it is possible to assess the impact on interface, performance, etc.</i></p>
+<p><i>Post-Kona: Alisdair will defer paper until after TR. </i></p>
 <hr>
-<h3>Issue 7: How should class path inserter and extractor be specified?</h3>
+<h3>Issue 7: How should class path inserter and extractor be specified?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Status: Resolved</h3>
 <h4>Discussion</h4>
 <p>Class <code>path</code> currently is specified to used the Boost detail <code>
 quoted</code> stream manipulator. A path object is inserted delimited by quotes,
@@ -326,11 +382,11 @@
 have to change the specification. Since the <code>quoted</code> stream
 manipulator is a handy little component, the issue is raised as to whether it
 should go in TR2.</p>
-<h4>Proposed resolution</h4>
-<p><b>Option 1:</b> Add Boost's <code>quoted</code> stream manipulator to TR2,
-and change the Filesystem docs to reference it.</p>
-<p><b>Option 2:</b> Specify the path inserter and extractor to have the desired
-behavior with reference to how it is achieved. </p>
+<h4>Resolution</h4>
+<p><i>Kona: Specify the path inserter and extractor to have the desired
+behavior without reference to how it is achieved. (If someone wants to propose a
+quoted manipulator, that's a separate proposal for a different TR.)</i></p>
+<p><i>Action:&nbsp; Beman to apply to proposed wording.</i></p>
 <hr>
 <p>$endid
 

Modified: branches/quickbook-dev/libs/filesystem/v3/src/path.cpp
==============================================================================
--- branches/quickbook-dev/libs/filesystem/v3/src/path.cpp (original)
+++ branches/quickbook-dev/libs/filesystem/v3/src/path.cpp 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -78,7 +78,6 @@
 # ifdef BOOST_WINDOWS_API
 
   const wchar_t separator = L'/';
- const wchar_t preferred_separator = L'\\';
   const wchar_t* const separators = L"/\\";
   const wchar_t* separator_string = L"/";
   const wchar_t* preferred_separator_string = L"\\";
@@ -91,7 +90,6 @@
 # else
 
   const char separator = '/';
- const char preferred_separator = '/';
   const char* const separators = "/";
   const char* separator_string = "/";
   const char* preferred_separator_string = "/";
@@ -106,7 +104,7 @@
   {
     return c == separator
 # ifdef BOOST_WINDOWS_API
- || c == preferred_separator
+ || c == path::preferred_separator
 # endif
       ;
   }
@@ -144,7 +142,6 @@
 {
 namespace filesystem3
 {
-
   path& path::operator/=(const path& p)
   {
     if (p.empty())
@@ -629,7 +626,6 @@
 {
 namespace filesystem3
 {
-
   path::iterator path::begin() const
   {
     iterator itr;
@@ -682,7 +678,7 @@
 # endif
          )
       {
- it.m_element.m_pathname = separator;
+ it.m_element.m_pathname = separator; // generic format; see docs
         return;
       }
 
@@ -738,8 +734,8 @@
 
     it.m_pos = filename_pos(it.m_path_ptr->m_pathname, end_pos);
     it.m_element = it.m_path_ptr->m_pathname.substr(it.m_pos, end_pos - it.m_pos);
- if (it.m_element.m_pathname == preferred_separator_string)
- it.m_element.m_pathname = separator_string; // needed for Windows, harmless on POSIX
+ if (it.m_element.m_pathname == preferred_separator_string) // needed for Windows, harmless on POSIX
+ it.m_element.m_pathname = separator_string; // generic format; see docs
   }
 
 } // namespace filesystem3

Modified: branches/quickbook-dev/libs/filesystem/v3/test/path_unit_test.cpp
==============================================================================
--- branches/quickbook-dev/libs/filesystem/v3/test/path_unit_test.cpp (original)
+++ branches/quickbook-dev/libs/filesystem/v3/test/path_unit_test.cpp 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -976,9 +976,11 @@
 // document state of critical macros
 #ifdef BOOST_POSIX_API
   cout << "BOOST_POSIX_API" << endl;
+ BOOST_TEST(path::preferred_separator == '/');
 #endif
 #ifdef BOOST_WINDOWS_API
   cout << "BOOST_WINDOWS_API" << endl;
+ BOOST_TEST(path::preferred_separator == '\\');
 #endif
 
   l.push_back('s');
@@ -1021,7 +1023,7 @@
   test_codecvt_argument();
   test_error_handling();
 
-# if 0
+#if 0
 
   test_user_supplied_type();
 

Modified: branches/quickbook-dev/libs/geometry/test/algorithms/overlay/overlay_cases.hpp
==============================================================================
--- branches/quickbook-dev/libs/geometry/test/algorithms/overlay/overlay_cases.hpp (original)
+++ branches/quickbook-dev/libs/geometry/test/algorithms/overlay/overlay_cases.hpp 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -602,4 +602,22 @@
         "POLYGON((2.0 2.0,2.0 3.0,2.0 4.0,3.0 4.0,4.0 4.0,6.4142135623730958 4.0,4.7071067811865479 2.2928932188134525,3.7071067811865475 1.2928932188134525,2.0 -0.41421356237309387,2.0 2.0))"
     };
 
+// Idem, but with a touch-in-the-middle
+static std::string buffer_rt_j[2] =
+ {
+ "POLYGON((1.0 4.0,1.0 5.0,1.0 6.0,2.0 6.0,3.0 6.0,5.4142135623730967 6.0,3.7071067811865475 4.2928932188134521,2.7071067811865475 3.2928932188134525,1.0 1.5857864376269055,1.0 4.0))",
+ "POLYGON((-1.0 2.0,-1.0 3.0,-1.0 4.0,0.00 4.0,1.0 4.0,3.4142135623730949 4.0,1.7071067811865475 2.2928932188134525,0.70710678118654746 1.2928932188134525,-1.0 -0.41421356237309492,-1.0 2.0))"
+ };
+
+// Nearly-collinear (two segments as-if meeting but not really)
+static std::string buffer_rt_l[2] =
+ {
+ "POLYGON((1.0 5.0,1.0 6.0,1.0 8.4142135623730958,2.7071067811865475 6.7071067811865479,3.7071067811865475 5.7071067811865479,5.4142135623730958 4.0,3.0 4.0,2.0 4.0,1.0 4.0,1.0 5.0))",
+ "POLYGON((5.0 1.0,5.0 2.0,5.0 4.4142135623730958,6.7071067811865479 2.7071067811865475,7.7071067811865479 1.7071067811865475,9.4142135623730958 0.00,7.0 0.0,6.0 0.0,5.0 0.0,5.0 1.0))"
+ };
+
+
+
+
+
 #endif // BOOST_GEOMETRY_TEST_OVERLAY_CASES_HPP

Modified: branches/quickbook-dev/libs/geometry/test/algorithms/union.cpp
==============================================================================
--- branches/quickbook-dev/libs/geometry/test/algorithms/union.cpp (original)
+++ branches/quickbook-dev/libs/geometry/test/algorithms/union.cpp 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -290,7 +290,6 @@
                 1, 0, 13, 13.6569);
     test_one<Polygon, Polygon, Polygon>("buffer_rt_i_rev", buffer_rt_i[1], buffer_rt_i[0],
                 1, 0, 13, 13.6569);
-
 }
 
 template <typename P>

Modified: branches/quickbook-dev/libs/thread/src/future.cpp
==============================================================================
--- branches/quickbook-dev/libs/thread/src/future.cpp (original)
+++ branches/quickbook-dev/libs/thread/src/future.cpp 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -53,16 +53,4 @@
       return f;
   }
 
- future_error::future_error(system::error_code ec)
- : logic_error(ec.message()),
- ec_(ec)
- {
- }
-
-// future_error::~future_error() //BOOST_NOEXCEPT
-// {
-// }
-
-
-
 }

Modified: branches/quickbook-dev/libs/thread/src/win32/thread.cpp
==============================================================================
--- branches/quickbook-dev/libs/thread/src/win32/thread.cpp (original)
+++ branches/quickbook-dev/libs/thread/src/win32/thread.cpp 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -319,7 +319,9 @@
     }
 
 #ifdef BOOST_THREAD_USES_CHRONO
- bool thread::do_try_join_for(chrono::milliseconds const &rel_time_in_milliseconds) {
+
+ bool thread::try_join_until(const chrono::time_point<chrono::system_clock, chrono::nanoseconds>& tp)
+ {
       if (this_thread::get_id() == get_id())
       {
         boost::throw_exception(thread_resource_error(system::errc::resource_deadlock_would_occur, "boost thread: trying joining itself"));
@@ -327,15 +329,16 @@
       detail::thread_data_ptr local_thread_info=(get_thread_info)();
       if(local_thread_info)
       {
- if(!this_thread::interruptible_wait(local_thread_info->thread_handle,rel_time_in_milliseconds.count()))
- {
- return false;
- }
- release_handle();
+ chrono::milliseconds rel_time= chrono::ceil<chrono::milliseconds>(tp-chrono::system_clock::now());
+ if(!this_thread::interruptible_wait(local_thread_info->thread_handle,rel_time.count()))
+ {
+ return false;
+ }
+ release_handle();
       }
       return true;
-
     }
+
 #endif
 
     void thread::detach()

Modified: branches/quickbook-dev/libs/thread/test/Jamfile.v2
==============================================================================
--- branches/quickbook-dev/libs/thread/test/Jamfile.v2 (original)
+++ branches/quickbook-dev/libs/thread/test/Jamfile.v2 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -35,10 +35,10 @@
 rule thread-run2 ( sources : name )
 {
     return
- [ run $(sources) ../build//boost_thread : : :
+ [ run $(sources) ../build//boost_thread : : :
       : $(name) ]
     [ run $(sources) ../src/tss_null.cpp ../build//boost_thread/<link>static
- : : :
+ : : :
       : $(name)_lib ]
     ;
 }
@@ -48,7 +48,7 @@
 {
     return
     [ compile-fail $(sources)
- : $(reqs)
+ : $(reqs)
         : $(name) ]
     ;
 }
@@ -78,12 +78,11 @@
           [ thread-run test_shared_mutex.cpp ]
           [ thread-run test_shared_mutex_part_2.cpp ]
           [ thread-run test_shared_mutex_timed_locks.cpp ]
- #uncomment the following once these works on windows
- #[ thread-run test_shared_mutex_timed_locks_chrono.cpp ]
- #uncomment the following once these works on windows
- #[ thread-run test_v2_shared_mutex.cpp ]
- #[ thread-run test_v2_shared_mutex_part_2.cpp ]
- #[ thread-run test_v2_shared_mutex_timed_locks.cpp ]
+ [ thread-run test_shared_mutex_timed_locks_chrono.cpp ]
+ #uncomment the following once these works on windows
+ [ thread-run test_v2_shared_mutex.cpp ]
+ [ thread-run test_v2_shared_mutex_part_2.cpp ]
+ [ thread-run test_v2_shared_mutex_timed_locks.cpp ]
           [ thread-run test_lock_concept.cpp ]
           [ thread-run test_generic_locks.cpp ]
           [ thread-run test_futures.cpp ]
@@ -123,190 +122,215 @@
     #explicit conditions ;
     test-suite conditions
     :
- [ thread-compile-fail-V2 ./sync/conditions/condition_variable/assign_fail.cpp : : conditions__condition_variable__assign_fail ]
- [ thread-compile-fail-V2 ./sync/conditions/condition_variable/copy_fail.cpp : : conditions__condition_variable__copy_fail ]
- [ thread-run2 ./sync/conditions/condition_variable/default_pass.cpp : conditions__condition_variable__default_pass ]
- [ thread-run2 ./sync/conditions/condition_variable/dtor_pass.cpp : conditions__condition_variable__dtor_pass ]
- [ thread-run2 ./sync/conditions/condition_variable/native_handle_pass.cpp : conditions__condition_variable__native_handle_pass ]
- [ thread-run2 ./sync/conditions/condition_variable/wait_for_pass.cpp : conditions__condition_variable__wait_for_pass ]
- [ thread-run2 ./sync/conditions/condition_variable/wait_for_pred_pass.cpp : conditions__condition_variable__wait_for_pred_pass ]
- [ thread-run2 ./sync/conditions/condition_variable/wait_until_pass.cpp : conditions__condition_variable__wait_until_pass ]
- [ thread-run2 ./sync/conditions/condition_variable/wait_until_pred_pass.cpp : conditions__condition_variable__wait_until_pred_pass ]
-
- [ thread-compile-fail-V2 ./sync/conditions/condition_variable_any/assign_fail.cpp : : conditions__condition_variable_any__assign_fail ]
- [ thread-compile-fail-V2 ./sync/conditions/condition_variable_any/copy_fail.cpp : : conditions__condition_variable_any__copy_fail ]
- [ thread-run2 ./sync/conditions/condition_variable_any/default_pass.cpp : conditions__condition_variable_any__default_pass ]
- [ thread-run2 ./sync/conditions/condition_variable_any/dtor_pass.cpp : conditions__condition_variable_any__dtor_pass ]
- [ thread-run2 ./sync/conditions/condition_variable_any/wait_for_pass.cpp : conditions__condition_variable_any__wait_for_pass ]
- [ thread-run2 ./sync/conditions/condition_variable_any/wait_for_pred_pass.cpp : conditions__condition_variable_any__wait_for_pred_pass ]
- [ thread-run2 ./sync/conditions/condition_variable_any/wait_until_pass.cpp : conditions__condition_variable_any__wait_until_pass ]
- [ thread-run2 ./sync/conditions/condition_variable_any/wait_until_pred_pass.cpp : conditions__condition_variable_any__wait_until_pred_pass ]
- [ thread-run2 ./sync/conditions/cv_status/cv_status_pass.cpp : conditions__cv_status__cv_status_pass ]
+ [ thread-compile-fail-V2 ./sync/conditions/condition_variable/assign_fail.cpp : : conditions__condition_variable__assign_f ]
+ [ thread-compile-fail-V2 ./sync/conditions/condition_variable/copy_fail.cpp : : conditions__condition_variable__copy_f ]
+ [ thread-run2 ./sync/conditions/condition_variable/default_pass.cpp : conditions__condition_variable__default_p ]
+ [ thread-run2 ./sync/conditions/condition_variable/dtor_pass.cpp : conditions__condition_variable__dtor_p ]
+ [ thread-run2 ./sync/conditions/condition_variable/native_handle_pass.cpp : conditions__condition_variable__native_handle_p ]
+ [ thread-run2 ./sync/conditions/condition_variable/wait_for_pass.cpp : conditions__condition_variable__wait_for_p ]
+ [ thread-run2 ./sync/conditions/condition_variable/wait_for_pred_pass.cpp : conditions__condition_variable__wait_for_pred_p ]
+ [ thread-run2 ./sync/conditions/condition_variable/wait_until_pass.cpp : conditions__condition_variable__wait_until_p ]
+ [ thread-run2 ./sync/conditions/condition_variable/wait_until_pred_pass.cpp : conditions__condition_variable__wait_until_pred_p ]
+
+ [ thread-compile-fail-V2 ./sync/conditions/condition_variable_any/assign_fail.cpp : : conditions__condition_variable_any__assign_f ]
+ [ thread-compile-fail-V2 ./sync/conditions/condition_variable_any/copy_fail.cpp : : conditions__condition_variable_any__copy_f ]
+ [ thread-run2 ./sync/conditions/condition_variable_any/default_pass.cpp : conditions__condition_variable_any__default_p ]
+ [ thread-run2 ./sync/conditions/condition_variable_any/dtor_pass.cpp : conditions__condition_variable_any__dtor_p ]
+ [ thread-run2 ./sync/conditions/condition_variable_any/wait_for_pass.cpp : conditions__condition_variable_any__wait_for_p ]
+ [ thread-run2 ./sync/conditions/condition_variable_any/wait_for_pred_pass.cpp : conditions__condition_variable_any__wait_for_pred_p ]
+ [ thread-run2 ./sync/conditions/condition_variable_any/wait_until_pass.cpp : conditions__condition_variable_any__wait_until_p ]
+ [ thread-run2 ./sync/conditions/condition_variable_any/wait_until_pred_pass.cpp : conditions__condition_variable_any__wait_until_pred_p ]
+ [ thread-run2 ./sync/conditions/cv_status/cv_status_pass.cpp : conditions__cv_status__cv_status_p ]
     ;
 
     #explicit futures ;
     test-suite futures
     :
- # [ thread-run2 ./sync/futures/async/async_pass.cpp : futures__async__async_pass ]
- [ thread-run2 ./sync/futures/promise/default_pass.cpp : futures__promise__default_pass ]
- [ thread-run2 ./sync/futures/promise/dtor_pass.cpp : futures__promise__dtor_pass ]
- [ thread-run2 ./sync/futures/promise/get_future_pass.cpp : futures__promise__get_future_pass ]
+ # [ thread-run2 ./sync/futures/async/async_pass.cpp : futures__async__async_p ]
+ [ thread-run2 ./sync/futures/promise/default_pass.cpp : futures__promise__default_p ]
+ [ thread-run2 ./sync/futures/promise/dtor_pass.cpp : futures__promise__dtor_p ]
+ [ thread-run2 ./sync/futures/promise/get_future_pass.cpp : futures__promise__get_future_p ]
     ;
 
 
     #explicit mutual_exclusion ;
     test-suite mutual_exclusion
     :
-
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/locks/unique_lock/cons/copy_assign_fail.cpp : : mutual_exclusion__locks__unique_lock__cons__copy_assign_fail ]
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/locks/unique_lock/cons/copy_ctor_fail.cpp : : mutual_exclusion__locks__unique_lock__cons__copy_ctor_fail ]
- [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/adopt_lock_pass.cpp : mutual_exclusion__locks__unique_lock__cons__adopt_lock_pass ]
- [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/default_pass.cpp : mutual_exclusion__locks__unique_lock__cons__default_pass ]
- [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/defer_lock_pass.cpp : mutual_exclusion__locks__unique_lock__cons__defer_lock_pass ]
- [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/duration_pass.cpp : mutual_exclusion__locks__unique_lock__cons__duration_pass ]
- [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/move_assign_pass.cpp : mutual_exclusion__locks__unique_lock__cons__move_assign_pass ]
- [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/move_ctor_pass.cpp : mutual_exclusion__locks__unique_lock__cons__move_ctor_pass ]
- [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/mutex_pass.cpp : mutual_exclusion__locks__unique_lock__cons__mutex_pass ]
- [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/time_point_pass.cpp : mutual_exclusion__locks__unique_lock__cons__time_point_pass ]
- [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/try_to_lock_pass.cpp : mutual_exclusion__locks__unique_lock__cons__try_to_lock_pass ]
- [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/locking/lock_pass.cpp : mutual_exclusion__locks__unique_lock__locking__lock_pass ]
- [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/locking/try_lock_for_pass.cpp : mutual_exclusion__locks__unique_lock__locking__try_lock_for_pass ]
- [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/locking/try_lock_pass.cpp : mutual_exclusion__locks__unique_lock__locking__try_lock_pass ]
- [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/locking/try_lock_until_pass.cpp : mutual_exclusion__locks__unique_lock__locking__try_lock_until_pass ]
- [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/locking/unlock_pass.cpp : mutual_exclusion__locks__unique_lock__locking__unlock_pass ]
- [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/mod/member_swap_pass.cpp : mutual_exclusion__locks__unique_lock__mod__member_swap_pass ]
- [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/mod/non_member_swap_pass.cpp : mutual_exclusion__locks__unique_lock__mod__non_member_swap_pass ]
- [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/mod/release_pass.cpp : mutual_exclusion__locks__unique_lock__mod__release_pass ]
- [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/obs/mutex_pass.cpp : mutual_exclusion__locks__unique_lock__obs__mutex_pass ]
- [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/obs/op_bool_pass.cpp : mutual_exclusion__locks__unique_lock__obs__op_bool_pass ]
- [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/obs/owns_lock_pass.cpp : mutual_exclusion__locks__unique_lock__obs__owns_lock_pass ]
- [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/types_pass.cpp : mutual_exclusion__locks__unique_lock__types_pass ]
-
- #uncomment the following once these works on windows
- #[ thread-compile-fail-V2 ./sync/mutual_exclusion/locks/shared_lock/cons/copy_assign_fail.cpp : : mutual_exclusion__locks__shared_lock__cons__copy_assign_fail ]
- #[ thread-compile-fail-V2 ./sync/mutual_exclusion/locks/shared_lock/cons/copy_ctor_fail.cpp : : mutual_exclusion__locks__shared_lock__cons__copy_ctor_fail ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/cons/adopt_lock_pass.cpp : mutual_exclusion__locks__shared_lock__cons__adopt_lock_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/cons/default_pass.cpp : mutual_exclusion__locks__shared_lock__cons__default_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/cons/defer_lock_pass.cpp : mutual_exclusion__locks__shared_lock__cons__defer_lock_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/cons/duration_pass.cpp : mutual_exclusion__locks__shared_lock__cons__duration_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/cons/move_assign_pass.cpp : mutual_exclusion__locks__shared_lock__cons__move_assign_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/cons/move_ctor_pass.cpp : mutual_exclusion__locks__shared_lock__cons__move_ctor_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/cons/mutex_pass.cpp : mutual_exclusion__locks__shared_lock__cons__mutex_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/cons/time_point_pass.cpp : mutual_exclusion__locks__shared_lock__cons__time_point_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/cons/try_to_lock_pass.cpp : mutual_exclusion__locks__shared_lock__cons__try_to_lock_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/locking/lock_pass.cpp : mutual_exclusion__locks__shared_lock__locking__lock_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/locking/try_lock_for_pass.cpp : mutual_exclusion__locks__shared_lock__locking__try_lock_for_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/locking/try_lock_pass.cpp : mutual_exclusion__locks__shared_lock__locking__try_lock_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/locking/try_lock_until_pass.cpp : mutual_exclusion__locks__shared_lock__locking__try_lock_until_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/locking/unlock_pass.cpp : mutual_exclusion__locks__shared_lock__locking__unlock_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/mod/member_swap_pass.cpp : mutual_exclusion__locks__shared_lock__mod__member_swap_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/mod/non_member_swap_pass.cpp : mutual_exclusion__locks__shared_lock__mod__non_member_swap_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/mod/release_pass.cpp : mutual_exclusion__locks__shared_lock__mod__release_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/obs/mutex_pass.cpp : mutual_exclusion__locks__shared_lock__obs__mutex_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/obs/op_bool_pass.cpp : mutual_exclusion__locks__shared_lock__obs__op_bool_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/obs/owns_lock_pass.cpp : mutual_exclusion__locks__shared_lock__obs__owns_lock_pass ]
-
- #uncomment the following once these works on windows
- #[ thread-compile-fail-V2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/copy_assign_fail.cpp : : mutual_exclusion__locks__upgrade_lock__cons__copy_assign_fail ]
- #[ thread-compile-fail-V2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/copy_ctor_fail.cpp : : mutual_exclusion__locks__upgrade_lock__cons__copy_ctor_fail ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/adopt_lock_pass.cpp : mutual_exclusion__locks__upgrade_lock__cons__adopt_lock_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/default_pass.cpp : mutual_exclusion__locks__upgrade_lock__cons__default_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/defer_lock_pass.cpp : mutual_exclusion__locks__upgrade_lock__cons__defer_lock_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/duration_pass.cpp : mutual_exclusion__locks__upgrade_lock__cons__duration_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/move_assign_pass.cpp : mutual_exclusion__locks__upgrade_lock__cons__move_assign_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/move_ctor_pass.cpp : mutual_exclusion__locks__upgrade_lock__cons__move_ctor_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/mutex_pass.cpp : mutual_exclusion__locks__upgrade_lock__cons__mutex_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/time_point_pass.cpp : mutual_exclusion__locks__upgrade_lock__cons__time_point_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/try_to_lock_pass.cpp : mutual_exclusion__locks__upgrade_lock__cons__try_to_lock_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/locking/lock_pass.cpp : mutual_exclusion__locks__upgrade_lock__locking__lock_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/locking/try_lock_for_pass.cpp : mutual_exclusion__locks__upgrade_lock__locking__try_lock_for_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/locking/try_lock_pass.cpp : mutual_exclusion__locks__upgrade_lock__locking__try_lock_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/locking/try_lock_until_pass.cpp : mutual_exclusion__locks__upgrade_lock__locking__try_lock_until_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/locking/unlock_pass.cpp : mutual_exclusion__locks__upgrade_lock__locking__unlock_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/mod/member_swap_pass.cpp : mutual_exclusion__locks__upgrade_lock__mod__member_swap_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/mod/non_member_swap_pass.cpp : mutual_exclusion__locks__upgrade_lock__mod__non_member_swap_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/mod/release_pass.cpp : mutual_exclusion__locks__upgrade_lock__mod__release_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/obs/mutex_pass.cpp : mutual_exclusion__locks__upgrade_lock__obs__mutex_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/obs/op_bool_pass.cpp : mutual_exclusion__locks__upgrade_lock__obs__op_bool_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/obs/owns_lock_pass.cpp : mutual_exclusion__locks__upgrade_lock__obs__owns_lock_pass ]
-
-
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/mutex/assign_fail.cpp : : mutual_exclusion__mutex__assign_fail ]
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/mutex/copy_fail.cpp : : mutual_exclusion__mutex__copy_fail ]
- [ thread-run2 ./sync/mutual_exclusion/mutex/default_pass.cpp : mutual_exclusion__mutex__default_pass ]
- [ thread-run2 ./sync/mutual_exclusion/mutex/lock_pass.cpp : mutual_exclusion__mutex__lock_pass ]
- [ thread-run2 ./sync/mutual_exclusion/mutex/native_handle_pass.cpp : mutual_exclusion__mutex__native_handle_pass ]
- [ thread-run2 ./sync/mutual_exclusion/mutex/try_lock_pass.cpp : mutual_exclusion__mutex__try_lock_pass ]
-
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/recursive_mutex/assign_fail.cpp : : mutual_exclusion__recursive_mutex__assign_fail ]
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/recursive_mutex/copy_fail.cpp : : mutual_exclusion__recursive_mutex__copy_fail ]
- [ thread-run2 ./sync/mutual_exclusion/recursive_mutex/default_pass.cpp : mutual_exclusion__recursive_mutex__default_pass ]
- [ thread-run2 ./sync/mutual_exclusion/recursive_mutex/lock_pass.cpp : mutual_exclusion__recursive_mutex__lock_pass ]
- [ thread-run2 ./sync/mutual_exclusion/recursive_mutex/native_handle_pass.cpp : mutual_exclusion__recursive_mutex__native_handle_pass ]
- [ thread-run2 ./sync/mutual_exclusion/recursive_mutex/try_lock_pass.cpp : mutual_exclusion__recursive_mutex__try_lock_pass ]
-
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/recursive_timed_mutex/assign_fail.cpp : : mutual_exclusion__recursive_timed_mutex__assign_fail ]
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/recursive_timed_mutex/copy_fail.cpp : : mutual_exclusion__recursive_timed_mutex__copy_fail ]
- [ thread-run2 ./sync/mutual_exclusion/recursive_timed_mutex/default_pass.cpp : mutual_exclusion__recursive_timed_mutex__default_pass ]
- [ thread-run2 ./sync/mutual_exclusion/recursive_timed_mutex/lock_pass.cpp : mutual_exclusion__recursive_timed_mutex__lock_pass ]
- [ thread-run2 ./sync/mutual_exclusion/recursive_timed_mutex/native_handle_pass.cpp : mutual_exclusion__recursive_timed_mutex__native_handle_pass ]
- [ thread-run2 ./sync/mutual_exclusion/recursive_timed_mutex/try_lock_for_pass.cpp : mutual_exclusion__recursive_timed_mutex__try_lock_for_pass ]
- [ thread-run2 ./sync/mutual_exclusion/recursive_timed_mutex/try_lock_pass.cpp : mutual_exclusion__recursive_timed_mutex__try_lock_pass ]
- [ thread-run2 ./sync/mutual_exclusion/recursive_timed_mutex/try_lock_until_pass.cpp : mutual_exclusion__recursive_timed_mutex__try_lock_until_pass ]
-
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/timed_mutex/assign_fail.cpp : : mutual_exclusion__timed_mutex__assign_fail ]
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/timed_mutex/copy_fail.cpp : : mutual_exclusion__timed_mutex__copy_fail ]
- [ thread-run2 ./sync/mutual_exclusion/timed_mutex/default_pass.cpp : mutual_exclusion__timed_mutex__default_pass ]
- [ thread-run2 ./sync/mutual_exclusion/timed_mutex/lock_pass.cpp : mutual_exclusion__timed_mutex__lock_pass ]
- [ thread-run2 ./sync/mutual_exclusion/timed_mutex/native_handle_pass.cpp : mutual_exclusion__timed_mutex__native_handle_pass ]
- [ thread-run2 ./sync/mutual_exclusion/timed_mutex/try_lock_for_pass.cpp : mutual_exclusion__timed_mutex__try_lock_for_pass ]
- [ thread-run2 ./sync/mutual_exclusion/timed_mutex/try_lock_pass.cpp : mutual_exclusion__timed_mutex__try_lock_pass ]
- [ thread-run2 ./sync/mutual_exclusion/timed_mutex/try_lock_until_pass.cpp : mutual_exclusion__timed_mutex__try_lock_until_pass ]
-
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/shared_mutex/assign_fail.cpp : : mutual_exclusion__shared_mutex__assign_fail ]
- [ thread-compile-fail-V2 ./sync/mutual_exclusion/shared_mutex/copy_fail.cpp : : mutual_exclusion__shared_mutex__copy_fail ]
- [ thread-run2 ./sync/mutual_exclusion/shared_mutex/default_pass.cpp : mutual_exclusion__shared_mutex__default_pass ]
- [ thread-run2 ./sync/mutual_exclusion/shared_mutex/lock_pass.cpp : mutual_exclusion__shared_mutex__lock_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/shared_mutex/try_lock_for_pass.cpp : mutual_exclusion__shared_mutex__try_lock_for_pass ]
- [ thread-run2 ./sync/mutual_exclusion/shared_mutex/try_lock_pass.cpp : mutual_exclusion__shared_mutex__try_lock_pass ]
- #[ thread-run2 ./sync/mutual_exclusion/shared_mutex/try_lock_until_pass.cpp : mutual_exclusion__shared_mutex__try_lock_until_pass ]
+ #uncomment the following once these works on windows
+ #[ thread-compile-fail-V2 ./sync/mutual_exclusion/locks/lock_guard/copy_assign_fail.cpp : : lock_guard__cons__copy_assign_f ]
+ #[ thread-compile-fail-V2 ./sync/mutual_exclusion/locks/lock_guard/copy_ctor_fail.cpp : : lock_guard__cons__copy_ctor_f ]
+ #[ thread-run2 ./sync/mutual_exclusion/locks/lock_guard/adopt_lock_pass.cpp : lock_guard__cons__adopt_lock_p ]
+ #[ thread-run2 ./sync/mutual_exclusion/locks/lock_guard/default_pass.cpp : lock_guard__cons__default_p ]
+ #[ thread-run2 ./sync/mutual_exclusion/locks/lock_guard/types_pass.cpp : lock_guard__types_p ]
+
+ [ thread-compile-fail-V2 ./sync/mutual_exclusion/locks/unique_lock/cons/copy_assign_fail.cpp : : unique_lock__cons__copy_assign_f ]
+ [ thread-compile-fail-V2 ./sync/mutual_exclusion/locks/unique_lock/cons/copy_ctor_fail.cpp : : unique_lock__cons__copy_ctor_f ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/adopt_lock_pass.cpp : unique_lock__cons__adopt_lock_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/default_pass.cpp : unique_lock__cons__default_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/defer_lock_pass.cpp : unique_lock__cons__defer_lock_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/duration_pass.cpp : unique_lock__cons__duration_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/move_assign_pass.cpp : unique_lock__cons__move_assign_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/move_ctor_pass.cpp : unique_lock__cons__move_ctor_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/mutex_pass.cpp : unique_lock__cons__mutex_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/time_point_pass.cpp : unique_lock__cons__time_point_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/try_to_lock_pass.cpp : unique_lock__cons__try_to_lock_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/locking/lock_pass.cpp : unique_lock__locking__lock_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/locking/try_lock_for_pass.cpp : unique_lock__locking__try_lock_for_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/locking/try_lock_pass.cpp : unique_lock__locking__try_lock_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/locking/try_lock_until_pass.cpp : unique_lock__locking__try_lock_until_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/locking/unlock_pass.cpp : unique_lock__locking__unlock_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/mod/member_swap_pass.cpp : unique_lock__mod__member_swap_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/mod/non_member_swap_pass.cpp : unique_lock__mod__non_member_swap_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/mod/release_pass.cpp : unique_lock__mod__release_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/obs/mutex_pass.cpp : unique_lock__obs__mutex_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/obs/op_bool_pass.cpp : unique_lock__obs__op_bool_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/obs/owns_lock_pass.cpp : unique_lock__obs__owns_lock_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/types_pass.cpp : unique_lock__types_p ]
+
+ [ thread-compile-fail-V2 ./sync/mutual_exclusion/locks/shared_lock/cons/copy_assign_fail.cpp : : shared_lock__cons__copy_assign_f ]
+ [ thread-compile-fail-V2 ./sync/mutual_exclusion/locks/shared_lock/cons/copy_ctor_fail.cpp : : shared_lock__cons__copy_ctor_f ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/cons/adopt_lock_pass.cpp : shared_lock__cons__adopt_lock_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/cons/default_pass.cpp : shared_lock__cons__default_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/cons/defer_lock_pass.cpp : shared_lock__cons__defer_lock_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/cons/duration_pass.cpp : shared_lock__cons__duration_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/cons/move_assign_pass.cpp : shared_lock__cons__move_assign_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/cons/move_ctor_pass.cpp : shared_lock__cons__move_ctor_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/cons/mutex_pass.cpp : shared_lock__cons__mutex_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/cons/time_point_pass.cpp : shared_lock__cons__time_point_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/cons/try_to_lock_pass.cpp : shared_lock__cons__try_to_lock_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/locking/lock_pass.cpp : shared_lock__locking__lock_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/locking/try_lock_for_pass.cpp : shared_lock__locking__try_lock_for_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/locking/try_lock_pass.cpp : shared_lock__locking__try_lock_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/locking/try_lock_until_pass.cpp : shared_lock__locking__try_lock_until_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/locking/unlock_pass.cpp : shared_lock__locking__unlock_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/mod/member_swap_pass.cpp : shared_lock__mod__member_swap_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/mod/non_member_swap_pass.cpp : shared_lock__mod__non_member_swap_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/mod/release_pass.cpp : shared_lock__mod__release_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/obs/mutex_pass.cpp : shared_lock__obs__mutex_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/obs/op_bool_pass.cpp : shared_lock__obs__op_bool_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/obs/owns_lock_pass.cpp : shared_lock__obs__owns_lock_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/types_pass.cpp : shared_lock__types_p ]
+
+ [ thread-compile-fail-V2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/copy_assign_fail.cpp : : upgrade_lock__cons__copy_assign_f ]
+ [ thread-compile-fail-V2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/copy_ctor_fail.cpp : : upgrade_lock__cons__copy_ctor_f ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/adopt_lock_pass.cpp : upgrade_lock__cons__adopt_lock_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/default_pass.cpp : upgrade_lock__cons__default_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/defer_lock_pass.cpp : upgrade_lock__cons__defer_lock_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/duration_pass.cpp : upgrade_lock__cons__duration_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/move_assign_pass.cpp : upgrade_lock__cons__move_assign_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/move_ctor_pass.cpp : upgrade_lock__cons__move_ctor_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/mutex_pass.cpp : upgrade_lock__cons__mutex_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/time_point_pass.cpp : upgrade_lock__cons__time_point_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/try_to_lock_pass.cpp : upgrade_lock__cons__try_to_lock_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/locking/lock_pass.cpp : upgrade_lock__locking__lock_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/locking/try_lock_for_pass.cpp : upgrade_lock__locking__try_lock_for_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/locking/try_lock_pass.cpp : upgrade_lock__locking__try_lock_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/locking/try_lock_until_pass.cpp : upgrade_lock__locking__try_lock_until_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/locking/unlock_pass.cpp : upgrade_lock__locking__unlock_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/mod/member_swap_pass.cpp : upgrade_lock__mod__member_swap_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/mod/non_member_swap_pass.cpp : upgrade_lock__mod__non_member_swap_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/mod/release_pass.cpp : upgrade_lock__mod__release_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/obs/mutex_pass.cpp : upgrade_lock__obs__mutex_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/obs/op_bool_pass.cpp : upgrade_lock__obs__op_bool_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/obs/owns_lock_pass.cpp : upgrade_lock__obs__owns_lock_p ]
+ [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/types_pass.cpp : upgrade_lock__types_p ]
+
+ [ thread-compile-fail-V2 ./sync/mutual_exclusion/mutex/assign_fail.cpp : : mutex__assign_f ]
+ [ thread-compile-fail-V2 ./sync/mutual_exclusion/mutex/copy_fail.cpp : : mutex__copy_f ]
+ [ thread-run2 ./sync/mutual_exclusion/mutex/default_pass.cpp : mutex__default_p ]
+ [ thread-run2 ./sync/mutual_exclusion/mutex/lock_pass.cpp : mutex__lock_p ]
+ [ thread-run2 ./sync/mutual_exclusion/mutex/native_handle_pass.cpp : mutex__native_handle_p ]
+ [ thread-run2 ./sync/mutual_exclusion/mutex/try_lock_pass.cpp : mutex__try_lock_p ]
+
+ [ thread-compile-fail-V2 ./sync/mutual_exclusion/recursive_mutex/assign_fail.cpp : : recursive_mutex__assign_f ]
+ [ thread-compile-fail-V2 ./sync/mutual_exclusion/recursive_mutex/copy_fail.cpp : : recursive_mutex__copy_f ]
+ [ thread-run2 ./sync/mutual_exclusion/recursive_mutex/default_pass.cpp : recursive_mutex__default_p ]
+ [ thread-run2 ./sync/mutual_exclusion/recursive_mutex/lock_pass.cpp : recursive_mutex__lock_p ]
+ [ thread-run2 ./sync/mutual_exclusion/recursive_mutex/native_handle_pass.cpp : recursive_mutex__native_handle_p ]
+ [ thread-run2 ./sync/mutual_exclusion/recursive_mutex/try_lock_pass.cpp : recursive_mutex__try_lock_p ]
+
+ [ thread-compile-fail-V2 ./sync/mutual_exclusion/recursive_timed_mutex/assign_fail.cpp : : recursive_timed_mutex__assign_f ]
+ [ thread-compile-fail-V2 ./sync/mutual_exclusion/recursive_timed_mutex/copy_fail.cpp : : recursive_timed_mutex__copy_f ]
+ [ thread-run2 ./sync/mutual_exclusion/recursive_timed_mutex/default_pass.cpp : recursive_timed_mutex__default_p ]
+ [ thread-run2 ./sync/mutual_exclusion/recursive_timed_mutex/lock_pass.cpp : recursive_timed_mutex__lock_p ]
+ [ thread-run2 ./sync/mutual_exclusion/recursive_timed_mutex/native_handle_pass.cpp : recursive_timed_mutex__native_handle_p ]
+ [ thread-run2 ./sync/mutual_exclusion/recursive_timed_mutex/try_lock_for_pass.cpp : recursive_timed_mutex__try_lock_for_p ]
+ [ thread-run2 ./sync/mutual_exclusion/recursive_timed_mutex/try_lock_pass.cpp : recursive_timed_mutex__try_lock_p ]
+ [ thread-run2 ./sync/mutual_exclusion/recursive_timed_mutex/try_lock_until_pass.cpp : recursive_timed_mutex__try_lock_until_p ]
+
+ [ thread-compile-fail-V2 ./sync/mutual_exclusion/timed_mutex/assign_fail.cpp : : timed_mutex__assign_f ]
+ [ thread-compile-fail-V2 ./sync/mutual_exclusion/timed_mutex/copy_fail.cpp : : timed_mutex__copy_f ]
+ [ thread-run2 ./sync/mutual_exclusion/timed_mutex/default_pass.cpp : timed_mutex__default_p ]
+ [ thread-run2 ./sync/mutual_exclusion/timed_mutex/lock_pass.cpp : timed_mutex__lock_p ]
+ [ thread-run2 ./sync/mutual_exclusion/timed_mutex/native_handle_pass.cpp : timed_mutex__native_handle_p ]
+ [ thread-run2 ./sync/mutual_exclusion/timed_mutex/try_lock_for_pass.cpp : timed_mutex__try_lock_for_p ]
+ [ thread-run2 ./sync/mutual_exclusion/timed_mutex/try_lock_pass.cpp : timed_mutex__try_lock_p ]
+ [ thread-run2 ./sync/mutual_exclusion/timed_mutex/try_lock_until_pass.cpp : timed_mutex__try_lock_until_p ]
+
+ [ thread-compile-fail-V2 ./sync/mutual_exclusion/shared_mutex/assign_fail.cpp : : shared_mutex__assign_f ]
+ [ thread-compile-fail-V2 ./sync/mutual_exclusion/shared_mutex/copy_fail.cpp : : shared_mutex__copy_f ]
+ [ thread-run2 ./sync/mutual_exclusion/shared_mutex/default_pass.cpp : shared_mutex__default_p ]
+ [ thread-run2 ./sync/mutual_exclusion/shared_mutex/lock_pass.cpp : shared_mutex__lock_p ]
+ [ thread-run2 ./sync/mutual_exclusion/shared_mutex/try_lock_for_pass.cpp : shared_mutex__try_lock_for_p ]
+ [ thread-run2 ./sync/mutual_exclusion/shared_mutex/try_lock_pass.cpp : shared_mutex__try_lock_p ]
+ [ thread-run2 ./sync/mutual_exclusion/shared_mutex/try_lock_until_pass.cpp : shared_mutex__try_lock_until_p ]
 
     ;
 
     #explicit this_thread ;
     test-suite this_thread
     :
- [ thread-run2 ./threads/this_thread/get_id/get_id_pass.cpp : this_thread__get_id__get_id_pass ]
- [ thread-run2 ./threads/this_thread/sleep_for/sleep_for_pass.cpp : this_thread__sleep_for__sleep_for_pass ]
- [ thread-run2 ./threads/this_thread/sleep_until/sleep_until_pass.cpp : this_thread__sleep_until__sleep_until_pass ]
+ [ thread-run2 ./threads/this_thread/get_id/get_id_pass.cpp : this_thread__get_id_p ]
+ [ thread-run2 ./threads/this_thread/sleep_for/sleep_for_pass.cpp : this_thread__sleep_for_p ]
+ [ thread-run2 ./threads/this_thread/sleep_until/sleep_until_pass.cpp : this_thread__sleep_until_p ]
     ;
 
     #explicit thread ;
     test-suite thread
     :
- [ thread-compile-fail-V2 ./threads/thread/assign/copy_fail.cpp : : thread__assign__copy_fail ]
- [ thread-run2 ./threads/thread/assign/move_pass.cpp : thread__assign__move_pass ]
- [ thread-compile-fail-V2 ./threads/thread/constr/copy_fail.cpp : : thread__constr__copy_fail ]
- [ thread-run2 ./threads/thread/constr/default_pass.cpp : thread__constr__default_pass ]
- [ thread-run2 ./threads/thread/constr/F_pass.cpp : thread__constr__F_pass ]
- [ thread-run2 ./threads/thread/constr/Frvalue_pass.cpp : thread__constr__Frvalue_pass ]
- #[ thread-run2 ./threads/thread/constr/FrvalueArgs_pass.cpp : thread__constr__FrvalueArgs_pass ]
- [ thread-run2 ./threads/thread/constr/move_pass.cpp : thread__constr__move_pass ]
- [ thread-run2 ./threads/thread/destr/dtor_pass.cpp : thread__destr__dtor_pass ]
- [ thread-run2 ./threads/thread/id/hash_pass.cpp : thread__id__hash_pass ]
- [ thread-run2 ./threads/thread/members/detach_pass.cpp : thread__members__detach_pass ]
- [ thread-run2 ./threads/thread/members/get_id_pass.cpp : thread__members__get_id_pass ]
- [ thread-run2 ./threads/thread/members/join_pass.cpp : thread__members__join_pass ]
- [ thread-run2 ./threads/thread/members/joinable_pass.cpp : thread__members__joinable_pass ]
- [ thread-run2 ./threads/thread/members/native_handle_pass.cpp : thread__members__native_handle_pass ]
- [ thread-run2 ./threads/thread/members/swap_pass.cpp : thread__members__swap_pass ]
- [ thread-run2 ./threads/thread/non_members/swap_pass.cpp : thread__non_members__swap_pass ]
- [ thread-run2 ./threads/thread/static/hardware_concurrency_pass.cpp : thread__static__hardware_concurrency_pass ]
- ;
-
- #explicit ttt ;
- #test-suite ttt
- #:
- #;
+ [ thread-compile-fail-V2 ./threads/thread/assign/copy_fail.cpp : : thread__assign__copy_f ]
+ [ thread-run2 ./threads/thread/assign/move_pass.cpp : thread__assign__move_p ]
+ [ thread-compile-fail-V2 ./threads/thread/constr/copy_fail.cpp : : thread__constr__copy_f ]
+ [ thread-run2 ./threads/thread/constr/default_pass.cpp : thread__constr__default_p ]
+ [ thread-run2 ./threads/thread/constr/F_pass.cpp : thread__constr__F_p ]
+ [ thread-run2 ./threads/thread/constr/Frvalue_pass.cpp : thread__constr__Frvalue_p ]
+ #[ thread-run2 ./threads/thread/constr/FrvalueArgs_pass.cpp : thread__constr__FrvalueArgs_p ]
+ [ thread-run2 ./threads/thread/constr/move_pass.cpp : thread__constr__move_p ]
+ [ thread-run2 ./threads/thread/destr/dtor_pass.cpp : thread__destr__dtor_p ]
+ [ thread-run2 ./threads/thread/id/hash_pass.cpp : thread__id__hash_p ]
+ [ thread-run2 ./threads/thread/members/detach_pass.cpp : thread__members__detach_p ]
+ [ thread-run2 ./threads/thread/members/get_id_pass.cpp : thread__members__get_id_p ]
+ [ thread-run2 ./threads/thread/members/join_pass.cpp : thread__members__join_p ]
+ [ thread-run2 ./threads/thread/members/joinable_pass.cpp : thread__members__joinable_p ]
+ [ thread-run2 ./threads/thread/members/native_handle_pass.cpp : thread__members__native_handle_p ]
+ [ thread-run2 ./threads/thread/members/swap_pass.cpp : thread__members__swap_p ]
+ [ thread-run2 ./threads/thread/non_members/swap_pass.cpp : thread__non_members__swap_p ]
+ [ thread-run2 ./threads/thread/static/hardware_concurrency_pass.cpp : thread__static__hardware_concurrency_p ]
+ ;
 
+ #explicit examples ;
+ test-suite examples
+ :
+ [ thread-run ../example/monitor.cpp ]
+ #[ thread-run ../example/starvephil.cpp ]
+ #[ thread-run ../example/tennis.cpp ]
+ #[ thread-run ../example/condition.cpp ]
+ [ thread-run ../example/mutex.cpp ]
+ [ thread-run ../example/once.cpp ]
+ [ thread-run ../example/recursive_mutex.cpp ]
+ [ thread-run2 ../example/thread.cpp : ex_thread ]
+ [ thread-run ../example/thread_group.cpp ]
+ [ thread-run ../example/tss.cpp ]
+ [ thread-run ../example/xtime.cpp ]
+ [ thread-run ../example/shared_monitor.cpp ]
+ [ thread-run ../example/shared_mutex.cpp ]
+ #[ thread-run ../example/v2_shared_monitor.cpp ]
+ #[ thread-run ../example/v2_shared_mutex.cpp ]
+ ;
+
+ explicit ttt ;
+ test-suite ttt
+ :
+ #[ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/move_ctor_upgrade_lock_pass.cpp : unique_lock__cons__move_ctor_upgrade_lock_p ]
+ ;
 }

Modified: branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/shared_lock/cons/duration_pass.cpp
==============================================================================
--- branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/shared_lock/cons/duration_pass.cpp (original)
+++ branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/shared_lock/cons/duration_pass.cpp 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -40,7 +40,8 @@
   BOOST_TEST(lk.owns_lock() == true);
   time_point t1 = Clock::now();
   ns d = t1 - t0 - ms(250);
- BOOST_TEST(d < ns(5000000)); // within 5ms
+ // This test is spurious as it depends on the time the thread system switches the threads
+ BOOST_TEST(d < ns(5000000)+ms(1000)); // within 5ms
 }
 
 void f2()

Modified: branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/shared_lock/cons/move_assign_pass.cpp
==============================================================================
--- branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/shared_lock/cons/move_assign_pass.cpp (original)
+++ branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/shared_lock/cons/move_assign_pass.cpp 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -47,7 +47,7 @@
   {
     boost::unique_lock<boost::shared_mutex> lk0(m0);
     boost::shared_lock<boost::shared_mutex> lk1(m1);
- lk1 = boost::move(lk0);
+ lk1 = boost::shared_lock<boost::shared_mutex>(boost::move(lk0));
     BOOST_TEST(lk1.mutex() == &m0);
     BOOST_TEST(lk1.owns_lock() == true);
     BOOST_TEST(lk0.mutex() == 0);
@@ -56,14 +56,14 @@
   {
 
     boost::shared_lock<boost::shared_mutex> lk1;
- lk1 = boost::unique_lock<boost::shared_mutex>(m0);
+ lk1 = boost::shared_lock<boost::shared_mutex>(boost::unique_lock<boost::shared_mutex>(m0));
     BOOST_TEST(lk1.mutex() == &m0);
     BOOST_TEST(lk1.owns_lock() == true);
   }
   {
     boost::upgrade_lock<boost::shared_mutex> lk0(m0);
     boost::shared_lock<boost::shared_mutex> lk1(m1);
- lk1 = boost::move(lk0);
+ lk1 = boost::shared_lock<boost::shared_mutex>(boost::move(lk0));
     BOOST_TEST(lk1.mutex() == &m0);
     BOOST_TEST(lk1.owns_lock() == true);
     BOOST_TEST(lk0.mutex() == 0);
@@ -72,7 +72,7 @@
   {
 
     boost::shared_lock<boost::shared_mutex> lk1;
- lk1 = boost::upgrade_lock<boost::shared_mutex>(m0);
+ lk1 = boost::shared_lock<boost::shared_mutex>(boost::upgrade_lock<boost::shared_mutex>(m0));
     BOOST_TEST(lk1.mutex() == &m0);
     BOOST_TEST(lk1.owns_lock() == true);
   }

Modified: branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/unique_lock/types_pass.cpp
==============================================================================
--- branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/unique_lock/types_pass.cpp (original)
+++ branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/unique_lock/types_pass.cpp 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -16,26 +16,23 @@
 
 // <mutex>
 
-// struct defer_lock_t {};
-// struct try_to_lock_t {};
-// struct adopt_lock_t {};
-//
-// constexpr defer_lock_t defer_lock{};
-// constexpr try_to_lock_t try_to_lock{};
-// constexpr adopt_lock_t adopt_lock{};
+// template <class Mutex>
+// class unique_lock
+// {
+// public:
+// typedef Mutex mutex_type;
+// ...
+// };
+
 
 #include <boost/thread/mutex.hpp>
+#include <boost/static_assert.hpp>
 #include <boost/detail/lightweight_test.hpp>
 
 int main()
 {
- typedef boost::defer_lock_t T1;
- typedef boost::try_to_lock_t T2;
- typedef boost::adopt_lock_t T3;
-
- T1 t1 = boost::defer_lock;
- T2 t2 = boost::try_to_lock;
- T3 t3 = boost::adopt_lock;
+ BOOST_STATIC_ASSERT_MSG((boost::is_same<boost::unique_lock<boost::mutex>::mutex_type,
+ boost::mutex>::value), "");
 
   return boost::report_errors();
 }

Modified: branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/upgrade_lock/cons/duration_pass.cpp
==============================================================================
--- branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/upgrade_lock/cons/duration_pass.cpp (original)
+++ branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/upgrade_lock/cons/duration_pass.cpp 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -40,7 +40,8 @@
   BOOST_TEST(lk.owns_lock() == true);
   time_point t1 = Clock::now();
   ns d = t1 - t0 - ms(250);
- BOOST_TEST(d < ns(5000000)); // within 5ms
+ // This test is spurious as it depends on the time the thread system switches the threads
+ BOOST_TEST(d < ns(5000000)+ms(1000)); // within 5ms
 }
 
 void f2()

Modified: branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/upgrade_lock/cons/move_assign_pass.cpp
==============================================================================
--- branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/upgrade_lock/cons/move_assign_pass.cpp (original)
+++ branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/upgrade_lock/cons/move_assign_pass.cpp 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -47,7 +47,7 @@
   {
     boost::unique_lock<boost::shared_mutex> lk0(m0);
     boost::upgrade_lock<boost::shared_mutex> lk1(m1);
- lk1 = boost::move(lk0);
+ lk1 = boost::upgrade_lock<boost::shared_mutex>(boost::move(lk0));
     BOOST_TEST(lk1.mutex() == &m0);
     BOOST_TEST(lk1.owns_lock() == true);
     BOOST_TEST(lk0.mutex() == 0);
@@ -56,7 +56,7 @@
   {
 
     boost::upgrade_lock<boost::shared_mutex> lk1;
- lk1 = boost::unique_lock<boost::shared_mutex>(m0);
+ lk1 = boost::upgrade_lock<boost::shared_mutex>(boost::unique_lock<boost::shared_mutex>(m0));
     BOOST_TEST(lk1.mutex() == &m0);
     BOOST_TEST(lk1.owns_lock() == true);
   }

Modified: branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/upgrade_lock/cons/time_point_pass.cpp
==============================================================================
--- branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/upgrade_lock/cons/time_point_pass.cpp (original)
+++ branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/upgrade_lock/cons/time_point_pass.cpp 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -14,10 +14,10 @@
 
 // <boost/thread/locks.hpp>
 
-// template <class Mutex> class shared_lock;
+// template <class Mutex> class upgrade_lock;
 
 // template <class Clock, class Duration>
-// shared_lock(mutex_type& m, const chrono::time_point<Clock, Duration>& abs_time);
+// upgrade_lock(mutex_type& m, const chrono::time_point<Clock, Duration>& abs_time);
 
 #include <boost/thread/locks.hpp>
 #include <boost/thread/shared_mutex.hpp>
@@ -35,7 +35,7 @@
 void f1()
 {
   time_point t0 = Clock::now();
- boost::shared_lock<boost::shared_mutex> lk(m, Clock::now() + ms(300));
+ boost::upgrade_lock<boost::shared_mutex> lk(m, Clock::now() + ms(300));
   BOOST_TEST(lk.owns_lock() == true);
   time_point t1 = Clock::now();
   ns d = t1 - t0 - ms(250);
@@ -45,7 +45,7 @@
 void f2()
 {
   time_point t0 = Clock::now();
- boost::shared_lock<boost::shared_mutex> lk(m, Clock::now() + ms(250));
+ boost::upgrade_lock<boost::shared_mutex> lk(m, Clock::now() + ms(250));
   BOOST_TEST(lk.owns_lock() == false);
   time_point t1 = Clock::now();
   ns d = t1 - t0 - ms(250);

Modified: branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/upgrade_lock/cons/try_to_lock_pass.cpp
==============================================================================
--- branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/upgrade_lock/cons/try_to_lock_pass.cpp (original)
+++ branches/quickbook-dev/libs/thread/test/sync/mutual_exclusion/locks/upgrade_lock/cons/try_to_lock_pass.cpp 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -14,9 +14,9 @@
 
 // <boost/thread/locks.hpp>
 
-// template <class Mutex> class shared_lock;
+// template <class Mutex> class upgrade_lock;
 
-// shared_lock(mutex_type& m, try_to_lock_t);
+// upgrade_lock(mutex_type& m, try_to_lock_t);
 
 
 #include <boost/thread/locks.hpp>
@@ -36,20 +36,20 @@
 {
   time_point t0 = Clock::now();
   {
- boost::shared_lock<boost::shared_mutex> lk(m, boost::try_to_lock);
+ boost::upgrade_lock<boost::shared_mutex> lk(m, boost::try_to_lock);
     BOOST_TEST(lk.owns_lock() == false);
   }
   {
- boost::shared_lock<boost::shared_mutex> lk(m, boost::try_to_lock);
+ boost::upgrade_lock<boost::shared_mutex> lk(m, boost::try_to_lock);
     BOOST_TEST(lk.owns_lock() == false);
   }
   {
- boost::shared_lock<boost::shared_mutex> lk(m, boost::try_to_lock);
+ boost::upgrade_lock<boost::shared_mutex> lk(m, boost::try_to_lock);
     BOOST_TEST(lk.owns_lock() == false);
   }
   while (true)
   {
- boost::shared_lock<boost::shared_mutex> lk(m, boost::try_to_lock);
+ boost::upgrade_lock<boost::shared_mutex> lk(m, boost::try_to_lock);
     if (lk.owns_lock()) break;
   }
   time_point t1 = Clock::now();

Modified: branches/quickbook-dev/libs/thread/test/test_thread_launching.cpp
==============================================================================
--- branches/quickbook-dev/libs/thread/test/test_thread_launching.cpp (original)
+++ branches/quickbook-dev/libs/thread/test/test_thread_launching.cpp 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -145,8 +145,10 @@
     }
 
     callable_multiple_arg func;
-
- boost::thread callable3(func,"hello",x,1.2);
+ // Avoid
+ // boost/bind/bind.hpp(392) : warning C4244: 'argument' : conversion from 'double' to 'int', possible loss of data
+
+ boost::thread callable3(func,"hello",x,1);
     callable3.join();
     BOOST_CHECK(callable_multiple_arg::called_three);
     BOOST_CHECK_EQUAL(callable_multiple_arg::called_three_arg1,"hello");

Modified: branches/quickbook-dev/libs/timer/src/cpu_timer.cpp
==============================================================================
--- branches/quickbook-dev/libs/timer/src/cpu_timer.cpp (original)
+++ branches/quickbook-dev/libs/timer/src/cpu_timer.cpp 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -136,7 +136,7 @@
 # else
     tms tm;
     clock_t c = ::times(&tm);
- if (c == -1) // error
+ if (c == static_cast<clock_t>(-1)) // error
     {
       current.system = current.user = boost::timer::nanosecond_type(-1);
     }

Modified: branches/quickbook-dev/more/getting_started/detail/release-variables.rst
==============================================================================
--- branches/quickbook-dev/more/getting_started/detail/release-variables.rst (original)
+++ branches/quickbook-dev/more/getting_started/detail/release-variables.rst 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -5,8 +5,8 @@
 .. This file contains all the definitions that need to be updated
 .. for each new release of Boost.
 
-.. |boost-version-number| replace:: 1.49.0
-.. |boost_ver| replace:: ``boost_1_49_0``
-.. |boost_ver-bold| replace:: **boost_1_49_0**
+.. |boost-version-number| replace:: 1.50.0
+.. |boost_ver| replace:: ``boost_1_50_0``
+.. |boost_ver-bold| replace:: **boost_1_50_0**
 
-.. _sf-download: http://www.boost.org/users/history/version_1_49_0.html
+.. _sf-download: http://www.boost.org/users/history/version_1_50_0.html

Modified: branches/quickbook-dev/more/getting_started/unix-variants.html
==============================================================================
--- branches/quickbook-dev/more/getting_started/unix-variants.html (original)
+++ branches/quickbook-dev/more/getting_started/unix-variants.html 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -61,14 +61,14 @@
 <div class="section" id="get-boost">
 <h1><a class="toc-backref" href="#id19">1&nbsp;&nbsp;&nbsp;Get Boost</a></h1>
 <p>The most reliable way to get a copy of Boost is to download a
-distribution from <a class="reference external" href="http://www.boost.org/users/history/version_1_49_0.html">SourceForge</a>:</p>
+distribution from <a class="reference external" href="http://www.boost.org/users/history/version_1_50_0.html">SourceForge</a>:</p>
 <ol class="arabic">
-<li><p class="first">Download <a class="reference external" href="http://www.boost.org/users/history/version_1_49_0.html"><tt class="docutils literal">boost_1_49_0</tt><tt class="docutils literal">.tar.bz2</tt></a>.</p>
+<li><p class="first">Download <a class="reference external" href="http://www.boost.org/users/history/version_1_50_0.html"><tt class="docutils literal">boost_1_50_0</tt><tt class="docutils literal">.tar.bz2</tt></a>.</p>
 </li>
 <li><p class="first">In the directory where you want to put the Boost installation,
 execute</p>
 <pre class="literal-block">
-tar --bzip2 -xf <em>/path/to/</em><tt class="docutils literal">boost_1_49_0</tt>.tar.bz2
+tar --bzip2 -xf <em>/path/to/</em><tt class="docutils literal">boost_1_50_0</tt>.tar.bz2
 </pre>
 </li>
 </ol>
@@ -81,7 +81,7 @@
 reorganize the directory structure of the Boost distribution,
 and/or rename the library binaries.<a class="footnote-reference" href="#packagers" id="id2"><sup>1</sup></a> If you have
 any trouble, we suggest using an official Boost distribution
-from <a class="reference external" href="http://www.boost.org/users/history/version_1_49_0.html">SourceForge</a>.</p>
+from <a class="reference external" href="http://www.boost.org/users/history/version_1_50_0.html">SourceForge</a>.</p>
 </div>
 <!-- Copyright David Abrahams 2006. Distributed under the Boost -->
 <!-- Software License, Version 1.0. (See accompanying -->
@@ -91,7 +91,7 @@
 <h1><a class="toc-backref" href="#id20">2&nbsp;&nbsp;&nbsp;The Boost Distribution</a></h1>
 <p>This is a sketch of the resulting directory structure:</p>
 <pre class="literal-block">
-<strong>boost_1_49_0</strong><strong>/</strong> .................<em>The “boost root directory”</em>
+<strong>boost_1_50_0</strong><strong>/</strong> .................<em>The “boost root directory”</em>
    <strong>index.htm</strong> .........<em>A copy of www.boost.org starts here</em>
    <strong>boost</strong><strong>/</strong> .........................<em>All Boost Header files</em>
    <tt class="docutils literal"> </tt>
@@ -136,7 +136,7 @@
 </div>
 <p>It's important to note the following:</p>
 <ol class="arabic" id="boost-root-directory">
-<li><p class="first">The path to the <strong>boost root directory</strong> (often <tt class="docutils literal">/usr/local/</tt><tt class="docutils literal">boost_1_49_0</tt>) is
+<li><p class="first">The path to the <strong>boost root directory</strong> (often <tt class="docutils literal">/usr/local/</tt><tt class="docutils literal">boost_1_50_0</tt>) is
 sometimes referred to as <tt class="docutils literal">$BOOST_ROOT</tt> in documentation and
 mailing lists .</p>
 </li>
@@ -237,7 +237,7 @@
 <p>Now, in the directory where you saved <tt class="docutils literal">example.cpp</tt>, issue the
 following command:</p>
 <pre class="literal-block">
-c++ -I <em>path/to/</em><tt class="docutils literal">boost_1_49_0</tt> example.cpp -o example
+c++ -I <em>path/to/</em><tt class="docutils literal">boost_1_50_0</tt> example.cpp -o example
 </pre>
 <p>To test the result, type:</p>
 <pre class="literal-block">
@@ -268,7 +268,7 @@
 <p>Issue the following commands in the shell (don't type <tt class="docutils literal">$</tt>; that
 represents the shell's prompt):</p>
 <pre class="literal-block">
-<strong>$</strong> cd <em>path/to/</em><tt class="docutils literal">boost_1_49_0</tt>
+<strong>$</strong> cd <em>path/to/</em><tt class="docutils literal">boost_1_50_0</tt>
 <strong>$</strong> ./bootstrap.sh --help
 </pre>
 <p>Select your configuration options and invoke <tt class="docutils literal">./bootstrap.sh</tt> again
@@ -420,7 +420,7 @@
 please see the <a class="reference external" href="http://www.boost.org/boost-build2/doc/html/bbv2/advanced/invocation.html">Boost.Build documentation</a>.</p>
 <p>For example, your session might look like this:</p>
 <pre class="literal-block">
-$ cd ~/<tt class="docutils literal">boost_1_49_0</tt>
+$ cd ~/<tt class="docutils literal">boost_1_50_0</tt>
 $ b2 <strong>--build-dir=</strong>/tmp/build-boost <strong>toolset=</strong>gcc stage
 </pre>
 <p>That will build static and shared non-debug multi-threaded variants of the libraries. To build all variants, pass the additional option, “<tt class="docutils literal"><span class="pre">--build-type=complete</span></tt>”.</p>
@@ -536,14 +536,14 @@
 <ol class="upperalpha">
 <li><p class="first">You can specify the full path to each library:</p>
 <pre class="literal-block">
-$ c++ -I <em>path/to/</em><tt class="docutils literal">boost_1_49_0</tt> example.cpp -o example <strong>\</strong>
+$ c++ -I <em>path/to/</em><tt class="docutils literal">boost_1_50_0</tt> example.cpp -o example <strong>\</strong>
    <strong>~/boost/stage/lib/libboost_regex-gcc34-mt-d-1_36.a</strong>
 </pre>
 </li>
 <li><p class="first">You can separately specify a directory to search (with <tt class="docutils literal"><span class="pre">-L</span></tt><em>directory</em>) and a library name to search for (with <tt class="docutils literal"><span class="pre">-l</span></tt><em>library</em>,<a class="footnote-reference" href="#lowercase-l" id="id14"><sup>2</sup></a> dropping the filename's leading <tt class="docutils literal">lib</tt> and trailing
 suffix (<tt class="docutils literal">.a</tt> in this case):</p>
 <pre class="literal-block">
-$ c++ -I <em>path/to/</em><tt class="docutils literal">boost_1_49_0</tt> example.cpp -o example <strong>\</strong>
+$ c++ -I <em>path/to/</em><tt class="docutils literal">boost_1_50_0</tt> example.cpp -o example <strong>\</strong>
    <strong>-L~/boost/stage/lib/ -lboost_regex-gcc34-mt-d-1_36</strong>
 </pre>
 <p>As you can see, this method is just as terse as method A for one

Modified: branches/quickbook-dev/more/getting_started/windows.html
==============================================================================
--- branches/quickbook-dev/more/getting_started/windows.html (original)
+++ branches/quickbook-dev/more/getting_started/windows.html 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -64,7 +64,7 @@
 <p>The easiest way to get a copy of Boost is to use an installer. The
 <a class="reference external" href="http://www.boost.org/more/getting_started/index.html">Boost website version of this Getting Started guide</a> will have
 updated information on installers as they become available, or see
-<a class="reference external" href="http://www.boost.org/users/history/version_1_49_0.html">Boost downloads</a> or the <a class="reference external" href="http://www.boostpro.com/products/free">installer</a> provided by <a class="reference external" href="http://www.boostpro.com">BoostPro
+<a class="reference external" href="http://www.boost.org/users/history/version_1_50_0.html">Boost downloads</a> or the <a class="reference external" href="http://www.boostpro.com/products/free">installer</a> provided by <a class="reference external" href="http://www.boostpro.com">BoostPro
 Computing</a>. We especially recommend using an installer if you use
 Microsoft Visual Studio, because the installer can download and
 install precompiled library binaries, saving you the trouble of
@@ -73,7 +73,7 @@
 binaries when given the option.</p>
 <p>If you're using an earlier version of Visual Studio or some other
 compiler, or if you prefer to build everything yourself, you can
-download <a class="reference external" href="http://www.boost.org/users/history/version_1_49_0.html"><tt class="docutils literal">boost_1_49_0</tt><tt class="docutils literal">.7z</tt></a> or <a class="reference external" href="http://www.boost.org/users/history/version_1_49_0.html"><tt class="docutils literal">boost_1_49_0</tt><tt class="docutils literal">.zip</tt></a> and unpack it to install a complete Boost
+download <a class="reference external" href="http://www.boost.org/users/history/version_1_50_0.html"><tt class="docutils literal">boost_1_50_0</tt><tt class="docutils literal">.7z</tt></a> or <a class="reference external" href="http://www.boost.org/users/history/version_1_50_0.html"><tt class="docutils literal">boost_1_50_0</tt><tt class="docutils literal">.zip</tt></a> and unpack it to install a complete Boost
 distribution.<a class="footnote-reference" href="#zip" id="id2"><sup>1</sup></a></p>
 <!-- Copyright David Abrahams 2006. Distributed under the Boost -->
 <!-- Software License, Version 1.0. (See accompanying -->
@@ -83,7 +83,7 @@
 <h1><a class="toc-backref" href="#id29">2&nbsp;&nbsp;&nbsp;The Boost Distribution</a></h1>
 <p>This is a sketch of the resulting directory structure:</p>
 <pre class="literal-block">
-<strong>boost_1_49_0</strong><strong>\</strong> .................<em>The “boost root directory”</em>
+<strong>boost_1_50_0</strong><strong>\</strong> .................<em>The “boost root directory”</em>
    <strong>index.htm</strong> .........<em>A copy of www.boost.org starts here</em>
    <strong>boost</strong><strong>\</strong> .........................<em>All Boost Header files</em>
    <strong>lib</strong><strong>\</strong> .....................<em>precompiled library binaries</em>
@@ -128,7 +128,7 @@
 </div>
 <p>It's important to note the following:</p>
 <ol class="arabic" id="boost-root-directory">
-<li><p class="first">The path to the <strong>boost root directory</strong> (often <tt class="docutils literal"><span class="pre">C:\Program</span> Files\boost\</tt><tt class="docutils literal">boost_1_49_0</tt>) is
+<li><p class="first">The path to the <strong>boost root directory</strong> (often <tt class="docutils literal"><span class="pre">C:\Program</span> Files\boost\</tt><tt class="docutils literal">boost_1_50_0</tt>) is
 sometimes referred to as <tt class="docutils literal">$BOOST_ROOT</tt> in documentation and
 mailing lists .</p>
 </li>
@@ -259,7 +259,7 @@
 </pre>
 <p>followed by Return. For example,</p>
 <pre class="literal-block">
-cd <tt class="docutils literal"><span class="pre">C:\Program</span> Files\boost\</tt><tt class="docutils literal">boost_1_49_0</tt>
+cd <tt class="docutils literal"><span class="pre">C:\Program</span> Files\boost\</tt><tt class="docutils literal">boost_1_50_0</tt>
 </pre>
 <p class="last">Long commands can be continued across several lines by typing a
 caret (<tt class="docutils literal">^</tt>) at the end of all but the last line. Some examples
@@ -284,7 +284,7 @@
 <li><p class="first">In <em>Configuration Properties</em> &gt; <em>C/C++</em> &gt; <em>General</em> &gt; <em>Additional Include
 Directories</em>, enter the path to the Boost root directory, for example</p>
 <blockquote>
-<p><tt class="docutils literal"><span class="pre">C:\Program</span> Files\boost\</tt><tt class="docutils literal">boost_1_49_0</tt></p>
+<p><tt class="docutils literal"><span class="pre">C:\Program</span> Files\boost\</tt><tt class="docutils literal">boost_1_50_0</tt></p>
 </blockquote>
 </li>
 <li><p class="first">In <em>Configuration Properties</em> &gt; <em>C/C++</em> &gt; <em>Precompiled Headers</em>, change
@@ -322,7 +322,7 @@
 directory</a> to a suitable location for creating some temporary
 files and type the following command followed by the Return key:</p>
 <pre class="literal-block">
-cl /EHsc /I <em>path\to\</em><tt class="docutils literal">boost_1_49_0</tt> <em>path</em>\<em>to</em>\example.cpp
+cl /EHsc /I <em>path\to\</em><tt class="docutils literal">boost_1_50_0</tt> <em>path</em>\<em>to</em>\example.cpp
 </pre>
 <p>To test the result, type:</p>
 <pre class="literal-block">
@@ -353,7 +353,7 @@
 <h2><a class="toc-backref" href="#id36">5.1&nbsp;&nbsp;&nbsp;Install Visual Studio Binaries</a></h2>
 <p>The installers supplied by BoostPro Computing will download and
 install pre-compiled binaries into the <tt class="docutils literal">lib\</tt> subdirectory of the
-boost root, typically <tt class="docutils literal"><span class="pre">C:\Program</span> Files\boost\</tt><tt class="docutils literal">boost_1_49_0</tt><tt class="docutils literal">\lib\</tt>. If you installed
+boost root, typically <tt class="docutils literal"><span class="pre">C:\Program</span> Files\boost\</tt><tt class="docutils literal">boost_1_50_0</tt><tt class="docutils literal">\lib\</tt>. If you installed
 all variants of the <a class="reference external" href="../../libs/regex/index.html">Boost.Regex</a> binary, you're done with this
 step. Otherwise, please run the installer again and install them
 now.</p>
@@ -504,8 +504,8 @@
 please see the <a class="reference external" href="http://www.boost.org/boost-build2/doc/html/bbv2/advanced/invocation.html">Boost.Build documentation</a>.</p>
 <p>For example, your session might look like this:<a class="footnote-reference" href="#continuation" id="id15"><sup>4</sup></a></p>
 <pre class="literal-block">
-C:\WINDOWS&gt; cd <tt class="docutils literal"><span class="pre">C:\Program</span> Files\boost\</tt><tt class="docutils literal">boost_1_49_0</tt>
-<tt class="docutils literal"><span class="pre">C:\Program</span> Files\boost\</tt><tt class="docutils literal">boost_1_49_0</tt>&gt; b2 <strong>^</strong>
+C:\WINDOWS&gt; cd <tt class="docutils literal"><span class="pre">C:\Program</span> Files\boost\</tt><tt class="docutils literal">boost_1_50_0</tt>
+<tt class="docutils literal"><span class="pre">C:\Program</span> Files\boost\</tt><tt class="docutils literal">boost_1_50_0</tt>&gt; b2 <strong>^</strong>
 More? <strong>--build-dir=</strong>&quot;C:\Documents and Settings\dave\build-boost&quot; <strong>^</strong>
 More? <strong>--build-type=complete</strong> <strong>msvc</strong> stage
 </pre>
@@ -644,7 +644,7 @@
 select <em>Properties</em> from the resulting pop-up menu</li>
 <li>In <em>Configuration Properties</em> &gt; <em>Linker</em> &gt; <em>Additional Library
 Directories</em>, enter the path to the Boost binaries,
-e.g. <tt class="docutils literal"><span class="pre">C:\Program</span> Files\boost\</tt><tt class="docutils literal">boost_1_49_0</tt><tt class="docutils literal">\lib\</tt>.</li>
+e.g. <tt class="docutils literal"><span class="pre">C:\Program</span> Files\boost\</tt><tt class="docutils literal">boost_1_50_0</tt><tt class="docutils literal">\lib\</tt>.</li>
 <li>From the <em>Build</em> menu, select <em>Build Solution</em>.</li>
 </ol>
 <p><a class="reference internal" href="#test-your-program"><em>skip to the next step</em></a></p>
@@ -654,10 +654,10 @@
 <p>For example, we can compile and link the above program from the
 Visual C++ command-line by simply adding the <strong>bold</strong> text below to
 the command line we used earlier, assuming your Boost binaries are
-in <tt class="docutils literal"><span class="pre">C:\Program</span> Files\boost\</tt><tt class="docutils literal">boost_1_49_0</tt><tt class="docutils literal">\lib</tt>:</p>
+in <tt class="docutils literal"><span class="pre">C:\Program</span> Files\boost\</tt><tt class="docutils literal">boost_1_50_0</tt><tt class="docutils literal">\lib</tt>:</p>
 <pre class="literal-block">
-cl /EHsc /I <em>path\to\</em><tt class="docutils literal">boost_1_49_0</tt> example.cpp <strong>^</strong>
- <strong>/link /LIBPATH:</strong><strong>C:\Program Files\boost\</strong><strong>boost_1_49_0</strong><strong>\lib</strong>
+cl /EHsc /I <em>path\to\</em><tt class="docutils literal">boost_1_50_0</tt> example.cpp <strong>^</strong>
+ <strong>/link /LIBPATH:</strong><strong>C:\Program Files\boost\</strong><strong>boost_1_50_0</strong><strong>\lib</strong>
 </pre>
 </div>
 <div class="section" id="library-naming">
@@ -813,7 +813,7 @@
 <colgroup><col class="label" /><col /></colgroup>
 <tbody valign="top">
 <tr><td class="label"><a class="fn-backref" href="#id2">[1]</a></td><td>We recommend
-downloading <a class="reference external" href="http://www.boost.org/users/history/version_1_49_0.html"><tt class="docutils literal">boost_1_49_0</tt><tt class="docutils literal">.7z</tt></a> and using <a class="reference external" href="http://www.7-zip.org">7-Zip</a> to decompress
+downloading <a class="reference external" href="http://www.boost.org/users/history/version_1_50_0.html"><tt class="docutils literal">boost_1_50_0</tt><tt class="docutils literal">.7z</tt></a> and using <a class="reference external" href="http://www.7-zip.org">7-Zip</a> to decompress
 it. We no longer recommend .zip files for Boost because they are twice
 as large as the equivalent .7z files. We don't recommend using Windows'
 built-in decompression as it can be painfully slow for large archives.</td></tr>

Modified: branches/quickbook-dev/status/explicit-failures-markup.xml
==============================================================================
--- branches/quickbook-dev/status/explicit-failures-markup.xml (original)
+++ branches/quickbook-dev/status/explicit-failures-markup.xml 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -487,13 +487,15 @@
                 The compiler does not support features that are essential for the library.
             </note>
         </mark-unusable>
- <test name="*_header" category="Header Only">
+ <test name="*_h" category="Header Only">
         </test>
- <test name="*_static" category="Static Link">
+ <test name="*_l" category="Non Header Only">
         </test>
- <test name="*_shared" category="Shared Link">
+ <test name="*_s" category="Static Link">
         </test>
- <test name="*_fail" category="Compile Diagnostic Required">
+ <test name="*_d" category="Dynamic Link">
+ </test>
+ <test name="*_f" category="Compile Diagnostic Required">
         </test>
       
     </library>

Modified: branches/quickbook-dev/tools/quickbook/extra/cxx_committee/html/proposal.css
==============================================================================
--- branches/quickbook-dev/tools/quickbook/extra/cxx_committee/html/proposal.css (original)
+++ branches/quickbook-dev/tools/quickbook/extra/cxx_committee/html/proposal.css 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -243,7 +243,7 @@
     div.table table tr th
     {
         padding: 0.5em 0.5em 0.5em 0.5em;
- border: 1pt solid white;
+ border: 1pt solid black;
         font-size: 80%;
     }
 

Modified: branches/quickbook-dev/tools/quickbook/extra/cxx_committee/library_proposal.qbk
==============================================================================
--- branches/quickbook-dev/tools/quickbook/extra/cxx_committee/library_proposal.qbk (original)
+++ branches/quickbook-dev/tools/quickbook/extra/cxx_committee/library_proposal.qbk 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -10,9 +10,8 @@
 
 [/ TODO: The generated docs should contain boostinspect:nolicense ]
 
-[article Sample Proposal for the C++ Standard Library Technical Report 2
+[article
     [quickbook 1.5]
- [purpose Sample library proposal for the C++ committee]
 ]
 
 [def (tm) '''&#8482;''']
@@ -39,6 +38,19 @@
 
 [section Why is this important?]
 TBS
+'''
+<table><tr><td>Bingo!</td></tr></table>
+<table border="1" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
+ <tr>
+ <td>Fee</td>
+ <td>Fi</td>
+ </tr>
+ <tr>
+ <td>Foo</td>
+ <td>Fum</td>
+ </tr>
+</table>
+'''
 [endsect]
 
 [section What kinds of problems does it address, and what kinds of

Modified: branches/quickbook-dev/tools/quickbook/src/actions.cpp
==============================================================================
--- branches/quickbook-dev/tools/quickbook/src/actions.cpp (original)
+++ branches/quickbook-dev/tools/quickbook/src/actions.cpp 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -13,8 +13,8 @@
 #include <vector>
 #include <map>
 #include <set>
-#include <boost/filesystem/v3/convenience.hpp>
-#include <boost/filesystem/v3/fstream.hpp>
+#include <boost/filesystem/convenience.hpp>
+#include <boost/filesystem/fstream.hpp>
 #include <boost/range/distance.hpp>
 #include <boost/range/algorithm/replace.hpp>
 #include <boost/lexical_cast.hpp>

Modified: branches/quickbook-dev/tools/quickbook/src/doc_info_actions.cpp
==============================================================================
--- branches/quickbook-dev/tools/quickbook/src/doc_info_actions.cpp (original)
+++ branches/quickbook-dev/tools/quickbook/src/doc_info_actions.cpp 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -12,7 +12,7 @@
 #include <boost/bind.hpp>
 #include <boost/algorithm/string/join.hpp>
 #include <boost/foreach.hpp>
-#include <boost/filesystem/v3/operations.hpp>
+#include <boost/filesystem/operations.hpp>
 #include "quickbook.hpp"
 #include "utils.hpp"
 #include "files.hpp"

Modified: branches/quickbook-dev/tools/quickbook/src/files.cpp
==============================================================================
--- branches/quickbook-dev/tools/quickbook/src/files.cpp (original)
+++ branches/quickbook-dev/tools/quickbook/src/files.cpp 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -8,7 +8,7 @@
     http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
 #include "files.hpp"
-#include <boost/filesystem/v3/fstream.hpp>
+#include <boost/filesystem/fstream.hpp>
 #include <boost/unordered_map.hpp>
 #include <boost/range/algorithm/upper_bound.hpp>
 #include <boost/range/algorithm/transform.hpp>

Modified: branches/quickbook-dev/tools/quickbook/src/files.hpp
==============================================================================
--- branches/quickbook-dev/tools/quickbook/src/files.hpp (original)
+++ branches/quickbook-dev/tools/quickbook/src/files.hpp 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -12,7 +12,7 @@
 #define BOOST_QUICKBOOK_FILES_HPP
 
 #include <string>
-#include <boost/filesystem/v3/path.hpp>
+#include <boost/filesystem/path.hpp>
 #include <boost/intrusive_ptr.hpp>
 #include <stdexcept>
 #include <cassert>

Modified: branches/quickbook-dev/tools/quickbook/src/input_path.hpp
==============================================================================
--- branches/quickbook-dev/tools/quickbook/src/input_path.hpp (original)
+++ branches/quickbook-dev/tools/quickbook/src/input_path.hpp 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -10,7 +10,7 @@
 #define BOOST_QUICKBOOK_DETAIL_INPUT_PATH_HPP
 
 #include <boost/config.hpp>
-#include <boost/filesystem/v3/path.hpp>
+#include <boost/filesystem/path.hpp>
 #include <string>
 #include <stdexcept>
 #include <iostream>

Modified: branches/quickbook-dev/tools/quickbook/src/quickbook.cpp
==============================================================================
--- branches/quickbook-dev/tools/quickbook/src/quickbook.cpp (original)
+++ branches/quickbook-dev/tools/quickbook/src/quickbook.cpp 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -17,9 +17,9 @@
 #include "input_path.hpp"
 #include "id_manager.hpp"
 #include <boost/program_options.hpp>
-#include <boost/filesystem/v3/path.hpp>
-#include <boost/filesystem/v3/operations.hpp>
-#include <boost/filesystem/v3/fstream.hpp>
+#include <boost/filesystem/path.hpp>
+#include <boost/filesystem/operations.hpp>
+#include <boost/filesystem/fstream.hpp>
 #include <boost/range/algorithm.hpp>
 #include <boost/ref.hpp>
 #include <boost/version.hpp>

Modified: branches/quickbook-dev/tools/quickbook/src/quickbook.hpp
==============================================================================
--- branches/quickbook-dev/tools/quickbook/src/quickbook.hpp (original)
+++ branches/quickbook-dev/tools/quickbook/src/quickbook.hpp 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -15,7 +15,7 @@
 #include <time.h>
 #include <vector>
 #include <string>
-#include <boost/filesystem/v3/path.hpp>
+#include <boost/filesystem/path.hpp>
 #include "fwd.hpp"
 #include "values.hpp"
 

Modified: branches/quickbook-dev/tools/release/snapshot_inspection.bat
==============================================================================
--- branches/quickbook-dev/tools/release/snapshot_inspection.bat (original)
+++ branches/quickbook-dev/tools/release/snapshot_inspection.bat 2012-03-18 14:44:50 EDT (Sun, 18 Mar 2012)
@@ -12,7 +12,7 @@
 popd
 
 echo Create ftp script...
-copy user.txt inspect.ftp
+copy %BOOST_TRUNK%\..\boost_ftp_user.txt inspect.ftp
 echo dir >>inspect.ftp
 echo binary >>inspect.ftp
 echo put inspect.html >>inspect.ftp


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk