/usr/include/boost/algorithm/string
NameSizeModeActions
detail/-0755rm
std/-0755rm
case_conv.hpp61690644editdlrm
classification.hpp116420644editdlrm
compare.hpp63910644editdlrm
concept.hpp23440644editdlrm
config.hpp7900644editdlrm
constants.hpp9990644editdlrm
erase.hpp318130644editdlrm
find.hpp130710644editdlrm
finder.hpp93860644editdlrm
find_format.hpp102430644editdlrm
find_iterator.hpp122090644editdlrm
formatter.hpp42230644editdlrm
iter_find.hpp75130644editdlrm
join.hpp50460644editdlrm
predicate.hpp173590644editdlrm
predicate_facade.hpp13220644editdlrm
regex.hpp249660644editdlrm
regex_find_format.hpp32040644editdlrm
replace.hpp359470644editdlrm
sequence_traits.hpp38920644editdlrm
split.hpp68380644editdlrm
std_containers_traits.hpp8360644editdlrm
trim.hpp141890644editdlrm
trim_all.hpp82130644editdlrm
yes_no_type.hpp9990644editdlrm
Edit: /usr/include/boost/algorithm/string/predicate.hpp (17359B)
// Boost string_algo library predicate.hpp header file ---------------------------// // Copyright Pavol Droba 2002-2003. // // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // See http://www.boost.org/ for updates, documentation, and revision history. #ifndef BOOST_STRING_PREDICATE_HPP #define BOOST_STRING_PREDICATE_HPP #include #include #include #include #include #include #include #include #include #include #include /*! \file boost/algorithm/string/predicate.hpp Defines string-related predicates. The predicates determine whether a substring is contained in the input string under various conditions: a string starts with the substring, ends with the substring, simply contains the substring or if both strings are equal. Additionaly the algorithm \c all() checks all elements of a container to satisfy a condition. All predicates provide the strong exception guarantee. */ namespace boost { namespace algorithm { // starts_with predicate -----------------------------------------------// //! 'Starts with' predicate /*! This predicate holds when the test string is a prefix of the Input. In other words, if the input starts with the test. When the optional predicate is specified, it is used for character-wise comparison. \param Input An input sequence \param Test A test sequence \param Comp An element comparison predicate \return The result of the test \note This function provides the strong exception-safety guarantee */ template inline bool starts_with( const Range1T& Input, const Range2T& Test, PredicateT Comp) { iterator_range::type> lit_input(::boost::as_literal(Input)); iterator_range::type> lit_test(::boost::as_literal(Test)); typedef BOOST_STRING_TYPENAME range_const_iterator::type Iterator1T; typedef BOOST_STRING_TYPENAME range_const_iterator::type Iterator2T; Iterator1T InputEnd=::boost::end(lit_input); Iterator2T TestEnd=::boost::end(lit_test); Iterator1T it=::boost::begin(lit_input); Iterator2T pit=::boost::begin(lit_test); for(; it!=InputEnd && pit!=TestEnd; ++it,++pit) { if( !(Comp(*it,*pit)) ) return false; } return pit==TestEnd; } //! 'Starts with' predicate /*! \overload */ template inline bool starts_with( const Range1T& Input, const Range2T& Test) { return ::boost::algorithm::starts_with(Input, Test, is_equal()); } //! 'Starts with' predicate ( case insensitive ) /*! This predicate holds when the test string is a prefix of the Input. In other words, if the input starts with the test. Elements are compared case insensitively. \param Input An input sequence \param Test A test sequence \param Loc A locale used for case insensitive comparison \return The result of the test \note This function provides the strong exception-safety guarantee */ template inline bool istarts_with( const Range1T& Input, const Range2T& Test, const std::locale& Loc=std::locale()) { return ::boost::algorithm::starts_with(Input, Test, is_iequal(Loc)); } // ends_with predicate -----------------------------------------------// //! 'Ends with' predicate /*! This predicate holds when the test string is a suffix of the Input. In other words, if the input ends with the test. When the optional predicate is specified, it is used for character-wise comparison. \param Input An input sequence \param Test A test sequence \param Comp An element comparison predicate \return The result of the test \note This function provides the strong exception-safety guarantee */ template inline bool ends_with( const Range1T& Input, const Range2T& Test, PredicateT Comp) { iterator_range::type> lit_input(::boost::as_literal(Input)); iterator_range::type> lit_test(::boost::as_literal(Test)); typedef BOOST_STRING_TYPENAME range_const_iterator::type Iterator1T; typedef BOOST_STRING_TYPENAME std::iterator_traits::iterator_category category; return detail:: ends_with_iter_select( ::boost::begin(lit_input), ::boost::end(lit_input), ::boost::begin(lit_test), ::boost::end(lit_test), Comp, category()); } //! 'Ends with' predicate /*! \overload */ template inline bool ends_with( const Range1T& Input, const Range2T& Test) { return ::boost::algorithm::ends_with(Input, Test, is_equal()); } //! 'Ends with' predicate ( case insensitive ) /*! This predicate holds when the test container is a suffix of the Input. In other words, if the input ends with the test. Elements are compared case insensitively. \param Input An input sequence \param Test A test sequence \param Loc A locale used for case insensitive comparison \return The result of the test \note This function provides the strong exception-safety guarantee */ template inline bool iends_with( const Range1T& Input, const Range2T& Test, const std::locale& Loc=std::locale()) { return ::boost::algorithm::ends_with(Input, Test, is_iequal(Loc)); } // contains predicate -----------------------------------------------// //! 'Contains' predicate /*! This predicate holds when the test container is contained in the Input. When the optional predicate is specified, it is used for character-wise comparison. \param Input An input sequence \param Test A test sequence \param Comp An element comparison predicate \return The result of the test \note This function provides the strong exception-safety guarantee */ template inline bool contains( const Range1T& Input, const Range2T& Test, PredicateT Comp) { iterator_range::type> lit_input(::boost::as_literal(Input)); iterator_range::type> lit_test(::boost::as_literal(Test)); if (::boost::empty(lit_test)) { // Empty range is contained always return true; } // Use the temporary variable to make VACPP happy bool bResult=(::boost::algorithm::first_finder(lit_test,Comp)(::boost::begin(lit_input), ::boost::end(lit_input))); return bResult; } //! 'Contains' predicate /*! \overload */ template inline bool contains( const Range1T& Input, const Range2T& Test) { return ::boost::algorithm::contains(Input, Test, is_equal()); } //! 'Contains' predicate ( case insensitive ) /*! This predicate holds when the test container is contained in the Input. Elements are compared case insensitively. \param Input An input sequence \param Test A test sequence \param Loc A locale used for case insensitive comparison \return The result of the test \note This function provides the strong exception-safety guarantee */ template inline bool icontains( const Range1T& Input, const Range2T& Test, const std::locale& Loc=std::locale()) { return ::boost::algorithm::contains(Input, Test, is_iequal(Loc)); } // equals predicate -----------------------------------------------// //! 'Equals' predicate /*! This predicate holds when the test container is equal to the input container i.e. all elements in both containers are same. When the optional predicate is specified, it is used for character-wise comparison. \param Input An input sequence \param Test A test sequence \param Comp An element comparison predicate \return The result of the test \note This is a two-way version of \c std::equal algorithm \note This function provides the strong exception-safety guarantee */ template inline bool equals( const Range1T& Input, const Range2T& Test, PredicateT Comp) { iterator_range::type> lit_input(::boost::as_literal(Input)); iterator_range::type> lit_test(::boost::as_literal(Test)); typedef BOOST_STRING_TYPENAME range_const_iterator::type Iterator1T; typedef BOOST_STRING_TYPENAME range_const_iterator::type Iterator2T; Iterator1T InputEnd=::boost::end(lit_input); Iterator2T TestEnd=::boost::end(lit_test); Iterator1T it=::boost::begin(lit_input); Iterator2T pit=::boost::begin(lit_test); for(; it!=InputEnd && pit!=TestEnd; ++it,++pit) { if( !(Comp(*it,*pit)) ) return false; } return (pit==TestEnd) && (it==InputEnd); } //! 'Equals' predicate /*! \overload */ template inline bool equals( const Range1T& Input, const Range2T& Test) { return ::boost::algorithm::equals(Input, Test, is_equal()); } //! 'Equals' predicate ( case insensitive ) /*! This predicate holds when the test container is equal to the input container i.e. all elements in both containers are same. Elements are compared case insensitively. \param Input An input sequence \param Test A test sequence \param Loc A locale used for case insensitive comparison \return The result of the test \note This is a two-way version of \c std::equal algorithm \note This function provides the strong exception-safety guarantee */ template inline bool iequals( const Range1T& Input, const Range2T& Test, const std::locale& Loc=std::locale()) { return ::boost::algorithm::equals(Input, Test, is_iequal(Loc)); } // lexicographical_compare predicate -----------------------------// //! Lexicographical compare predicate /*! This predicate is an overload of std::lexicographical_compare for range arguments It check whether the first argument is lexicographically less then the second one. If the optional predicate is specified, it is used for character-wise comparison \param Arg1 First argument \param Arg2 Second argument \param Pred Comparison predicate \return The result of the test \note This function provides the strong exception-safety guarantee */ template inline bool lexicographical_compare( const Range1T& Arg1, const Range2T& Arg2, PredicateT Pred) { iterator_range::type> lit_arg1(::boost::as_literal(Arg1)); iterator_range::type> lit_arg2(::boost::as_literal(Arg2)); return std::lexicographical_compare( ::boost::begin(lit_arg1), ::boost::end(lit_arg1), ::boost::begin(lit_arg2), ::boost::end(lit_arg2), Pred); } //! Lexicographical compare predicate /*! \overload */ template inline bool lexicographical_compare( const Range1T& Arg1, const Range2T& Arg2) { return ::boost::algorithm::lexicographical_compare(Arg1, Arg2, is_less()); } //! Lexicographical compare predicate (case-insensitive) /*! This predicate is an overload of std::lexicographical_compare for range arguments. It check whether the first argument is lexicographically less then the second one. Elements are compared case insensitively \param Arg1 First argument \param Arg2 Second argument \param Loc A locale used for case insensitive comparison \return The result of the test \note This function provides the strong exception-safety guarantee */ template inline bool ilexicographical_compare( const Range1T& Arg1, const Range2T& Arg2, const std::locale& Loc=std::locale()) { return ::boost::algorithm::lexicographical_compare(Arg1, Arg2, is_iless(Loc)); } // all predicate -----------------------------------------------// //! 'All' predicate /*! This predicate holds it all its elements satisfy a given condition, represented by the predicate. \param Input An input sequence \param Pred A predicate \return The result of the test \note This function provides the strong exception-safety guarantee */ template inline bool all( const RangeT& Input, PredicateT Pred) { iterator_range::type> lit_input(::boost::as_literal(Input)); typedef BOOST_STRING_TYPENAME range_const_iterator::type Iterator1T; Iterator1T InputEnd=::boost::end(lit_input); for( Iterator1T It=::boost::begin(lit_input); It!=InputEnd; ++It) { if (!Pred(*It)) return false; } return true; } } // namespace algorithm // pull names to the boost namespace using algorithm::starts_with; using algorithm::istarts_with; using algorithm::ends_with; using algorithm::iends_with; using algorithm::contains; using algorithm::icontains; using algorithm::equals; using algorithm::iequals; using algorithm::all; using algorithm::lexicographical_compare; using algorithm::ilexicographical_compare; } // namespace boost #endif // BOOST_STRING_PREDICATE_HPP