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:
parent
64c9f2d997
commit
482eeff5f1
2 changed files with 21 additions and 28 deletions
|
@ -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='.
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue