// Boost string_algo library case_conv.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_CASE_CONV_HPP #define BOOST_STRING_CASE_CONV_HPP #include #include #include #include #include #include #include #include #include /*! \file Defines sequence case-conversion algorithms. Algorithms convert each element in the input sequence to the desired case using provided locales. */ namespace lslboost { namespace algorithm { // to_lower -----------------------------------------------// //! Convert to lower case /*! Each element of the input sequence is converted to lower case. The result is a copy of the input converted to lower case. It is returned as a sequence or copied to the output iterator. \param Output An output iterator to which the result will be copied \param Input An input range \param Loc A locale used for conversion \return An output iterator pointing just after the last inserted character or a copy of the input \note The second variant of this function provides the strong exception-safety guarantee */ template inline OutputIteratorT to_lower_copy( OutputIteratorT Output, const RangeT& Input, const std::locale& Loc=std::locale()) { return ::lslboost::algorithm::detail::transform_range_copy( Output, ::lslboost::as_literal(Input), ::lslboost::algorithm::detail::to_lowerF< typename range_value::type >(Loc)); } //! Convert to lower case /*! \overload */ template inline SequenceT to_lower_copy( const SequenceT& Input, const std::locale& Loc=std::locale()) { return ::lslboost::algorithm::detail::transform_range_copy( Input, ::lslboost::algorithm::detail::to_lowerF< typename range_value::type >(Loc)); } //! Convert to lower case /*! Each element of the input sequence is converted to lower case. The input sequence is modified in-place. \param Input A range \param Loc a locale used for conversion */ template inline void to_lower( WritableRangeT& Input, const std::locale& Loc=std::locale()) { ::lslboost::algorithm::detail::transform_range( ::lslboost::as_literal(Input), ::lslboost::algorithm::detail::to_lowerF< typename range_value::type >(Loc)); } // to_upper -----------------------------------------------// //! Convert to upper case /*! Each element of the input sequence is converted to upper case. The result is a copy of the input converted to upper case. It is returned as a sequence or copied to the output iterator \param Output An output iterator to which the result will be copied \param Input An input range \param Loc A locale used for conversion \return An output iterator pointing just after the last inserted character or a copy of the input \note The second variant of this function provides the strong exception-safety guarantee */ template inline OutputIteratorT to_upper_copy( OutputIteratorT Output, const RangeT& Input, const std::locale& Loc=std::locale()) { return ::lslboost::algorithm::detail::transform_range_copy( Output, ::lslboost::as_literal(Input), ::lslboost::algorithm::detail::to_upperF< typename range_value::type >(Loc)); } //! Convert to upper case /*! \overload */ template inline SequenceT to_upper_copy( const SequenceT& Input, const std::locale& Loc=std::locale()) { return ::lslboost::algorithm::detail::transform_range_copy( Input, ::lslboost::algorithm::detail::to_upperF< typename range_value::type >(Loc)); } //! Convert to upper case /*! Each element of the input sequence is converted to upper case. The input sequence is modified in-place. \param Input An input range \param Loc a locale used for conversion */ template inline void to_upper( WritableRangeT& Input, const std::locale& Loc=std::locale()) { ::lslboost::algorithm::detail::transform_range( ::lslboost::as_literal(Input), ::lslboost::algorithm::detail::to_upperF< typename range_value::type >(Loc)); } } // namespace algorithm // pull names to the boost namespace using algorithm::to_lower; using algorithm::to_lower_copy; using algorithm::to_upper; using algorithm::to_upper_copy; } // namespace lslboost #endif // BOOST_STRING_CASE_CONV_HPP