LCOV - code coverage report
Current view: top level - usr/include/boost/algorithm/string - replace.hpp (source / functions) Hit Total Coverage
Test: ROSE Lines: 2 7 28.6 %
Date: 2022-12-08 13:48:47 Functions: 1 6 16.7 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : //  Boost string_algo library replace.hpp header file  ---------------------------//
       2             : 
       3             : //  Copyright Pavol Droba 2002-2006.
       4             : //
       5             : // Distributed under the Boost Software License, Version 1.0.
       6             : //    (See accompanying file LICENSE_1_0.txt or copy at
       7             : //          http://www.boost.org/LICENSE_1_0.txt)
       8             : 
       9             : //  See http://www.boost.org/ for updates, documentation, and revision history.
      10             : 
      11             : #ifndef BOOST_STRING_REPLACE_HPP
      12             : #define BOOST_STRING_REPLACE_HPP
      13             : 
      14             : #include <boost/algorithm/string/config.hpp>
      15             : 
      16             : #include <boost/range/iterator_range_core.hpp>
      17             : #include <boost/range/begin.hpp>
      18             : #include <boost/range/end.hpp>
      19             : #include <boost/range/iterator.hpp>
      20             : #include <boost/range/const_iterator.hpp>
      21             : 
      22             : #include <boost/algorithm/string/find_format.hpp>
      23             : #include <boost/algorithm/string/finder.hpp>
      24             : #include <boost/algorithm/string/formatter.hpp>
      25             : #include <boost/algorithm/string/compare.hpp>
      26             : 
      27             : /*! \file
      28             :     Defines various replace algorithms. Each algorithm replaces
      29             :     part(s) of the input according to set of searching and replace criteria.
      30             : */
      31             : 
      32             : namespace boost {
      33             :     namespace algorithm {
      34             : 
      35             : //  replace_range --------------------------------------------------------------------//
      36             : 
      37             :         //! Replace range algorithm
      38             :         /*!
      39             :             Replace the given range in the input string.
      40             :             The result is a modified copy of the input. It is returned as a sequence 
      41             :             or copied to the output iterator.
      42             :             
      43             :             \param Output An output iterator to which the result will be copied
      44             :             \param Input An input string
      45             :             \param SearchRange A range in the input to be substituted
      46             :             \param Format A substitute string
      47             :             \return An output iterator pointing just after the last inserted character or
      48             :                 a modified copy of the input
      49             : 
      50             :               \note The second variant of this function provides the strong exception-safety guarantee
      51             :         */
      52             :         template<
      53             :             typename OutputIteratorT,
      54             :             typename Range1T, 
      55             :             typename Range2T>
      56             :         inline OutputIteratorT replace_range_copy(
      57             :             OutputIteratorT Output,
      58             :             const Range1T& Input,
      59             :             const iterator_range<
      60             :                 BOOST_STRING_TYPENAME 
      61             :                     range_const_iterator<Range1T>::type>& SearchRange,
      62             :             const Range2T& Format)
      63             :         {
      64             :             return ::boost::algorithm::find_format_copy(
      65             :                 Output,
      66             :                 Input,
      67             :                 ::boost::algorithm::range_finder(SearchRange),
      68             :                 ::boost::algorithm::const_formatter(Format));
      69             :         }
      70             : 
      71             :         //! Replace range algorithm
      72             :         /*!
      73             :             \overload
      74             :         */
      75             :         template<typename SequenceT, typename RangeT>
      76             :         inline SequenceT replace_range_copy( 
      77             :             const SequenceT& Input,
      78             :             const iterator_range<
      79             :                 BOOST_STRING_TYPENAME 
      80             :                     range_const_iterator<SequenceT>::type>& SearchRange,
      81             :             const RangeT& Format)
      82             :         {
      83             :             return ::boost::algorithm::find_format_copy(
      84             :                 Input,
      85             :                 ::boost::algorithm::range_finder(SearchRange),
      86             :                 ::boost::algorithm::const_formatter(Format));
      87             :         }
      88             : 
      89             :         //! Replace range algorithm
      90             :         /*!
      91             :             Replace the given range in the input string. 
      92             :             The input sequence is modified in-place.
      93             : 
      94             :             \param Input An input string
      95             :             \param SearchRange A range in the input to be substituted
      96             :             \param Format A substitute string
      97             :         */
      98             :         template<typename SequenceT, typename RangeT>
      99             :         inline void replace_range( 
     100             :             SequenceT& Input,
     101             :             const iterator_range<
     102             :                 BOOST_STRING_TYPENAME 
     103             :                     range_iterator<SequenceT>::type>& SearchRange,
     104             :             const RangeT& Format)
     105             :         {
     106             :             ::boost::algorithm::find_format(
     107             :                 Input,
     108             :                 ::boost::algorithm::range_finder(SearchRange),
     109             :                 ::boost::algorithm::const_formatter(Format));
     110             :         }
     111             : 
     112             : //  replace_first --------------------------------------------------------------------//
     113             : 
     114             :         //! Replace first algorithm
     115             :         /*!
     116             :             Replace the first match of the search substring in the input 
     117             :             with the format string. 
     118             :             The result is a modified copy of the input. It is returned as a sequence 
     119             :             or copied to the output iterator.
     120             :             
     121             :             \param Output An output iterator to which the result will be copied
     122             :             \param Input An input string
     123             :             \param Search A substring to be searched for 
     124             :             \param Format A substitute string
     125             :             \return An output iterator pointing just after the last inserted character or
     126             :                     a modified copy of the input
     127             : 
     128             :               \note The second variant of this function provides the strong exception-safety guarantee
     129             :         */
     130             :         template<
     131             :             typename OutputIteratorT,
     132             :             typename Range1T, 
     133             :             typename Range2T,
     134             :             typename Range3T>
     135             :         inline OutputIteratorT replace_first_copy(
     136             :             OutputIteratorT Output,
     137             :             const Range1T& Input,
     138             :             const Range2T& Search,
     139             :             const Range3T& Format)
     140             :         {
     141             :             return ::boost::algorithm::find_format_copy(
     142             :                 Output,
     143             :                 Input,
     144             :                 ::boost::algorithm::first_finder(Search),
     145             :                 ::boost::algorithm::const_formatter(Format) );
     146             :         }
     147             : 
     148             :         //! Replace first algorithm
     149             :         /*!
     150             :             \overload
     151             :         */
     152             :         template<typename SequenceT, typename Range1T, typename Range2T>
     153             :         inline SequenceT replace_first_copy( 
     154             :             const SequenceT& Input,
     155             :             const Range1T& Search,
     156             :             const Range2T& Format )
     157             :         {
     158             :             return ::boost::algorithm::find_format_copy( 
     159             :                 Input,
     160             :                 ::boost::algorithm::first_finder(Search),
     161             :                 ::boost::algorithm::const_formatter(Format) );
     162             :         }
     163             : 
     164             :         //! Replace first algorithm
     165             :         /*!
     166             :             replace the first match of the search substring in the input 
     167             :             with the format string. The input sequence is modified in-place.
     168             : 
     169             :             \param Input An input string
     170             :             \param Search A substring to be searched for 
     171             :             \param Format A substitute string
     172             :         */
     173             :         template<typename SequenceT, typename Range1T, typename Range2T>
     174             :         inline void replace_first( 
     175             :             SequenceT& Input,
     176             :             const Range1T& Search,
     177             :             const Range2T& Format )
     178             :         {
     179             :             ::boost::algorithm::find_format( 
     180             :                 Input, 
     181             :                 ::boost::algorithm::first_finder(Search),
     182             :                 ::boost::algorithm::const_formatter(Format) );
     183             :         }
     184             : 
     185             : //  replace_first ( case insensitive ) ---------------------------------------------//
     186             : 
     187             :         //! Replace first algorithm ( case insensitive )
     188             :         /*!
     189             :             Replace the first match of the search substring in the input 
     190             :             with the format string. 
     191             :             The result is a modified copy of the input. It is returned as a sequence 
     192             :             or copied to the output iterator.
     193             :             Searching is case insensitive.
     194             : 
     195             :             \param Output An output iterator to which the result will be copied
     196             :             \param Input An input string
     197             :             \param Search A substring to be searched for 
     198             :             \param Format A substitute string
     199             :             \param Loc A locale used for case insensitive comparison
     200             :             \return An output iterator pointing just after the last inserted character or
     201             :                 a modified copy of the input
     202             : 
     203             :              \note The second variant of this function provides the strong exception-safety guarantee
     204             :         */
     205             :         template<
     206             :             typename OutputIteratorT,
     207             :             typename Range1T, 
     208             :             typename Range2T,
     209             :             typename Range3T>
     210             :         inline OutputIteratorT ireplace_first_copy(
     211             :             OutputIteratorT Output,
     212             :             const Range1T& Input,
     213             :             const Range2T& Search,
     214             :             const Range3T& Format,
     215             :             const std::locale& Loc=std::locale() )
     216             :         {
     217             :             return ::boost::algorithm::find_format_copy(
     218             :                 Output,
     219             :                 Input,
     220             :                 ::boost::algorithm::first_finder(Search, is_iequal(Loc)),
     221             :                 ::boost::algorithm::const_formatter(Format) );
     222             :         }
     223             : 
     224             :         //! Replace first algorithm ( case insensitive )
     225             :         /*!
     226             :             \overload
     227             :         */
     228             :         template<typename SequenceT, typename Range2T, typename Range1T>
     229             :         inline SequenceT ireplace_first_copy( 
     230             :             const SequenceT& Input,
     231             :             const Range2T& Search,
     232             :             const Range1T& Format,
     233             :             const std::locale& Loc=std::locale() )
     234             :         {
     235             :             return ::boost::algorithm::find_format_copy( 
     236             :                 Input,
     237             :                 ::boost::algorithm::first_finder(Search, is_iequal(Loc)),
     238             :                 ::boost::algorithm::const_formatter(Format) );
     239             :         }
     240             : 
     241             :         //! Replace first algorithm ( case insensitive )
     242             :         /*!
     243             :             Replace the first match of the search substring in the input 
     244             :             with the format string. Input sequence is modified in-place.
     245             :             Searching is case insensitive.
     246             : 
     247             :             \param Input An input string
     248             :             \param Search A substring to be searched for 
     249             :             \param Format A substitute string
     250             :             \param Loc A locale used for case insensitive comparison
     251             :         */
     252             :         template<typename SequenceT, typename Range1T, typename Range2T>
     253             :         inline void ireplace_first( 
     254             :             SequenceT& Input,
     255             :             const Range1T& Search,
     256             :             const Range2T& Format,
     257             :             const std::locale& Loc=std::locale() )
     258             :         {
     259             :             ::boost::algorithm::find_format( 
     260             :                 Input, 
     261             :                 ::boost::algorithm::first_finder(Search, is_iequal(Loc)),
     262             :                 ::boost::algorithm::const_formatter(Format) );
     263             :         }
     264             : 
     265             : //  replace_last --------------------------------------------------------------------//
     266             : 
     267             :         //! Replace last algorithm
     268             :         /*!
     269             :             Replace the last match of the search string in the input 
     270             :             with the format string. 
     271             :             The result is a modified copy of the input. It is returned as a sequence 
     272             :             or copied to the output iterator.
     273             : 
     274             :             \param Output An output iterator to which the result will be copied
     275             :             \param Input An input string
     276             :             \param Search A substring to be searched for
     277             :             \param Format A substitute string
     278             :             \return An output iterator pointing just after the last inserted character or
     279             :                     a modified copy of the input            
     280             : 
     281             :               \note The second variant of this function provides the strong exception-safety guarantee
     282             :         */
     283             :         template<
     284             :             typename OutputIteratorT,
     285             :             typename Range1T, 
     286             :             typename Range2T,
     287             :             typename Range3T>
     288             :         inline OutputIteratorT replace_last_copy(
     289             :             OutputIteratorT Output,
     290             :             const Range1T& Input,
     291             :             const Range2T& Search,
     292             :             const Range3T& Format )
     293             :         {
     294             :             return ::boost::algorithm::find_format_copy(
     295             :                 Output,
     296             :                 Input,
     297             :                 ::boost::algorithm::last_finder(Search),
     298             :                 ::boost::algorithm::const_formatter(Format) );
     299             :         }
     300             : 
     301             :         //! Replace last algorithm
     302             :         /*!
     303             :             \overload
     304             :         */
     305             :         template<typename SequenceT, typename Range1T, typename Range2T>
     306             :         inline SequenceT replace_last_copy( 
     307             :             const SequenceT& Input,
     308             :             const Range1T& Search,
     309             :             const Range2T& Format )
     310             :         {
     311             :             return ::boost::algorithm::find_format_copy( 
     312             :                 Input,
     313             :                 ::boost::algorithm::last_finder(Search),
     314             :                 ::boost::algorithm::const_formatter(Format) );
     315             :         }
     316             : 
     317             :         //! Replace last algorithm
     318             :         /*!
     319             :             Replace the last match of the search string in the input 
     320             :             with the format string. Input sequence is modified in-place.
     321             : 
     322             :             \param Input An input string
     323             :             \param Search A substring to be searched for 
     324             :             \param Format A substitute string
     325             :         */
     326             :         template<typename SequenceT, typename Range1T, typename Range2T>
     327             :         inline void replace_last( 
     328             :             SequenceT& Input,
     329             :             const Range1T& Search,
     330             :             const Range2T& Format )
     331             :         {
     332             :             ::boost::algorithm::find_format( 
     333             :                 Input, 
     334             :                 ::boost::algorithm::last_finder(Search),
     335             :                 ::boost::algorithm::const_formatter(Format) );
     336             :         }
     337             : 
     338             : //  replace_last ( case insensitive ) -----------------------------------------------//
     339             : 
     340             :         //! Replace last algorithm ( case insensitive )
     341             :         /*!
     342             :             Replace the last match of the search string in the input 
     343             :             with the format string. 
     344             :             The result is a modified copy of the input. It is returned as a sequence 
     345             :             or copied to the output iterator.
     346             :             Searching is case insensitive.
     347             : 
     348             :             \param Output An output iterator to which the result will be copied
     349             :             \param Input An input string
     350             :             \param Search A substring to be searched for 
     351             :             \param Format A substitute string
     352             :             \param Loc A locale used for case insensitive comparison
     353             :             \return An output iterator pointing just after the last inserted character or
     354             :                     a modified copy of the input  
     355             : 
     356             :             \note The second variant of this function provides the strong exception-safety guarantee
     357             :         */
     358             :         template<
     359             :             typename OutputIteratorT,
     360             :             typename Range1T, 
     361             :             typename Range2T,
     362             :             typename Range3T>
     363             :         inline OutputIteratorT ireplace_last_copy(
     364             :             OutputIteratorT Output,
     365             :             const Range1T& Input,
     366             :             const Range2T& Search,
     367             :             const Range3T& Format,
     368             :             const std::locale& Loc=std::locale() )
     369             :         {
     370             :             return ::boost::algorithm::find_format_copy(
     371             :                 Output,
     372             :                 Input,
     373             :                 ::boost::algorithm::last_finder(Search, is_iequal(Loc)),
     374             :                 ::boost::algorithm::const_formatter(Format) );
     375             :         }
     376             : 
     377             :         //! Replace last algorithm ( case insensitive )
     378             :         /*!
     379             :             \overload
     380             :         */
     381             :         template<typename SequenceT, typename Range1T, typename Range2T>
     382             :         inline SequenceT ireplace_last_copy( 
     383             :             const SequenceT& Input,
     384             :             const Range1T& Search,
     385             :             const Range2T& Format,
     386             :             const std::locale& Loc=std::locale() )
     387             :         {
     388             :             return ::boost::algorithm::find_format_copy( 
     389             :                 Input,
     390             :                 ::boost::algorithm::last_finder(Search, is_iequal(Loc)),
     391             :                 ::boost::algorithm::const_formatter(Format) );
     392             :         }
     393             : 
     394             :         //! Replace last algorithm ( case insensitive )
     395             :         /*!
     396             :             Replace the last match of the search string in the input 
     397             :             with the format string.The input sequence is modified in-place.
     398             :             Searching is case insensitive.
     399             : 
     400             :             \param Input An input string
     401             :             \param Search A substring to be searched for 
     402             :             \param Format A substitute string
     403             :             \param Loc A locale used for case insensitive comparison
     404             :         */
     405             :         template<typename SequenceT, typename Range1T, typename Range2T>
     406             :         inline void ireplace_last( 
     407             :             SequenceT& Input,
     408             :             const Range1T& Search,
     409             :             const Range2T& Format,
     410             :             const std::locale& Loc=std::locale() )
     411             :         {
     412             :             ::boost::algorithm::find_format( 
     413             :                 Input, 
     414             :                 ::boost::algorithm::last_finder(Search, is_iequal(Loc)),
     415             :                 ::boost::algorithm::const_formatter(Format) );
     416             :         }
     417             : 
     418             : //  replace_nth --------------------------------------------------------------------//
     419             : 
     420             :         //! Replace nth algorithm
     421             :         /*!
     422             :             Replace an Nth (zero-indexed) match of the search string in the input 
     423             :             with the format string. 
     424             :             The result is a modified copy of the input. It is returned as a sequence 
     425             :             or copied to the output iterator.
     426             : 
     427             :             \param Output An output iterator to which the result will be copied
     428             :             \param Input An input string
     429             :             \param Search A substring to be searched for 
     430             :             \param Nth An index of the match to be replaced. The index is 0-based.
     431             :                 For negative N, matches are counted from the end of string.
     432             :             \param Format A substitute string
     433             :             \return An output iterator pointing just after the last inserted character or
     434             :                 a modified copy of the input
     435             : 
     436             :             \note The second variant of this function provides the strong exception-safety guarantee
     437             :         */
     438             :         template<
     439             :             typename OutputIteratorT,
     440             :             typename Range1T, 
     441             :             typename Range2T,
     442             :             typename Range3T>
     443             :         inline OutputIteratorT replace_nth_copy(
     444             :             OutputIteratorT Output,
     445             :             const Range1T& Input,
     446             :             const Range2T& Search,
     447             :             int Nth,
     448             :             const Range3T& Format )
     449             :         {
     450             :             return ::boost::algorithm::find_format_copy(
     451             :                 Output,
     452             :                 Input,
     453             :                 ::boost::algorithm::nth_finder(Search, Nth),
     454             :                 ::boost::algorithm::const_formatter(Format) );
     455             :         }
     456             : 
     457             :         //! Replace nth algorithm
     458             :         /*!
     459             :             \overload
     460             :         */
     461             :         template<typename SequenceT, typename Range1T, typename Range2T>
     462             :         inline SequenceT replace_nth_copy( 
     463             :             const SequenceT& Input,
     464             :             const Range1T& Search,
     465             :             int Nth,
     466             :             const Range2T& Format )
     467             :         {
     468             :             return ::boost::algorithm::find_format_copy( 
     469             :                 Input,
     470             :                 ::boost::algorithm::nth_finder(Search, Nth),
     471             :                 ::boost::algorithm::const_formatter(Format) );
     472             :         }
     473             : 
     474             :         //! Replace nth algorithm
     475             :         /*!
     476             :             Replace an Nth (zero-indexed) match of the search string in the input 
     477             :             with the format string. Input sequence is modified in-place.
     478             : 
     479             :             \param Input An input string
     480             :             \param Search A substring to be searched for 
     481             :             \param Nth An index of the match to be replaced. The index is 0-based.
     482             :                 For negative N, matches are counted from the end of string.
     483             :             \param Format A substitute string
     484             :         */
     485             :         template<typename SequenceT, typename Range1T, typename Range2T>
     486             :         inline void replace_nth( 
     487             :             SequenceT& Input,
     488             :             const Range1T& Search,
     489             :             int Nth,
     490             :             const Range2T& Format )
     491             :         {
     492             :             ::boost::algorithm::find_format( 
     493             :                 Input, 
     494             :                 ::boost::algorithm::nth_finder(Search, Nth),
     495             :                 ::boost::algorithm::const_formatter(Format) );
     496             :         }
     497             : 
     498             : //  replace_nth ( case insensitive ) -----------------------------------------------//
     499             :         
     500             :         //! Replace nth algorithm ( case insensitive )
     501             :         /*!
     502             :             Replace an Nth (zero-indexed) match of the search string in the input 
     503             :             with the format string. 
     504             :             The result is a modified copy of the input. It is returned as a sequence 
     505             :             or copied to the output iterator.
     506             :             Searching is case insensitive.
     507             : 
     508             :             \param Output An output iterator to which the result will be copied
     509             :             \param Input An input string
     510             :             \param Search A substring to be searched for 
     511             :             \param Nth An index of the match to be replaced. The index is 0-based.
     512             :                 For negative N, matches are counted from the end of string.
     513             :             \param Format A substitute string
     514             :             \param Loc A locale used for case insensitive comparison
     515             :             \return An output iterator pointing just after the last inserted character or
     516             :                     a modified copy of the input            
     517             : 
     518             :             \note The second variant of this function provides the strong exception-safety guarantee
     519             :        */
     520             :         template<
     521             :             typename OutputIteratorT,
     522             :             typename Range1T, 
     523             :             typename Range2T,
     524             :             typename Range3T>
     525             :         inline OutputIteratorT ireplace_nth_copy(
     526             :             OutputIteratorT Output,
     527             :             const Range1T& Input,
     528             :             const Range2T& Search,
     529             :             int Nth,
     530             :             const Range3T& Format,
     531             :             const std::locale& Loc=std::locale() )
     532             :         {
     533             :             return ::boost::algorithm::find_format_copy(
     534             :                 Output,
     535             :                 Input,
     536             :                 ::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc) ),
     537             :                 ::boost::algorithm::const_formatter(Format) );
     538             :         }
     539             : 
     540             :         //! Replace nth algorithm ( case insensitive )
     541             :         /*!
     542             :             \overload
     543             :         */
     544             :         template<typename SequenceT, typename Range1T, typename Range2T>
     545             :         inline SequenceT ireplace_nth_copy( 
     546             :             const SequenceT& Input,
     547             :             const Range1T& Search,
     548             :             int Nth,
     549             :             const Range2T& Format,
     550             :             const std::locale& Loc=std::locale() )
     551             :         {
     552             :             return ::boost::algorithm::find_format_copy( 
     553             :                 Input,
     554             :                 ::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc)),
     555             :                 ::boost::algorithm::const_formatter(Format) );
     556             :         }
     557             : 
     558             :         //! Replace nth algorithm ( case insensitive )
     559             :         /*!
     560             :             Replace an Nth (zero-indexed) match of the search string in the input 
     561             :             with the format string. Input sequence is modified in-place.
     562             :             Searching is case insensitive.
     563             : 
     564             :             \param Input An input string
     565             :             \param Search A substring to be searched for 
     566             :             \param Nth An index of the match to be replaced. The index is 0-based.
     567             :                 For negative N, matches are counted from the end of string.
     568             :             \param Format A substitute string
     569             :             \param Loc A locale used for case insensitive comparison
     570             :         */
     571             :         template<typename SequenceT, typename Range1T, typename Range2T>
     572             :         inline void ireplace_nth( 
     573             :             SequenceT& Input,
     574             :             const Range1T& Search,
     575             :             int Nth,
     576             :             const Range2T& Format,
     577             :             const std::locale& Loc=std::locale() )
     578             :         {
     579             :             ::boost::algorithm::find_format( 
     580             :                 Input, 
     581             :                 ::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc)),
     582             :                 ::boost::algorithm::const_formatter(Format) );
     583             :         }
     584             : 
     585             : //  replace_all --------------------------------------------------------------------//
     586             : 
     587             :         //! Replace all algorithm
     588             :         /*!
     589             :             Replace all occurrences of the search string in the input 
     590             :             with the format string. 
     591             :             The result is a modified copy of the input. It is returned as a sequence 
     592             :             or copied to the output iterator.
     593             : 
     594             :             \param Output An output iterator to which the result will be copied
     595             :             \param Input An input string
     596             :             \param Search A substring to be searched for 
     597             :             \param Format A substitute string
     598             :             \return An output iterator pointing just after the last inserted character or
     599             :                     a modified copy of the input 
     600             : 
     601             :              \note The second variant of this function provides the strong exception-safety guarantee
     602             :         */
     603             :         template<
     604             :             typename OutputIteratorT,
     605             :             typename Range1T, 
     606             :             typename Range2T,
     607             :             typename Range3T>
     608             :         inline OutputIteratorT replace_all_copy(
     609             :             OutputIteratorT Output,
     610             :             const Range1T& Input,
     611             :             const Range2T& Search,
     612             :             const Range3T& Format )
     613             :         {
     614             :             return ::boost::algorithm::find_format_all_copy(
     615             :                 Output,
     616             :                 Input,
     617             :                 ::boost::algorithm::first_finder(Search),
     618             :                 ::boost::algorithm::const_formatter(Format) );
     619             :         }
     620             : 
     621             :         //! Replace all algorithm
     622             :         /*!
     623             :             \overload
     624             :         */
     625             :         template<typename SequenceT, typename Range1T, typename Range2T>
     626         562 :         inline SequenceT replace_all_copy( 
     627             :             const SequenceT& Input,
     628             :             const Range1T& Search,
     629             :             const Range2T& Format )
     630             :         {
     631             :             return ::boost::algorithm::find_format_all_copy( 
     632             :                 Input,
     633             :                 ::boost::algorithm::first_finder(Search),
     634         562 :                 ::boost::algorithm::const_formatter(Format) );
     635             :         }
     636             : 
     637             :         //! Replace all algorithm
     638             :         /*!
     639             :             Replace all occurrences of the search string in the input 
     640             :             with the format string. The input sequence is modified in-place.
     641             : 
     642             :             \param Input An input string
     643             :             \param Search A substring to be searched for 
     644             :             \param Format A substitute string
     645             :         */
     646             :         template<typename SequenceT, typename Range1T, typename Range2T>
     647           0 :         inline void replace_all( 
     648             :             SequenceT& Input,
     649             :             const Range1T& Search,
     650             :             const Range2T& Format )
     651             :         {
     652           0 :             ::boost::algorithm::find_format_all( 
     653             :                 Input, 
     654             :                 ::boost::algorithm::first_finder(Search),
     655             :                 ::boost::algorithm::const_formatter(Format) );
     656           0 :         }
     657             :         
     658             : //  replace_all ( case insensitive ) -----------------------------------------------//
     659             : 
     660             :         //! Replace all algorithm ( case insensitive )
     661             :         /*!
     662             :             Replace all occurrences of the search string in the input 
     663             :             with the format string. 
     664             :             The result is a modified copy of the input. It is returned as a sequence 
     665             :             or copied to the output iterator.
     666             :             Searching is case insensitive.
     667             : 
     668             :             \param Output An output iterator to which the result will be copied
     669             :             \param Input An input string
     670             :             \param Search A substring to be searched for 
     671             :             \param Format A substitute string
     672             :             \param Loc A locale used for case insensitive comparison
     673             :             \return An output iterator pointing just after the last inserted character or
     674             :                     a modified copy of the input 
     675             : 
     676             :             \note The second variant of this function provides the strong exception-safety guarantee
     677             :         */
     678             :         template<
     679             :             typename OutputIteratorT,
     680             :             typename Range1T, 
     681             :             typename Range2T,
     682             :             typename Range3T>
     683             :         inline OutputIteratorT ireplace_all_copy(
     684             :             OutputIteratorT Output,
     685             :             const Range1T& Input,
     686             :             const Range2T& Search,
     687             :             const Range3T& Format,
     688             :             const std::locale& Loc=std::locale() )
     689             :         {
     690             :             return ::boost::algorithm::find_format_all_copy(
     691             :                 Output,
     692             :                 Input,
     693             :                 ::boost::algorithm::first_finder(Search, is_iequal(Loc)),
     694             :                 ::boost::algorithm::const_formatter(Format) );
     695             :         }
     696             : 
     697             :         //! Replace all algorithm ( case insensitive )
     698             :         /*!
     699             :             \overload
     700             :         */
     701             :         template<typename SequenceT, typename Range1T, typename Range2T>
     702             :         inline SequenceT ireplace_all_copy( 
     703             :             const SequenceT& Input,
     704             :             const Range1T& Search,
     705             :             const Range2T& Format,
     706             :             const std::locale& Loc=std::locale() )
     707             :         {
     708             :             return ::boost::algorithm::find_format_all_copy( 
     709             :                 Input,
     710             :                 ::boost::algorithm::first_finder(Search, is_iequal(Loc)),
     711             :                 ::boost::algorithm::const_formatter(Format) );
     712             :         }
     713             : 
     714             :         //! Replace all algorithm ( case insensitive )
     715             :         /*!
     716             :             Replace all occurrences of the search string in the input 
     717             :             with the format string.The input sequence is modified in-place.
     718             :             Searching is case insensitive.
     719             : 
     720             :             \param Input An input string
     721             :             \param Search A substring to be searched for 
     722             :             \param Format A substitute string
     723             :             \param Loc A locale used for case insensitive comparison
     724             :         */
     725             :         template<typename SequenceT, typename Range1T, typename Range2T>
     726             :         inline void ireplace_all( 
     727             :             SequenceT& Input,
     728             :             const Range1T& Search,
     729             :             const Range2T& Format,
     730             :             const std::locale& Loc=std::locale() )
     731             :         {
     732             :             ::boost::algorithm::find_format_all( 
     733             :                 Input, 
     734             :                 ::boost::algorithm::first_finder(Search, is_iequal(Loc)),
     735             :                 ::boost::algorithm::const_formatter(Format) );
     736             :         }
     737             :         
     738             : //  replace_head --------------------------------------------------------------------//
     739             : 
     740             :         //! Replace head algorithm
     741             :         /*!
     742             :             Replace the head of the input with the given format string. 
     743             :             The head is a prefix of a string of given size. 
     744             :             If the sequence is shorter then required, whole string if 
     745             :             considered to be the head. 
     746             :             The result is a modified copy of the input. It is returned as a sequence 
     747             :             or copied to the output iterator.
     748             :             
     749             :             \param Output An output iterator to which the result will be copied
     750             :             \param Input An input string
     751             :             \param N Length of the head.
     752             :                 For N>=0, at most N characters are extracted.
     753             :                 For N<0, size(Input)-|N| characters are extracted.
     754             :             \param Format A substitute string
     755             :             \return An output iterator pointing just after the last inserted character or
     756             :                 a modified copy of the input  
     757             : 
     758             :             \note The second variant of this function provides the strong exception-safety guarantee
     759             :         */
     760             :         template<
     761             :             typename OutputIteratorT,
     762             :             typename Range1T, 
     763             :             typename Range2T>
     764             :         inline OutputIteratorT replace_head_copy(
     765             :             OutputIteratorT Output,
     766             :             const Range1T& Input,
     767             :             int N,
     768             :             const Range2T& Format )
     769             :         {
     770             :             return ::boost::algorithm::find_format_copy(
     771             :                 Output,
     772             :                 Input,
     773             :                 ::boost::algorithm::head_finder(N),
     774             :                 ::boost::algorithm::const_formatter(Format) );
     775             :         }
     776             : 
     777             :         //! Replace head algorithm
     778             :         /*!
     779             :             \overload
     780             :         */
     781             :         template<typename SequenceT, typename RangeT>
     782             :         inline SequenceT replace_head_copy( 
     783             :             const SequenceT& Input,
     784             :             int N,
     785             :             const RangeT& Format )
     786             :         {
     787             :             return ::boost::algorithm::find_format_copy( 
     788             :                 Input,
     789             :                 ::boost::algorithm::head_finder(N),
     790             :                 ::boost::algorithm::const_formatter(Format) );
     791             :         }
     792             : 
     793             :         //! Replace head algorithm
     794             :         /*!
     795             :             Replace the head of the input with the given format string. 
     796             :             The head is a prefix of a string of given size. 
     797             :             If the sequence is shorter then required, the whole string is 
     798             :             considered to be the head. The input sequence is modified in-place.
     799             : 
     800             :             \param Input An input string
     801             :             \param N Length of the head.
     802             :                 For N>=0, at most N characters are extracted.
     803             :                 For N<0, size(Input)-|N| characters are extracted.
     804             :             \param Format A substitute string
     805             :         */
     806             :         template<typename SequenceT, typename RangeT>
     807             :         inline void replace_head( 
     808             :             SequenceT& Input,
     809             :             int N,
     810             :             const RangeT& Format )
     811             :         {
     812             :             ::boost::algorithm::find_format( 
     813             :                 Input, 
     814             :                 ::boost::algorithm::head_finder(N),
     815             :                 ::boost::algorithm::const_formatter(Format) );
     816             :         }
     817             : 
     818             : //  replace_tail --------------------------------------------------------------------//
     819             : 
     820             :         //! Replace tail algorithm
     821             :         /*!
     822             :             Replace the tail of the input with the given format string. 
     823             :             The tail is a suffix of a string of given size. 
     824             :             If the sequence is shorter then required, whole string is 
     825             :             considered to be the tail. 
     826             :             The result is a modified copy of the input. It is returned as a sequence 
     827             :             or copied to the output iterator.
     828             : 
     829             :             \param Output An output iterator to which the result will be copied
     830             :             \param Input An input string
     831             :             \param N Length of the tail.
     832             :                 For N>=0, at most N characters are extracted.
     833             :                 For N<0, size(Input)-|N| characters are extracted.
     834             :             \param Format A substitute string
     835             :             \return An output iterator pointing just after the last inserted character or
     836             :                     a modified copy of the input   
     837             : 
     838             :               \note The second variant of this function provides the strong exception-safety guarantee
     839             :         */
     840             :         template<
     841             :             typename OutputIteratorT,
     842             :             typename Range1T, 
     843             :             typename Range2T>
     844             :         inline OutputIteratorT replace_tail_copy(
     845             :             OutputIteratorT Output,
     846             :             const Range1T& Input,
     847             :             int N,
     848             :             const Range2T& Format )
     849             :         {
     850             :             return ::boost::algorithm::find_format_copy(
     851             :                 Output,
     852             :                 Input,
     853             :                 ::boost::algorithm::tail_finder(N),
     854             :                 ::boost::algorithm::const_formatter(Format) );
     855             :         }
     856             : 
     857             :         //! Replace tail algorithm
     858             :         /*!
     859             :             \overload
     860             :         */
     861             :         template<typename SequenceT, typename RangeT>
     862           0 :         inline SequenceT replace_tail_copy( 
     863             :             const SequenceT& Input,
     864             :             int N,
     865             :             const RangeT& Format )
     866             :         {
     867             :             return ::boost::algorithm::find_format_copy( 
     868             :                 Input,
     869             :                 ::boost::algorithm::tail_finder(N),
     870           0 :                 ::boost::algorithm::const_formatter(Format) );
     871             :         }
     872             : 
     873             :         //! Replace tail algorithm
     874             :         /*!
     875             :             Replace the tail of the input with the given format sequence. 
     876             :             The tail is a suffix of a string of given size. 
     877             :             If the sequence is shorter then required, the whole string is 
     878             :             considered to be the tail. The input sequence is modified in-place.
     879             : 
     880             :             \param Input An input string
     881             :             \param N Length of the tail.
     882             :                 For N>=0, at most N characters are extracted.
     883             :                 For N<0, size(Input)-|N| characters are extracted.
     884             :             \param Format A substitute string
     885             :         */
     886             :         template<typename SequenceT, typename RangeT>
     887             :         inline void replace_tail( 
     888             :             SequenceT& Input,
     889             :             int N,
     890             :             const RangeT& Format )
     891             :         {
     892             :             ::boost::algorithm::find_format( 
     893             :                 Input, 
     894             :                 ::boost::algorithm::tail_finder(N),
     895             :                 ::boost::algorithm::const_formatter(Format) );
     896             :         }
     897             : 
     898             :     } // namespace algorithm
     899             : 
     900             :     // pull names to the boost namespace
     901             :     using algorithm::replace_range_copy;
     902             :     using algorithm::replace_range;
     903             :     using algorithm::replace_first_copy;
     904             :     using algorithm::replace_first;
     905             :     using algorithm::ireplace_first_copy;
     906             :     using algorithm::ireplace_first;
     907             :     using algorithm::replace_last_copy;
     908             :     using algorithm::replace_last;
     909             :     using algorithm::ireplace_last_copy;
     910             :     using algorithm::ireplace_last;
     911             :     using algorithm::replace_nth_copy;
     912             :     using algorithm::replace_nth;
     913             :     using algorithm::ireplace_nth_copy;
     914             :     using algorithm::ireplace_nth;
     915             :     using algorithm::replace_all_copy;
     916             :     using algorithm::replace_all;
     917             :     using algorithm::ireplace_all_copy;
     918             :     using algorithm::ireplace_all;
     919             :     using algorithm::replace_head_copy;
     920             :     using algorithm::replace_head;
     921             :     using algorithm::replace_tail_copy;
     922             :     using algorithm::replace_tail;
     923             : 
     924             : } // namespace boost
     925             : 
     926             : #endif  // BOOST_REPLACE_HPP

Generated by: LCOV version 1.14