Mercurial > hg > vamp-build-and-test
diff DEPENDENCIES/generic/include/boost/test/utils/basic_cstring/compare.hpp @ 16:2665513ce2d3
Add boost headers
author | Chris Cannam |
---|---|
date | Tue, 05 Aug 2014 11:11:38 +0100 |
parents | |
children | c530137014c0 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DEPENDENCIES/generic/include/boost/test/utils/basic_cstring/compare.hpp Tue Aug 05 11:11:38 2014 +0100 @@ -0,0 +1,115 @@ +// (C) Copyright Gennadiy Rozental 2004-2008. +// 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/libs/test for the library home page. +// +// File : $RCSfile$ +// +// Version : $Revision: 49312 $ +// +// Description : class basic_cstring comparisons implementation +// *************************************************************************** + +#ifndef BOOST_TEST_BASIC_CSTRING_COMPARE_HPP_071894GER +#define BOOST_TEST_BASIC_CSTRING_COMPARE_HPP_071894GER + +// Boost.Test +#include <boost/test/utils/basic_cstring/basic_cstring.hpp> + +// STL +#include <functional> +#include <cctype> + +#include <boost/test/detail/suppress_warnings.hpp> + +//____________________________________________________________________________// + +# if defined(BOOST_NO_STDC_NAMESPACE) && !BOOST_WORKAROUND(__BORLANDC__, <= 0x570) +namespace std { using ::toupper; } +# endif + +namespace boost { + +namespace unit_test { + +// ************************************************************************** // +// ************** case_ins_compare ************** // +// ************************************************************************** // + +namespace ut_detail { + +template<class CharT> +struct case_ins +{ + static bool eq( CharT c1, CharT c2 ) { return (std::toupper)( c1 ) == (std::toupper)( c2 ); } + static bool lt( CharT c1, CharT c2 ) { return (std::toupper)( c1 ) < (std::toupper)( c2 ); } + + static int compare( CharT const* s1, CharT const* s2, std::size_t n ) + { + for( std::size_t i = 0; i < n; ++i ) { + if( !eq( s1[i], s2[i] ) ) + return lt( s1[i], s2[i] ) ? -1 : 1; + } + return 0; + } +}; + +} // namespace ut_detail + +// ************************************************************************** // +// ************** case_ins_eq ************** // +// ************************************************************************** // + +template<class CharT> +inline bool +case_ins_eq( basic_cstring<CharT> x, basic_cstring<CharT> y ) +{ + return x.size() == y.size() && ut_detail::case_ins<CharT>::compare( x.begin(), y.begin(), x.size() ) == 0; +} + +//____________________________________________________________________________// + +// ************************************************************************** // +// ************** case_ins_less ************** // +// ************************************************************************** // + +template<class CharT> +class case_ins_less : public std::binary_function<basic_cstring<CharT>,basic_cstring<CharT>,bool> +{ +public: + bool operator()( basic_cstring<CharT> x, basic_cstring<CharT> y ) const + { + return x.size() != y.size() + ? x.size() < y.size() + : ut_detail::case_ins<CharT>::compare( x.begin(), y.begin(), x.size() ) < 0; + } +}; + +//____________________________________________________________________________// + +// ************************************************************************** // +// ************** operator < ************** // +// ************************************************************************** // + +template<class CharT> +inline bool +operator <( boost::unit_test::basic_cstring<CharT> const& x, + boost::unit_test::basic_cstring<CharT> const& y ) +{ + typedef typename boost::unit_test::basic_cstring<CharT>::traits_type traits_type; + return x.size() != y.size() + ? x.size() < y.size() + : traits_type::compare( x.begin(), y.begin(), x.size() ) < 0; +} + +} // namespace unit_test + +} // namespace boost + +//____________________________________________________________________________// + +#include <boost/test/detail/enable_warnings.hpp> + +#endif // BOOST_TEST_BASIC_CSTRING_COMPARE_HPP_071894GER