mirror of
https://github.com/boostorg/core.git
synced 2025-07-30 21:07:22 +02:00
Add sv_conversion_test
This commit is contained in:
@ -381,6 +381,35 @@ public:
|
|||||||
|
|
||||||
// BOOST_CONSTEXPR basic_string_view& operator=( basic_string_view const& ) BOOST_NOEXCEPT & = default;
|
// BOOST_CONSTEXPR basic_string_view& operator=( basic_string_view const& ) BOOST_NOEXCEPT & = default;
|
||||||
|
|
||||||
|
// conversions
|
||||||
|
|
||||||
|
#if !defined(BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS)
|
||||||
|
|
||||||
|
template<class Ch2, class En = typename boost::enable_if<is_same<Ch2, Ch> >::type>
|
||||||
|
operator std::basic_string<Ch2>() const
|
||||||
|
{
|
||||||
|
return std::basic_string<Ch>( data(), size() );
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
operator std::basic_string<Ch>() const
|
||||||
|
{
|
||||||
|
return std::basic_string<Ch>( data(), size() );
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(BOOST_NO_CXX17_HDR_STRING_VIEW)
|
||||||
|
|
||||||
|
template<class Ch2, class En = typename boost::enable_if<is_same<Ch2, Ch> >::type>
|
||||||
|
operator std::basic_string_view<Ch2>() const BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return std::basic_string_view<Ch>( data(), size() );
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
// iterator support
|
// iterator support
|
||||||
|
|
||||||
BOOST_CONSTEXPR const_iterator begin() const BOOST_NOEXCEPT
|
BOOST_CONSTEXPR const_iterator begin() const BOOST_NOEXCEPT
|
||||||
@ -925,6 +954,198 @@ public:
|
|||||||
{
|
{
|
||||||
return sv1.compare( sv2 ) >= 0;
|
return sv1.compare( sv2 ) >= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if !defined(BOOST_NO_CXX17_HDR_STRING_VIEW)
|
||||||
|
|
||||||
|
// "sufficient number of additional overloads"
|
||||||
|
|
||||||
|
// against std::string_view
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator==( basic_string_view sv1, std::basic_string_view<Ch> sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv1.compare( sv2 ) == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator==( std::basic_string_view<Ch> sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv1.compare( sv2 ) == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator!=( basic_string_view sv1, std::basic_string_view<Ch> sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv1.compare( sv2 ) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator!=( std::basic_string_view<Ch> sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv1.compare( sv2 ) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator<( basic_string_view sv1, std::basic_string_view<Ch> sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv1.compare( sv2 ) < 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator<( std::basic_string_view<Ch> sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv1.compare( sv2 ) < 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator<=( basic_string_view sv1, std::basic_string_view<Ch> sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv1.compare( sv2 ) <= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator<=( std::basic_string_view<Ch> sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv1.compare( sv2 ) <= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator>( basic_string_view sv1, std::basic_string_view<Ch> sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv1.compare( sv2 ) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator>( std::basic_string_view<Ch> sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv1.compare( sv2 ) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator>=( basic_string_view sv1, std::basic_string_view<Ch> sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv1.compare( sv2 ) >= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator>=( std::basic_string_view<Ch> sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv1.compare( sv2 ) >= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// against Ch const*
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator==( basic_string_view sv1, Ch const* sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv1.compare( sv2 ) == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator==( Ch const* sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv2.compare( sv1 ) == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator!=( basic_string_view sv1, Ch const* sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv1.compare( sv2 ) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator!=( Ch const* sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv2.compare( sv1 ) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator<( basic_string_view sv1, Ch const* sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv1.compare( sv2 ) < 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator<( Ch const* sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv2.compare( sv1 ) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator<=( basic_string_view sv1, Ch const* sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv1.compare( sv2 ) <= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator<=( Ch const* sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv2.compare( sv1 ) >= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator>( basic_string_view sv1, Ch const* sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv1.compare( sv2 ) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator>( Ch const* sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv2.compare( sv1 ) < 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator>=( basic_string_view sv1, Ch const* sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv1.compare( sv2 ) >= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator>=( Ch const* sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv2.compare( sv1 ) <= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// against std::string
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator==( basic_string_view sv1, std::basic_string<Ch> const& sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv1.compare( sv2 ) == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator==( std::basic_string<Ch> const& sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv2.compare( sv1 ) == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator!=( basic_string_view sv1, std::basic_string<Ch> const& sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv1.compare( sv2 ) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator!=( std::basic_string<Ch> const& sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv2.compare( sv1 ) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator<( basic_string_view sv1, std::basic_string<Ch> const& sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv1.compare( sv2 ) < 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator<( std::basic_string<Ch> const& sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv2.compare( sv1 ) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator<=( basic_string_view sv1, std::basic_string<Ch> const& sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv1.compare( sv2 ) <= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator<=( std::basic_string<Ch> const& sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv2.compare( sv1 ) >= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator>( basic_string_view sv1, std::basic_string<Ch> const& sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv1.compare( sv2 ) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator>( std::basic_string<Ch> const& sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv2.compare( sv1 ) < 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator>=( basic_string_view sv1, std::basic_string<Ch> const& sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv1.compare( sv2 ) >= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_CXX14_CONSTEXPR friend bool operator>=( std::basic_string<Ch> const& sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return sv2.compare( sv1 ) <= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
template<class Ch> std::basic_ostream<Ch>& operator<<( std::basic_ostream<Ch>& os, basic_string_view<Ch> str )
|
template<class Ch> std::basic_ostream<Ch>& operator<<( std::basic_ostream<Ch>& os, basic_string_view<Ch> str )
|
||||||
|
@ -267,6 +267,7 @@ run sv_contains_test.cpp ;
|
|||||||
run sv_eq_test.cpp ;
|
run sv_eq_test.cpp ;
|
||||||
run sv_lt_test.cpp ;
|
run sv_lt_test.cpp ;
|
||||||
run sv_stream_insert_test.cpp ;
|
run sv_stream_insert_test.cpp ;
|
||||||
|
run sv_conversion_test.cpp ;
|
||||||
|
|
||||||
use-project /boost/core/swap : ./swap ;
|
use-project /boost/core/swap : ./swap ;
|
||||||
build-project ./swap ;
|
build-project ./swap ;
|
||||||
|
38
test/sv_conversion_test.cpp
Normal file
38
test/sv_conversion_test.cpp
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
// Copyright 2021 Peter Dimov
|
||||||
|
// Distributed under the Boost Software License, Version 1.0.
|
||||||
|
// https://www.boost.org/LICENSE_1_0.txt
|
||||||
|
|
||||||
|
#include <boost/core/string_view.hpp>
|
||||||
|
#include <boost/core/lightweight_test.hpp>
|
||||||
|
#include <string>
|
||||||
|
#if !defined(BOOST_NO_CXX17_HDR_STRING_VIEW)
|
||||||
|
# include <string_view>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
boost::core::string_view f( boost::core::string_view const& str )
|
||||||
|
{
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
{
|
||||||
|
std::string s1( "123" );
|
||||||
|
std::string s2 = f( s1 );
|
||||||
|
|
||||||
|
BOOST_TEST_EQ( s1, s2 );
|
||||||
|
}
|
||||||
|
|
||||||
|
#if !defined(BOOST_NO_CXX17_HDR_STRING_VIEW)
|
||||||
|
|
||||||
|
{
|
||||||
|
std::string_view s1( "123" );
|
||||||
|
std::string_view s2 = f( s1 );
|
||||||
|
|
||||||
|
BOOST_TEST_EQ( s1, s2 );
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return boost::report_errors();
|
||||||
|
}
|
Reference in New Issue
Block a user