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

          Line data    Source code
       1             : //  Boost string_algo library find.hpp header file  ---------------------------//
       2             : 
       3             : //  Copyright Pavol Droba 2002-2003.
       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_FIND_HPP
      12             : #define BOOST_STRING_FIND_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/as_literal.hpp>
      21             : 
      22             : #include <boost/algorithm/string/finder.hpp>
      23             : #include <boost/algorithm/string/compare.hpp>
      24             : #include <boost/algorithm/string/constants.hpp>
      25             : 
      26             : /*! \file
      27             :     Defines a set of find algorithms. The algorithms are searching
      28             :     for a substring of the input. The result is given as an \c iterator_range
      29             :     delimiting the substring.
      30             : */
      31             : 
      32             : namespace boost {
      33             :     namespace algorithm {
      34             : 
      35             : //  Generic find -----------------------------------------------//
      36             : 
      37             :         //! Generic find algorithm
      38             :         /*!
      39             :             Search the input using the given finder.
      40             : 
      41             :             \param Input A string which will be searched.
      42             :             \param Finder Finder object used for searching.
      43             :             \return 
      44             :                 An \c iterator_range delimiting the match. 
      45             :                 Returned iterator is either \c RangeT::iterator or 
      46             :                 \c RangeT::const_iterator, depending on the constness of 
      47             :                 the input parameter.
      48             :         */
      49             :         template<typename RangeT, typename FinderT>
      50             :         inline iterator_range< 
      51             :             BOOST_STRING_TYPENAME range_iterator<RangeT>::type>
      52           0 :         find( 
      53             :             RangeT& Input, 
      54             :             const FinderT& Finder)
      55             :         {
      56           0 :             iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_input(::boost::as_literal(Input));
      57             : 
      58           0 :             return Finder(::boost::begin(lit_input),::boost::end(lit_input));
      59             :         }
      60             : 
      61             : //  find_first  -----------------------------------------------//
      62             : 
      63             :         //! Find first algorithm
      64             :         /*!
      65             :             Search for the first occurrence of the substring in the input. 
      66             :             
      67             :             \param Input A string which will be searched.
      68             :             \param Search A substring to be searched for.
      69             :             \return 
      70             :                 An \c iterator_range delimiting the match. 
      71             :                 Returned iterator is either \c RangeT::iterator or 
      72             :                 \c RangeT::const_iterator, depending on the constness of 
      73             :                 the input parameter.
      74             : 
      75             :               \note This function provides the strong exception-safety guarantee
      76             :         */
      77             :         template<typename Range1T, typename Range2T>
      78             :         inline iterator_range< 
      79             :             BOOST_STRING_TYPENAME range_iterator<Range1T>::type>
      80             :         find_first( 
      81             :             Range1T& Input, 
      82             :             const Range2T& Search)
      83             :         {
      84             :             return ::boost::algorithm::find(Input, ::boost::algorithm::first_finder(Search));
      85             :         }
      86             : 
      87             :         //! Find first algorithm ( case insensitive )
      88             :         /*!
      89             :             Search for the first occurrence of the substring in the input. 
      90             :             Searching is case insensitive.
      91             :             
      92             :             \param Input A string which will be searched.
      93             :             \param Search A substring to be searched for.
      94             :             \param Loc A locale used for case insensitive comparison
      95             :             \return 
      96             :                 An \c iterator_range delimiting the match. 
      97             :                 Returned iterator is either \c Range1T::iterator or 
      98             :                 \c Range1T::const_iterator, depending on the constness of 
      99             :                 the input parameter.
     100             : 
     101             :             \note This function provides the strong exception-safety guarantee
     102             :         */
     103             :         template<typename Range1T, typename Range2T>
     104             :         inline iterator_range< 
     105             :             BOOST_STRING_TYPENAME range_iterator<Range1T>::type>
     106             :         ifind_first( 
     107             :             Range1T& Input, 
     108             :             const Range2T& Search,
     109             :             const std::locale& Loc=std::locale())
     110             :         {
     111             :             return ::boost::algorithm::find(Input, ::boost::algorithm::first_finder(Search,is_iequal(Loc)));
     112             :         }
     113             : 
     114             : //  find_last  -----------------------------------------------//
     115             : 
     116             :         //! Find last algorithm
     117             :         /*!
     118             :             Search for the last occurrence of the substring in the input. 
     119             :             
     120             :             \param Input A string which will be searched.
     121             :             \param Search A substring to be searched for.
     122             :             \return 
     123             :                 An \c iterator_range delimiting the match. 
     124             :                 Returned iterator is either \c Range1T::iterator or 
     125             :                 \c Range1T::const_iterator, depending on the constness of 
     126             :                 the input parameter.
     127             : 
     128             :             \note This function provides the strong exception-safety guarantee
     129             :         */
     130             :         template<typename Range1T, typename Range2T>
     131             :         inline iterator_range< 
     132             :             BOOST_STRING_TYPENAME range_iterator<Range1T>::type>
     133             :         find_last( 
     134             :             Range1T& Input, 
     135             :             const Range2T& Search)
     136             :         {
     137             :             return ::boost::algorithm::find(Input, ::boost::algorithm::last_finder(Search));
     138             :         }
     139             : 
     140             :         //! Find last algorithm ( case insensitive )
     141             :         /*!
     142             :             Search for the last match a string in the input. 
     143             :             Searching is case insensitive.
     144             :             
     145             :             \param Input A string which will be searched.
     146             :             \param Search A substring to be searched for.
     147             :             \param Loc A locale used for case insensitive comparison
     148             :             \return 
     149             :                 An \c iterator_range delimiting the match. 
     150             :                 Returned iterator is either \c Range1T::iterator or 
     151             :                 \c Range1T::const_iterator, depending on the constness of 
     152             :                 the input parameter.
     153             :         
     154             :             \note This function provides the strong exception-safety guarantee    
     155             :         */
     156             :         template<typename Range1T, typename Range2T>
     157             :         inline iterator_range< 
     158             :             BOOST_STRING_TYPENAME range_iterator<Range1T>::type>
     159             :         ifind_last( 
     160             :             Range1T& Input, 
     161             :             const Range2T& Search,
     162             :             const std::locale& Loc=std::locale())
     163             :         {
     164             :             return ::boost::algorithm::find(Input, ::boost::algorithm::last_finder(Search, is_iequal(Loc)));
     165             :         }
     166             : 
     167             : //  find_nth ----------------------------------------------------------------------//
     168             : 
     169             :         //! Find n-th algorithm 
     170             :         /*!
     171             :             Search for the n-th (zero-indexed) occurrence of the substring in the 
     172             :             input.         
     173             :             
     174             :             \param Input A string which will be searched.
     175             :             \param Search A substring to be searched for.
     176             :             \param Nth An index (zero-indexed) of the match to be found.
     177             :                 For negative N, the matches are counted from the end of string.
     178             :             \return 
     179             :                 An \c iterator_range delimiting the match. 
     180             :                 Returned iterator is either \c Range1T::iterator or 
     181             :                 \c Range1T::const_iterator, depending on the constness of 
     182             :                 the input parameter.
     183             :         */
     184             :         template<typename Range1T, typename Range2T>
     185             :         inline iterator_range< 
     186             :             BOOST_STRING_TYPENAME range_iterator<Range1T>::type>
     187             :         find_nth( 
     188             :             Range1T& Input, 
     189             :             const Range2T& Search,
     190             :             int Nth)
     191             :         {
     192             :             return ::boost::algorithm::find(Input, ::boost::algorithm::nth_finder(Search,Nth));
     193             :         }
     194             : 
     195             :         //! Find n-th algorithm ( case insensitive ).
     196             :         /*!
     197             :             Search for the n-th (zero-indexed) occurrence of the substring in the 
     198             :             input. Searching is case insensitive.
     199             :             
     200             :             \param Input A string which will be searched.
     201             :             \param Search A substring to be searched for.
     202             :             \param Nth An index (zero-indexed) of the match to be found. 
     203             :                 For negative N, the matches are counted from the end of string.
     204             :             \param Loc A locale used for case insensitive comparison
     205             :             \return 
     206             :                 An \c iterator_range delimiting the match. 
     207             :                 Returned iterator is either \c Range1T::iterator or 
     208             :                 \c Range1T::const_iterator, depending on the constness of 
     209             :                 the input parameter.
     210             : 
     211             : 
     212             :             \note This function provides the strong exception-safety guarantee
     213             :         */
     214             :         template<typename Range1T, typename Range2T>
     215             :         inline iterator_range< 
     216             :             BOOST_STRING_TYPENAME range_iterator<Range1T>::type>
     217             :         ifind_nth( 
     218             :             Range1T& Input, 
     219             :             const Range2T& Search,
     220             :             int Nth,
     221             :             const std::locale& Loc=std::locale())
     222             :         {
     223             :             return ::boost::algorithm::find(Input, ::boost::algorithm::nth_finder(Search,Nth,is_iequal(Loc)));
     224             :         }
     225             : 
     226             : //  find_head ----------------------------------------------------------------------//
     227             : 
     228             :         //! Find head algorithm
     229             :         /*!
     230             :             Get the head of the input. Head is a prefix of the string of the 
     231             :             given size. If the input is shorter then required, whole input is considered 
     232             :             to be the head.
     233             : 
     234             :             \param Input An input string
     235             :             \param N Length of the head
     236             :                 For N>=0, at most N characters are extracted.
     237             :                 For N<0, at most size(Input)-|N| characters are extracted.
     238             :             \return 
     239             :                 An \c iterator_range delimiting the match. 
     240             :                 Returned iterator is either \c Range1T::iterator or 
     241             :                 \c Range1T::const_iterator, depending on the constness of 
     242             :                 the input parameter.
     243             : 
     244             :             \note This function provides the strong exception-safety guarantee
     245             :         */
     246             :         template<typename RangeT>
     247             :         inline iterator_range< 
     248             :             BOOST_STRING_TYPENAME range_iterator<RangeT>::type>
     249             :         find_head( 
     250             :             RangeT& Input, 
     251             :             int N)
     252             :         {
     253             :             return ::boost::algorithm::find(Input, ::boost::algorithm::head_finder(N));
     254             :         }
     255             : 
     256             : //  find_tail ----------------------------------------------------------------------//
     257             : 
     258             :         //! Find tail algorithm
     259             :         /*!
     260             :             Get the tail of the input. Tail is a suffix of the string of the 
     261             :             given size. If the input is shorter then required, whole input is considered 
     262             :             to be the tail.
     263             : 
     264             :             \param Input An input string
     265             :             \param N Length of the tail. 
     266             :                 For N>=0, at most N characters are extracted.
     267             :                 For N<0, at most size(Input)-|N| characters are extracted.
     268             :             \return 
     269             :                 An \c iterator_range delimiting the match. 
     270             :                 Returned iterator is either \c RangeT::iterator or 
     271             :                 \c RangeT::const_iterator, depending on the constness of 
     272             :                 the input parameter.
     273             : 
     274             : 
     275             :             \note This function provides the strong exception-safety guarantee
     276             :         */
     277             :         template<typename RangeT>
     278             :         inline iterator_range< 
     279             :             BOOST_STRING_TYPENAME range_iterator<RangeT>::type>
     280             :         find_tail( 
     281             :             RangeT& Input, 
     282             :             int N)
     283             :         {
     284             :             return ::boost::algorithm::find(Input, ::boost::algorithm::tail_finder(N));
     285             :         }
     286             : 
     287             : //  find_token --------------------------------------------------------------------//
     288             : 
     289             :         //! Find token algorithm
     290             :         /*!
     291             :             Look for a given token in the string. Token is a character that matches the
     292             :             given predicate.
     293             :             If the "token compress mode" is enabled, adjacent tokens are considered to be one match.
     294             :             
     295             :             \param Input A input string.
     296             :             \param Pred A unary predicate to identify a token
     297             :             \param eCompress Enable/Disable compressing of adjacent tokens
     298             :             \return 
     299             :                 An \c iterator_range delimiting the match. 
     300             :                 Returned iterator is either \c RangeT::iterator or 
     301             :                 \c RangeT::const_iterator, depending on the constness of 
     302             :                 the input parameter.
     303             :         
     304             :             \note This function provides the strong exception-safety guarantee    
     305             :         */
     306             :         template<typename RangeT, typename PredicateT>
     307             :         inline iterator_range< 
     308             :             BOOST_STRING_TYPENAME range_iterator<RangeT>::type>
     309           0 :         find_token( 
     310             :             RangeT& Input,
     311             :             PredicateT Pred,
     312             :             token_compress_mode_type eCompress=token_compress_off)
     313             :         {
     314           0 :             return ::boost::algorithm::find(Input, ::boost::algorithm::token_finder(Pred, eCompress));
     315             :         }
     316             : 
     317             :     } // namespace algorithm
     318             : 
     319             :     // pull names to the boost namespace
     320             :     using algorithm::find;
     321             :     using algorithm::find_first;
     322             :     using algorithm::ifind_first;
     323             :     using algorithm::find_last;
     324             :     using algorithm::ifind_last;
     325             :     using algorithm::find_nth;
     326             :     using algorithm::ifind_nth;
     327             :     using algorithm::find_head;
     328             :     using algorithm::find_tail;
     329             :     using algorithm::find_token;
     330             : 
     331             : } // namespace boost
     332             : 
     333             : 
     334             : #endif  // BOOST_STRING_FIND_HPP

Generated by: LCOV version 1.14