$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r64033 - in sandbox/SOC/2010/stringalgos: boost/algorithm/string boost/algorithm/string/detail libs/algorithm/string libs/algorithm/string/doc libs/algorithm/string/test
From: mstefanro_at_[hidden]
Date: 2010-07-14 21:48:47
Author: mstefanro
Date: 2010-07-14 21:48:45 EDT (Wed, 14 Jul 2010)
New Revision: 64033
URL: http://svn.boost.org/trac/boost/changeset/64033
Log:
[GSoC2010][StringAlgo] Merge from trunk
Added:
   sandbox/SOC/2010/stringalgos/libs/algorithm/string/test/find_format_test.cpp
      - copied unchanged from r64032, /trunk/libs/algorithm/string/test/find_format_test.cpp
Properties modified: 
   sandbox/SOC/2010/stringalgos/boost/algorithm/string/   (props changed)
   sandbox/SOC/2010/stringalgos/libs/algorithm/string/   (props changed)
Text files modified: 
   sandbox/SOC/2010/stringalgos/boost/algorithm/string/detail/case_conv.hpp         |    12 ++++----                                
   sandbox/SOC/2010/stringalgos/boost/algorithm/string/detail/classification.hpp    |    24 ++++++++--------                        
   sandbox/SOC/2010/stringalgos/boost/algorithm/string/detail/find_format.hpp       |    52 ++++++++++++++++++++++---------------   
   sandbox/SOC/2010/stringalgos/boost/algorithm/string/detail/find_format_all.hpp   |    56 +++++++++++++++++++++++---------------- 
   sandbox/SOC/2010/stringalgos/boost/algorithm/string/detail/find_format_store.hpp |    13 ++++++++                                
   sandbox/SOC/2010/stringalgos/boost/algorithm/string/erase.hpp                    |     4 +-                                      
   sandbox/SOC/2010/stringalgos/boost/algorithm/string/find.hpp                     |     2                                         
   sandbox/SOC/2010/stringalgos/boost/algorithm/string/find_iterator.hpp            |     2                                         
   sandbox/SOC/2010/stringalgos/libs/algorithm/string/doc/Jamfile.v2                |     1                                         
   sandbox/SOC/2010/stringalgos/libs/algorithm/string/doc/external_concepts.html    |    10 ++++--                                  
   sandbox/SOC/2010/stringalgos/libs/algorithm/string/doc/string_algo.xml           |     2                                         
   sandbox/SOC/2010/stringalgos/libs/algorithm/string/doc/usage.xml                 |     4 +-                                      
   sandbox/SOC/2010/stringalgos/libs/algorithm/string/test/Jamfile.v2               |     6 ++++                                    
   sandbox/SOC/2010/stringalgos/libs/algorithm/string/test/split_test.cpp           |     1                                         
   14 files changed, 115 insertions(+), 74 deletions(-)
Modified: sandbox/SOC/2010/stringalgos/boost/algorithm/string/detail/case_conv.hpp
==============================================================================
--- sandbox/SOC/2010/stringalgos/boost/algorithm/string/detail/case_conv.hpp	(original)
+++ sandbox/SOC/2010/stringalgos/boost/algorithm/string/detail/case_conv.hpp	2010-07-14 21:48:45 EDT (Wed, 14 Jul 2010)
@@ -31,7 +31,7 @@
             struct to_lowerF : public std::unary_function<CharT, CharT>
             {
                 // Constructor
-                to_lowerF( const std::locale& Loc ) : m_Loc( Loc ) {}
+                to_lowerF( const std::locale& Loc ) : m_Loc( &Loc ) {}
 
                 // Operation
                 CharT operator ()( CharT Ch ) const
@@ -39,11 +39,11 @@
                     #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL)
                         return std::tolower( Ch);
                     #else
-                        return std::tolower<CharT>( Ch, m_Loc );
+                        return std::tolower<CharT>( Ch, *m_Loc );
                     #endif
                 }
             private:
