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

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

Generated by: LCOV version 1.14