libstdc++: Simplify construction of comparison category types

The _Eq and _Ord enumerations can be combined into one, reducing the
number of constructors needed for the comparison category types. The
redundant equal enumerator can be removed and equivalent used in its
place. The _Less and _Greater enumerators can be renamed because 'less'
and 'greater' are already reserved names anyway.

	* libsupc++/compare (__cmp_cat::_Eq): Remove enumeration type.
	(__cmp_cat::_Ord::equivalent): Add enumerator.
	(__cmp_cat::_Ord::_Less, __cmp_cat::_Ord::_Greater): Rename to less
	and greater.
	(partial_ordering, weak_ordering, strong_ordering): Remove
	constructors taking __cmp_cat::_Eq parameters. Use renamed
	enumerators.
This commit is contained in:
Jonathan Wakely 2020-01-24 17:07:01 +00:00
parent 64c9f2d997
commit 482eeff5f1
2 changed files with 21 additions and 28 deletions

View file

@ -1,3 +1,13 @@
2020-01-24 Jonathan Wakely <jwakely@redhat.com>
* libsupc++/compare (__cmp_cat::_Eq): Remove enumeration type.
(__cmp_cat::_Ord::equivalent): Add enumerator.
(__cmp_cat::_Ord::_Less, __cmp_cat::_Ord::_Greater): Rename to less
and greater.
(partial_ordering, weak_ordering, strong_ordering): Remove
constructors taking __cmp_cat::_Eq parameters. Use renamed
enumerators.
2020-01-24 Maciej W. Rozycki <macro@wdc.com>
* acinclude.m4: Handle `--with-toolexeclibdir='.

View file

@ -48,10 +48,7 @@ namespace std
namespace __cmp_cat
{
enum class _Eq
{ equal = 0, equivalent = equal, nonequal = 1, nonequivalent = nonequal };
enum class _Ord { _Less = -1, _Greater = 1 };
enum class _Ord { equivalent = 0, less = -1, greater = 1 };
enum class _Ncmp { _Unordered = -127 };
@ -66,11 +63,6 @@ namespace std
int _M_value;
bool _M_is_ordered;
constexpr explicit
partial_ordering(__cmp_cat::_Eq __v) noexcept
: _M_value(int(__v)), _M_is_ordered(true)
{ }
constexpr explicit
partial_ordering(__cmp_cat::_Ord __v) noexcept
: _M_value(int(__v)), _M_is_ordered(true)
@ -146,13 +138,13 @@ namespace std
// valid values' definitions
inline constexpr partial_ordering
partial_ordering::less(__cmp_cat::_Ord::_Less);
partial_ordering::less(__cmp_cat::_Ord::less);
inline constexpr partial_ordering
partial_ordering::equivalent(__cmp_cat::_Eq::equivalent);
partial_ordering::equivalent(__cmp_cat::_Ord::equivalent);
inline constexpr partial_ordering
partial_ordering::greater(__cmp_cat::_Ord::_Greater);
partial_ordering::greater(__cmp_cat::_Ord::greater);
inline constexpr partial_ordering
partial_ordering::unordered(__cmp_cat::_Ncmp::_Unordered);
@ -161,10 +153,6 @@ namespace std
{
int _M_value;
constexpr explicit
weak_ordering(__cmp_cat::_Eq __v) noexcept : _M_value(int(__v))
{ }
constexpr explicit
weak_ordering(__cmp_cat::_Ord __v) noexcept : _M_value(int(__v))
{ }
@ -243,23 +231,18 @@ namespace std
// valid values' definitions
inline constexpr weak_ordering
weak_ordering::less(__cmp_cat::_Ord::_Less);
weak_ordering::less(__cmp_cat::_Ord::less);
inline constexpr weak_ordering
weak_ordering::equivalent(__cmp_cat::_Eq::equivalent);
weak_ordering::equivalent(__cmp_cat::_Ord::equivalent);
inline constexpr weak_ordering
weak_ordering::greater(__cmp_cat::_Ord::_Greater);
weak_ordering::greater(__cmp_cat::_Ord::greater);
class strong_ordering
{
int _M_value;
constexpr explicit
strong_ordering(__cmp_cat::_Eq __v) noexcept
: _M_value(int(__v))
{ }
constexpr explicit
strong_ordering(__cmp_cat::_Ord __v) noexcept
: _M_value(int(__v))
@ -350,16 +333,16 @@ namespace std
// valid values' definitions
inline constexpr strong_ordering
strong_ordering::less(__cmp_cat::_Ord::_Less);
strong_ordering::less(__cmp_cat::_Ord::less);
inline constexpr strong_ordering
strong_ordering::equal(__cmp_cat::_Eq::equal);
strong_ordering::equal(__cmp_cat::_Ord::equivalent);
inline constexpr strong_ordering
strong_ordering::equivalent(__cmp_cat::_Eq::equivalent);
strong_ordering::equivalent(__cmp_cat::_Ord::equivalent);
inline constexpr strong_ordering
strong_ordering::greater(__cmp_cat::_Ord::_Greater);
strong_ordering::greater(__cmp_cat::_Ord::greater);
// named comparison functions