-                const std::locale& m_Loc;
+                const std::locale* m_Loc;
             };
 
             // a toupper functor
@@ -51,7 +51,7 @@
             struct to_upperF : public std::unary_function<CharT, CharT>
             {
                 // Constructor
-                to_upperF( const std::locale& Loc ) : m_Loc( Loc ) {}
+                to_upperF( const std::locale& Loc ) : m_Loc( &Loc ) {}
 
                 // Operation
                 CharT operator ()( CharT Ch ) const
@@ -59,11 +59,11 @@
                     #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL)
                         return std::toupper( Ch);
                     #else
-                        return std::toupper<CharT>( Ch, m_Loc );
+                        return std::toupper<CharT>( Ch, *m_Loc );
                     #endif
                 }
             private:
-                const std::locale& m_Loc;
+                const std::locale* m_Loc;
             };
 
 #if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
Modified: sandbox/SOC/2010/stringalgos/boost/algorithm/string/detail/classification.hpp
==============================================================================
--- sandbox/SOC/2010/stringalgos/boost/algorithm/string/detail/classification.hpp	(original)
+++ sandbox/SOC/2010/stringalgos/boost/algorithm/string/detail/classification.hpp	2010-07-14 21:48:45 EDT (Wed, 14 Jul 2010)
@@ -32,8 +32,8 @@
             struct is_classifiedF :
                 public predicate_facade<is_classifiedF>
             {
-                // Boost.Lambda support
-                template <class Args> struct sig { typedef bool type; };
+                // Boost.ResultOf support
+                typedef bool result_type;
 
                 // Constructor from a locale
                 is_classifiedF(std::ctype_base::mask Type, std::locale const & Loc = std::locale()) :
@@ -72,8 +72,8 @@
                 typedef typename ::boost::remove_const<CharT>::type set_value_type;
 
             public:     
-                // Boost.Lambda support
-                template <class Args> struct sig { typedef bool type; };
+                // Boost.ResultOf support
+                typedef bool result_type;
 
                 // Constructor
                 template<typename RangeT>
@@ -253,8 +253,8 @@
             struct is_from_rangeF :
                 public predicate_facade< is_from_rangeF<CharT> >
             {
-                // Boost.Lambda support
-                template <class Args> struct sig { typedef bool type; };
+                // Boost.ResultOf support
+                typedef bool result_type;
 
                 // Constructor
                 is_from_rangeF( CharT From, CharT To ) : m_From(From), m_To(To) {}
@@ -278,8 +278,8 @@
             {
             public:
 
-                // Boost.Lambda support
-                template <class Args> struct sig { typedef bool type; };
+                // Boost.ResultOf support
+                typedef bool result_type;
 
                 // Constructor
                 pred_andF( Pred1T Pred1, Pred2T Pred2 ) :
@@ -303,8 +303,8 @@
                 public predicate_facade< pred_orF<Pred1T,Pred2T> >
             {
             public:
-                // Boost.Lambda support
-                template <class Args> struct sig { typedef bool type; };
+                // Boost.ResultOf support
+                typedef bool result_type;
 
                 // Constructor
                 pred_orF( Pred1T Pred1, Pred2T Pred2 ) :
@@ -328,8 +328,8 @@
                 public predicate_facade< pred_notF<PredT> >
             {
             public:
-                // Boost.Lambda support
-                template <class Args> struct sig { typedef bool type; };
+                // Boost.ResultOf support
+                typedef bool result_type;
 
                 // Constructor
                 pred_notF( PredT Pred ) : m_Pred(Pred) {}
Modified: sandbox/SOC/2010/stringalgos/boost/algorithm/string/detail/find_format.hpp
==============================================================================
--- sandbox/SOC/2010/stringalgos/boost/algorithm/string/detail/find_format.hpp	(original)
+++ sandbox/SOC/2010/stringalgos/boost/algorithm/string/detail/find_format.hpp	2010-07-14 21:48:45 EDT (Wed, 14 Jul 2010)
@@ -49,17 +49,17 @@
                 if ( !M )
                 {
                     // Match not found - return original sequence
-                    std::copy( ::boost::begin(Input), ::boost::end(Input), Output );
+                    Output = std::copy( ::boost::begin(Input), ::boost::end(Input), Output );
                     return Output;
                 }
 
                 // Copy the beginning of the sequence
-                std::copy( ::boost::begin(Input), ::boost::begin(M), Output );
+                Output = std::copy( ::boost::begin(Input), ::boost::begin(M), Output );
                 // Format find result
                 // Copy formated result
-                std::copy( ::boost::begin(M.format_result()), ::boost::end(M.format_result()), Output );
+                Output = std::copy( ::boost::begin(M.format_result()), ::boost::end(M.format_result()), Output );
                 // Copy the rest of the sequence
-                std::copy( M.end(), ::boost::end(Input), Output );
+                Output = std::copy( M.end(), ::boost::end(Input), Output );
 
                 return Output;
             }
@@ -74,13 +74,17 @@
                 const InputT& Input,
                 FormatterT Formatter,
                 const FindResultT& FindResult )
-            {       
-                return ::boost::algorithm::detail::find_format_copy_impl2( 
-                    Output,
-                    Input,
-                    Formatter,
-                    FindResult,
-                    Formatter(FindResult) );
+            {   
+                if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) {
+                    return ::boost::algorithm::detail::find_format_copy_impl2( 
+                        Output,
+                        Input,
+                        Formatter,
+                        FindResult,
+                        Formatter(FindResult) );
+                } else {
+                    return std::copy( ::boost::begin(Input), ::boost::end(Input), Output );
+                }
             }
 
  
@@ -132,11 +136,15 @@
                 FormatterT Formatter,
                 const FindResultT& FindResult)
             {
-                return ::boost::algorithm::detail::find_format_copy_impl2(
-                    Input,
-                    Formatter,
-                    FindResult,
-                    Formatter(FindResult) );
+                if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) {
+                    return ::boost::algorithm::detail::find_format_copy_impl2(
+                        Input,
+                        Formatter,
+                        FindResult,
+                        Formatter(FindResult) );
+                } else {
+                    return Input;
+                }
             }
 
  // replace implementation ----------------------------------------------------//
@@ -180,11 +188,13 @@
                 FormatterT Formatter,
                 const FindResultT& FindResult)
             {
-                ::boost::algorithm::detail::find_format_impl2(
-                    Input,
-                    Formatter,
-                    FindResult,
-                    Formatter(FindResult) );
+                if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) {
+                    ::boost::algorithm::detail::find_format_impl2(
+                        Input,
+                        Formatter,
+                        FindResult,
+                        Formatter(FindResult) );
+                }
             }
 
         } // namespace detail
Modified: sandbox/SOC/2010/stringalgos/boost/algorithm/string/detail/find_format_all.hpp
==============================================================================
--- sandbox/SOC/2010/stringalgos/boost/algorithm/string/detail/find_format_all.hpp	(original)
+++ sandbox/SOC/2010/stringalgos/boost/algorithm/string/detail/find_format_all.hpp	2010-07-14 21:48:45 EDT (Wed, 14 Jul 2010)
@@ -57,9 +57,9 @@
                 while( M )
                 {
                     // Copy the beginning of the sequence
-                    std::copy( LastMatch, M.begin(), Output );
+                    Output = std::copy( LastMatch, M.begin(), Output );
                     // Copy formated result
-                    std::copy( ::boost::begin(M.format_result()), ::boost::end(M.format_result()), Output );
+                    Output = std::copy( ::boost::begin(M.format_result()), ::boost::end(M.format_result()), Output );
 
                     // Proceed to the next match
                     LastMatch=M.end();
@@ -67,7 +67,7 @@
                 }
 
                 // Copy the rest of the sequence
-                std::copy( LastMatch, ::boost::end(Input), Output );
+                Output = std::copy( LastMatch, ::boost::end(Input), Output );
 
                 return Output;
             }
@@ -84,14 +84,18 @@
                 FinderT Finder,
                 FormatterT Formatter,
                 const FindResultT& FindResult )
-            {       
-                return ::boost::algorithm::detail::find_format_all_copy_impl2( 
-                    Output,
-                    Input,
-                    Finder,
-                    Formatter,
-                    FindResult,
-                    Formatter(FindResult) );
+            {   
+                if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) {
+                    return ::boost::algorithm::detail::find_format_all_copy_impl2( 
+                        Output,
+                        Input,
+                        Finder,
+                        Formatter,
+                        FindResult,
+                        Formatter(FindResult) );
+                } else {
+                    return std::copy( ::boost::begin(Input), ::boost::end(Input), Output );
+                }
             }
 
  // find_format_all_copy implementation ----------------------------------------------//
@@ -156,12 +160,16 @@
                 FormatterT Formatter,
                 const FindResultT& FindResult)
             {
-                return ::boost::algorithm::detail::find_format_all_copy_impl2(
-                    Input,
-                    Finder,
-                    Formatter,
-                    FindResult,
-                    Formatter(FindResult) );
+                if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) {
+                    return ::boost::algorithm::detail::find_format_all_copy_impl2(
+                        Input,
+                        Finder,
+                        Formatter,
+                        FindResult,
+                        Formatter(FindResult) );
+                } else {
+                    return Input;
+                }
             }
 
  // find_format_all implementation ------------------------------------------------//
@@ -248,12 +256,14 @@
                 FormatterT Formatter,
                 FindResultT FindResult)
             {
-                ::boost::algorithm::detail::find_format_all_impl2(
-                    Input,
-                    Finder,
-                    Formatter,
-                    FindResult,
-                    Formatter(FindResult) );
+                if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) {
+                    ::boost::algorithm::detail::find_format_all_impl2(
+                        Input,
+                        Finder,
+                        Formatter,
+                        FindResult,
+                        Formatter(FindResult) );
+                }
             }
 
         } // namespace detail
Modified: sandbox/SOC/2010/stringalgos/boost/algorithm/string/detail/find_format_store.hpp
==============================================================================
--- sandbox/SOC/2010/stringalgos/boost/algorithm/string/detail/find_format_store.hpp	(original)
+++ sandbox/SOC/2010/stringalgos/boost/algorithm/string/detail/find_format_store.hpp	2010-07-14 21:48:45 EDT (Wed, 14 Jul 2010)
@@ -52,7 +52,9 @@
                 find_format_store& operator=( FindResultT FindResult )
                 {
                     iterator_range<ForwardIteratorT>::operator=(FindResult);
-                    m_FormatResult=m_Formatter(FindResult);
+                    if( !this->empty() ) {
+                        m_FormatResult=m_Formatter(FindResult);
+                    }
                     
                     return *this;
                 }
@@ -68,6 +70,15 @@
                 const formatter_type& m_Formatter;
             };
 
+            template<typename InputT, typename FindResultT>
+            bool check_find_result(InputT& Input, FindResultT& FindResult)
+            {
+                typedef BOOST_STRING_TYPENAME 
+                    range_const_iterator<InputT>::type input_iterator_type; 
+                iterator_range<input_iterator_type> ResultRange(FindResult);
+                return !ResultRange.empty();
+            }
+
 #if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
 #pragma warning(pop)
 #endif
Modified: sandbox/SOC/2010/stringalgos/boost/algorithm/string/erase.hpp
==============================================================================
--- sandbox/SOC/2010/stringalgos/boost/algorithm/string/erase.hpp	(original)
+++ sandbox/SOC/2010/stringalgos/boost/algorithm/string/erase.hpp	2010-07-14 21:48:45 EDT (Wed, 14 Jul 2010)
@@ -752,7 +752,7 @@
 
             \param Output An output iterator to which the result will be copied
             \param Input An input string
-            \param N Length of the head.                 
+            \param N Length of the tail.                 
                 For N>=0, at most N characters are extracted.
                 For N<0, size(Input)-|N| characters are extracted.
             \return An output iterator pointing just after the last inserted character or
@@ -797,7 +797,7 @@
             considered to be the tail. The input sequence is modified in-place.
 
             \param Input An input string
-            \param N Length of the head
+            \param N Length of the tail
                 For N>=0, at most N characters are extracted.
                 For N<0, size(Input)-|N| characters are extracted.
         */
Modified: sandbox/SOC/2010/stringalgos/boost/algorithm/string/find.hpp
==============================================================================
--- sandbox/SOC/2010/stringalgos/boost/algorithm/string/find.hpp	(original)
+++ sandbox/SOC/2010/stringalgos/boost/algorithm/string/find.hpp	2010-07-14 21:48:45 EDT (Wed, 14 Jul 2010)
@@ -258,7 +258,7 @@
 
         //! Find tail algorithm
         /*!
-            Get the head of the input. Head is a suffix of the string of the 
+            Get the tail of the input. Tail is a suffix of the string of the 
             given size. If the input is shorter then required, whole input if considered 
             to be the tail.
 
Modified: sandbox/SOC/2010/stringalgos/boost/algorithm/string/find_iterator.hpp
==============================================================================
--- sandbox/SOC/2010/stringalgos/boost/algorithm/string/find_iterator.hpp	(original)
+++ sandbox/SOC/2010/stringalgos/boost/algorithm/string/find_iterator.hpp	2010-07-14 21:48:45 EDT (Wed, 14 Jul 2010)
@@ -240,7 +240,7 @@
                 m_Match(Other.m_Match),
                 m_Next(Other.m_Next),
                 m_End(Other.m_End),
-                m_bEof(false)
+                m_bEof(Other.m_bEof)
             {}
 
             //! Constructor
Modified: sandbox/SOC/2010/stringalgos/libs/algorithm/string/doc/Jamfile.v2
==============================================================================
--- sandbox/SOC/2010/stringalgos/libs/algorithm/string/doc/Jamfile.v2	(original)
+++ sandbox/SOC/2010/stringalgos/libs/algorithm/string/doc/Jamfile.v2	2010-07-14 21:48:45 EDT (Wed, 14 Jul 2010)
@@ -12,6 +12,7 @@
 
 boostbook string_algo : string_algo.xml autodoc 
         :
+        <xsl:param>boost.root=../../../../..
         <format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/doc/html
         ;
 
Modified: sandbox/SOC/2010/stringalgos/libs/algorithm/string/doc/external_concepts.html
==============================================================================
--- sandbox/SOC/2010/stringalgos/libs/algorithm/string/doc/external_concepts.html	(original)
+++ sandbox/SOC/2010/stringalgos/libs/algorithm/string/doc/external_concepts.html	2010-07-14 21:48:45 EDT (Wed, 14 Jul 2010)
@@ -32,7 +32,9 @@
             free-standing functions and type-generators exists:</p><code>void foo( const T&, int ); <br>
                 int bar( T& ); <br>
              foo_type_of< T >::type;</code> <br> <br><hr size="1" ><h3  >Literature</h3><ul  ><li  > Type Generators </li><li  > Concepts </li><li  > Concepts and SGI STL </li></ul><hr size="1" ><p  >© Thorsten Ottosen 2003-2004 (nesotto_AT_cs.auc.dk).
-    Permission to copy, use, modify, sell and distribute this software is granted provided this copyright notice appears
-     in all copies. This software is provided "as is" without express or implied warranty, and with no
-         claim as to its suitability for any purpose.</p><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></body></html>
- <!-- Copyright Dezide Aps 2003-2004 -->
\ No newline at end of file
+<br>Use, modification and distribution is subject to the Boost
+ Software License, Version 1.0. (See accompanying file
+ <code class="filename">LICENSE_1_0.txt</code> or copy at http://www.boost.org/LICENSE_1_0.txt)
+</br>
+</p>
+ <!-- Copyright Dezide Aps 2003-2004 -->
Modified: sandbox/SOC/2010/stringalgos/libs/algorithm/string/doc/string_algo.xml
==============================================================================
--- sandbox/SOC/2010/stringalgos/libs/algorithm/string/doc/string_algo.xml	(original)
+++ sandbox/SOC/2010/stringalgos/libs/algorithm/string/doc/string_algo.xml	2010-07-14 21:48:45 EDT (Wed, 14 Jul 2010)
@@ -33,7 +33,7 @@
         <librarypurpose>
             A set of generic string-related algorithms and utilities
         </librarypurpose> 
-        <librarycategory name="category:algoritms"/>
+        <librarycategory name="category:algorithms"/>
         <librarycategory name="category:string-text"/>
     </libraryinfo>
 
Modified: sandbox/SOC/2010/stringalgos/libs/algorithm/string/doc/usage.xml
==============================================================================
--- sandbox/SOC/2010/stringalgos/libs/algorithm/string/doc/usage.xml	(original)
+++ sandbox/SOC/2010/stringalgos/libs/algorithm/string/doc/usage.xml	2010-07-14 21:48:45 EDT (Wed, 14 Jul 2010)
@@ -169,7 +169,7 @@
         <programlisting>
     string str1="     hello world!     ";
     string str2=trim_left_copy(str1);   // str2 == "hello world!     "
-    string str3=trim_right_copy(str2);  // str3 == "     hello world!"
+    string str3=trim_right_copy(str1);  // str3 == "     hello world!"
     trim(str1);                         // str1 == "hello world!"
 
     string phone="00423333444";
@@ -339,7 +339,7 @@
     typedef vector< string > split_vector_type;
     
     split_vector_type SplitVec; // #2: Search for tokens
-    split( SplitVec, str1, is_any_of("-*") ); // SplitVec == { "hello abc","ABC","aBc goodbye" }
+    split( SplitVec, str1, is_any_of("-*"), token_compress_on ); // SplitVec == { "hello abc","ABC","aBc goodbye" }
         </programlisting>
         <para>
             <code>[hello]</code> designates an <code>iterator_range</code> delimiting this substring.                       
Modified: sandbox/SOC/2010/stringalgos/libs/algorithm/string/test/Jamfile.v2
==============================================================================
--- sandbox/SOC/2010/stringalgos/libs/algorithm/string/test/Jamfile.v2	(original)
+++ sandbox/SOC/2010/stringalgos/libs/algorithm/string/test/Jamfile.v2	2010-07-14 21:48:45 EDT (Wed, 14 Jul 2010)
@@ -65,5 +65,11 @@
             :   
             : regex
         ]
+      [ run 
+            find_format_test.cpp
+          : :
+            :   
+            : find_format
+        ]
     ;
 
Modified: sandbox/SOC/2010/stringalgos/libs/algorithm/string/test/split_test.cpp
==============================================================================
--- sandbox/SOC/2010/stringalgos/libs/algorithm/string/test/split_test.cpp	(original)
+++ sandbox/SOC/2010/stringalgos/libs/algorithm/string/test/split_test.cpp	2010-07-14 21:48:45 EDT (Wed, 14 Jul 2010)
@@ -139,6 +139,7 @@
     ++siter;
     BOOST_CHECK(equals(*siter, "abb"));
     ++siter;
+    BOOST_CHECK(siter==split_iterator<string::iterator>(siter));
     BOOST_CHECK(siter==split_iterator<string::iterator>());
 
 }