replaced ASCIICharT typename with char

This commit is contained in:
Ramzi Sabra
2020-03-26 08:27:56 +02:00
committed by Mateusz Pusz
parent b8073b79d0
commit a3d4e04645

View File

@@ -5,17 +5,17 @@
namespace units { namespace units {
template<typename StandardCharT, typename ASCIICharT, std::size_t N, std::size_t M> template<typename StandardCharT, std::size_t N, std::size_t M>
struct basic_symbol_text { struct basic_symbol_text {
basic_fixed_string<StandardCharT, N> standard_; basic_fixed_string<StandardCharT, N> standard_;
basic_fixed_string<ASCIICharT, M> ascii_; basic_fixed_string<char, M> ascii_;
constexpr basic_symbol_text(StandardCharT s) noexcept: standard_(s), ascii_(s) {} constexpr basic_symbol_text(StandardCharT s) noexcept: standard_(s), ascii_(s) {}
constexpr basic_symbol_text(StandardCharT s, ASCIICharT a) noexcept: standard_(s), ascii_(a) {} constexpr basic_symbol_text(StandardCharT s, char a) noexcept: standard_(s), ascii_(a) {}
constexpr basic_symbol_text(const StandardCharT (&s)[N + 1]) noexcept: standard_(s), ascii_(s) {} constexpr basic_symbol_text(const StandardCharT (&s)[N + 1]) noexcept: standard_(s), ascii_(s) {}
constexpr basic_symbol_text(const basic_fixed_string<StandardCharT, N>& s) noexcept: standard_(s), ascii_(s) {} constexpr basic_symbol_text(const basic_fixed_string<StandardCharT, N>& s) noexcept: standard_(s), ascii_(s) {}
constexpr basic_symbol_text(const StandardCharT (&s)[N + 1], const ASCIICharT (&a)[M + 1]) noexcept: standard_(s), ascii_(a) {} constexpr basic_symbol_text(const StandardCharT (&s)[N + 1], const char (&a)[M + 1]) noexcept: standard_(s), ascii_(a) {}
constexpr basic_symbol_text(const basic_fixed_string<StandardCharT, N>& s, const basic_fixed_string<ASCIICharT, M>& a) noexcept: standard_(s), ascii_(a) {} constexpr basic_symbol_text(const basic_fixed_string<StandardCharT, N>& s, const basic_fixed_string<char, M>& a) noexcept: standard_(s), ascii_(a) {}
[[nodiscard]] constexpr auto& standard() { return standard_; } [[nodiscard]] constexpr auto& standard() { return standard_; }
[[nodiscard]] constexpr const auto& standard() const { return standard_; } [[nodiscard]] constexpr const auto& standard() const { return standard_; }
@@ -23,58 +23,58 @@ struct basic_symbol_text {
[[nodiscard]] constexpr const auto& ascii() const { return ascii_; } [[nodiscard]] constexpr const auto& ascii() const { return ascii_; }
template<std::size_t N2, std::size_t M2> template<std::size_t N2, std::size_t M2>
[[nodiscard]] constexpr friend basic_symbol_text<StandardCharT, ASCIICharT, N + N2, M + M2> operator+( [[nodiscard]] constexpr friend basic_symbol_text<StandardCharT, N + N2, M + M2> operator+(
const basic_symbol_text& lhs, const basic_symbol_text<StandardCharT, ASCIICharT, N2, M2>& rhs) noexcept const basic_symbol_text& lhs, const basic_symbol_text<StandardCharT, N2, M2>& rhs) noexcept
{ {
return basic_symbol_text<StandardCharT, ASCIICharT, N + N2, M + M2>( return basic_symbol_text<StandardCharT, N + N2, M + M2>(
lhs.standard_ + rhs.standard_, lhs.ascii_ + rhs.ascii_); lhs.standard_ + rhs.standard_, lhs.ascii_ + rhs.ascii_);
} }
template<std::size_t N2> template<std::size_t N2>
[[nodiscard]] constexpr friend basic_symbol_text<StandardCharT, ASCIICharT, N + N2, M + N2> operator+( [[nodiscard]] constexpr friend basic_symbol_text<StandardCharT, N + N2, M + N2> operator+(
const basic_symbol_text& lhs, const basic_fixed_string<StandardCharT, N2>& rhs) noexcept const basic_symbol_text& lhs, const basic_fixed_string<StandardCharT, N2>& rhs) noexcept
{ {
return lhs + basic_symbol_text<StandardCharT, StandardCharT, N2, N2>(rhs); return lhs + basic_symbol_text<StandardCharT, N2, N2>(rhs);
} }
template<std::size_t N2> template<std::size_t N2>
[[nodiscard]] constexpr friend basic_symbol_text<StandardCharT, ASCIICharT, N + N2, M + N2> operator+( [[nodiscard]] constexpr friend basic_symbol_text<StandardCharT, N + N2, M + N2> operator+(
const basic_fixed_string<StandardCharT, N2>& lhs, const basic_symbol_text& rhs) noexcept const basic_fixed_string<StandardCharT, N2>& lhs, const basic_symbol_text& rhs) noexcept
{ {
return basic_symbol_text<StandardCharT, StandardCharT, N2, N2>(lhs) + rhs; return basic_symbol_text<StandardCharT, N2, N2>(lhs) + rhs;
} }
template<std::size_t N2> template<std::size_t N2>
[[nodiscard]] constexpr friend basic_symbol_text<StandardCharT, ASCIICharT, N + N2 - 1, M + N2 - 1> operator+( [[nodiscard]] constexpr friend basic_symbol_text<StandardCharT, N + N2 - 1, M + N2 - 1> operator+(
const basic_symbol_text& lhs, const StandardCharT (&rhs)[N2]) noexcept const basic_symbol_text& lhs, const StandardCharT (&rhs)[N2]) noexcept
{ {
return lhs + basic_symbol_text<StandardCharT, StandardCharT, N2 - 1, N2 - 1>(rhs); return lhs + basic_symbol_text<StandardCharT, N2 - 1, N2 - 1>(rhs);
} }
template<std::size_t N2> template<std::size_t N2>
[[nodiscard]] constexpr friend basic_symbol_text<StandardCharT, ASCIICharT, N + N2 - 1, M + N2 - 1> operator+( [[nodiscard]] constexpr friend basic_symbol_text<StandardCharT, N + N2 - 1, M + N2 - 1> operator+(
const StandardCharT (&lhs)[N2], const basic_symbol_text& rhs) noexcept const StandardCharT (&lhs)[N2], const basic_symbol_text& rhs) noexcept
{ {
return basic_symbol_text<StandardCharT, StandardCharT, N2 - 1, N2 - 1>(lhs) + rhs; return basic_symbol_text<StandardCharT, N2 - 1, N2 - 1>(lhs) + rhs;
} }
[[nodiscard]] constexpr friend basic_symbol_text<StandardCharT, ASCIICharT, N + 1, M + 1> operator+( [[nodiscard]] constexpr friend basic_symbol_text<StandardCharT, N + 1, M + 1> operator+(
const basic_symbol_text& lhs, StandardCharT rhs) noexcept const basic_symbol_text& lhs, StandardCharT rhs) noexcept
{ {
return lhs + basic_symbol_text<StandardCharT, StandardCharT, 1, 1>(rhs); return lhs + basic_symbol_text<StandardCharT, 1, 1>(rhs);
} }
[[nodiscard]] constexpr friend basic_symbol_text<StandardCharT, ASCIICharT, N + 1, M + 1> operator+( [[nodiscard]] constexpr friend basic_symbol_text<StandardCharT, N + 1, M + 1> operator+(
StandardCharT lhs, const basic_symbol_text& rhs) noexcept StandardCharT lhs, const basic_symbol_text& rhs) noexcept
{ {
return basic_symbol_text<StandardCharT, StandardCharT, 1, 1>(lhs) + rhs; return basic_symbol_text<StandardCharT, 1, 1>(lhs) + rhs;
} }
#if __GNUC__ >= 10 #if __GNUC__ >= 10
template<typename StandardCharT2, typename ASCIICharT2, std::size_t N2, std::size_t M2> template<typename StandardCharT2, std::size_t N2, std::size_t M2>
[[nodiscard]] friend constexpr auto operator<=>(const basic_symbol_text& lhs, [[nodiscard]] friend constexpr auto operator<=>(const basic_symbol_text& lhs,
const basic_symbol_text<StandardCharT2, ASCIICharT2, N2, M2>& rhs) const basic_symbol_text<StandardCharT2, N2, M2>& rhs)
{ {
auto comparison = std::lexicographical_compare_three_way(lhs.standard_.begin(), lhs.standard_.end(), rhs.standard_.begin(), rhs.standard_.end()); auto comparison = std::lexicographical_compare_three_way(lhs.standard_.begin(), lhs.standard_.end(), rhs.standard_.begin(), rhs.standard_.end());
assert(std::lexicographical_compare_three_way(lhs.ascii_.begin(), lhs.ascii_.end(), rhs.ascii_.begin(), rhs.ascii_.end()) == comparison); assert(std::lexicographical_compare_three_way(lhs.ascii_.begin(), lhs.ascii_.end(), rhs.ascii_.begin(), rhs.ascii_.end()) == comparison);
@@ -102,9 +102,9 @@ struct basic_symbol_text {
return lhs <=> basic_fixed_string<StandardCharT2, 1>(rhs); return lhs <=> basic_fixed_string<StandardCharT2, 1>(rhs);
} }
template<typename StandardCharT2, typename ASCIICharT2, std::size_t N2, std::size_t M2> template<typename StandardCharT2, std::size_t N2, std::size_t M2>
[[nodiscard]] friend constexpr bool operator==(const basic_symbol_text& lhs, [[nodiscard]] friend constexpr bool operator==(const basic_symbol_text& lhs,
const basic_symbol_text<StandardCharT2, ASCIICharT2, N2, M2>& rhs) const basic_symbol_text<StandardCharT2, N2, M2>& rhs)
{ {
bool comparison = std::equal(lhs.standard_.begin(), lhs.standard_.end(), rhs.standard_.begin(), rhs.standard_.end()); bool comparison = std::equal(lhs.standard_.begin(), lhs.standard_.end(), rhs.standard_.begin(), rhs.standard_.end());
assert(std::equal(lhs.ascii_.begin(), lhs.ascii_.end(), rhs.ascii_.begin(), rhs.ascii_.end()) == comparison); assert(std::equal(lhs.ascii_.begin(), lhs.ascii_.end(), rhs.ascii_.begin(), rhs.ascii_.end()) == comparison);
@@ -134,18 +134,18 @@ struct basic_symbol_text {
#else #else
template<typename StandardCharT2, typename ASCIICharT2, std::size_t N2, std::size_t M2> template<typename StandardCharT2, std::size_t N2, std::size_t M2>
[[nodiscard]] constexpr friend bool operator==(const basic_symbol_text& lhs, [[nodiscard]] constexpr friend bool operator==(const basic_symbol_text& lhs,
const basic_symbol_text<StandardCharT2, ASCIICharT2, N2, M2>& rhs) noexcept const basic_symbol_text<StandardCharT2, N2, M2>& rhs) noexcept
{ {
bool comparison = (lhs.standard_ == rhs.standard_); bool comparison = (lhs.standard_ == rhs.standard_);
assert((lhs.ascii_ == rhs.ascii_) == comparison); assert((lhs.ascii_ == rhs.ascii_) == comparison);
return comparison; return comparison;
} }
template<typename StandardCharT2, typename ASCIICharT2, std::size_t N2, std::size_t M2> template<typename StandardCharT2, std::size_t N2, std::size_t M2>
[[nodiscard]] constexpr friend bool operator!=(const basic_symbol_text& lhs, [[nodiscard]] constexpr friend bool operator!=(const basic_symbol_text& lhs,
const basic_symbol_text<StandardCharT2, ASCIICharT2, N2, M2>& rhs) noexcept const basic_symbol_text<StandardCharT2, N2, M2>& rhs) noexcept
{ {
return !(lhs == rhs); return !(lhs == rhs);
} }
@@ -228,9 +228,9 @@ struct basic_symbol_text {
return true; return true;
} }
template<typename StandardCharT2, typename ASCIICharT2, std::size_t N2, std::size_t M2> template<typename StandardCharT2, std::size_t N2, std::size_t M2>
[[nodiscard]] constexpr friend bool operator<(const basic_symbol_text& lhs, [[nodiscard]] constexpr friend bool operator<(const basic_symbol_text& lhs,
const basic_symbol_text<StandardCharT2, ASCIICharT2, N2, M2>& rhs) noexcept const basic_symbol_text<StandardCharT2, N2, M2>& rhs) noexcept
{ {
bool comparison = lhs.standard_ < rhs.standard_; bool comparison = lhs.standard_ < rhs.standard_;
assert((lhs.ascii_ < rhs.ascii_) == comparison); assert((lhs.ascii_ < rhs.ascii_) == comparison);
@@ -258,9 +258,9 @@ struct basic_symbol_text {
return lhs.standard_ < basic_fixed_string(rhs); return lhs.standard_ < basic_fixed_string(rhs);
} }
template<typename StandardCharT2, typename ASCIICharT2, std::size_t N2, std::size_t M2> template<typename StandardCharT2, std::size_t N2, std::size_t M2>
[[nodiscard]] constexpr friend bool operator>(const basic_symbol_text& lhs, [[nodiscard]] constexpr friend bool operator>(const basic_symbol_text& lhs,
const basic_symbol_text<StandardCharT2, ASCIICharT2, N2, M2>& rhs) noexcept const basic_symbol_text<StandardCharT2, N2, M2>& rhs) noexcept
{ {
bool comparison = lhs.standard_ > rhs.standard_; bool comparison = lhs.standard_ > rhs.standard_;
assert((lhs.ascii_ > rhs.ascii_) == comparison); assert((lhs.ascii_ > rhs.ascii_) == comparison);
@@ -288,9 +288,9 @@ struct basic_symbol_text {
return lhs.standard_ > basic_fixed_string(rhs); return lhs.standard_ > basic_fixed_string(rhs);
} }
template<typename StandardCharT2, typename ASCIICharT2, std::size_t N2, std::size_t M2> template<typename StandardCharT2, std::size_t N2, std::size_t M2>
[[nodiscard]] constexpr friend bool operator<=(const basic_symbol_text& lhs, [[nodiscard]] constexpr friend bool operator<=(const basic_symbol_text& lhs,
const basic_symbol_text<StandardCharT2, ASCIICharT2, N2, M2>& rhs) noexcept const basic_symbol_text<StandardCharT2, N2, M2>& rhs) noexcept
{ {
bool comparison = lhs.standard_ <= rhs.standard_; bool comparison = lhs.standard_ <= rhs.standard_;
assert((lhs.ascii_ <= rhs.ascii_) == comparison); assert((lhs.ascii_ <= rhs.ascii_) == comparison);
@@ -318,9 +318,9 @@ struct basic_symbol_text {
return lhs.standard_ <= basic_fixed_string(rhs); return lhs.standard_ <= basic_fixed_string(rhs);
} }
template<typename StandardCharT2, typename ASCIICharT2, std::size_t N2, std::size_t M2> template<typename StandardCharT2, std::size_t N2, std::size_t M2>
[[nodiscard]] constexpr friend bool operator>=(const basic_symbol_text& lhs, [[nodiscard]] constexpr friend bool operator>=(const basic_symbol_text& lhs,
const basic_symbol_text<StandardCharT2, ASCIICharT2, N2, M2>& rhs) noexcept const basic_symbol_text<StandardCharT2, N2, M2>& rhs) noexcept
{ {
bool comparison = lhs.standard_ >= rhs.standard_; bool comparison = lhs.standard_ >= rhs.standard_;
assert((lhs.ascii_ >= rhs.ascii_) == comparison); assert((lhs.ascii_ >= rhs.ascii_) == comparison);
@@ -353,23 +353,23 @@ struct basic_symbol_text {
}; };
template<typename StandardCharT> template<typename StandardCharT>
basic_symbol_text(StandardCharT) -> basic_symbol_text<StandardCharT, StandardCharT, 1, 1>; basic_symbol_text(StandardCharT) -> basic_symbol_text<StandardCharT, 1, 1>;
template<typename StandardCharT, typename ASCIICharT> template<typename StandardCharT>
basic_symbol_text(StandardCharT, ASCIICharT) -> basic_symbol_text<StandardCharT, ASCIICharT, 1, 1>; basic_symbol_text(StandardCharT, char) -> basic_symbol_text<StandardCharT, 1, 1>;
template<typename StandardCharT, std::size_t N> template<typename StandardCharT, std::size_t N>
basic_symbol_text(const StandardCharT (&)[N]) -> basic_symbol_text<StandardCharT, StandardCharT, N - 1, N - 1>; basic_symbol_text(const StandardCharT (&)[N]) -> basic_symbol_text<StandardCharT, N - 1, N - 1>;
template<typename StandardCharT, std::size_t N> template<typename StandardCharT, std::size_t N>
basic_symbol_text(const basic_fixed_string<StandardCharT, N>&) -> basic_symbol_text<StandardCharT, StandardCharT, N, N>; basic_symbol_text(const basic_fixed_string<StandardCharT, N>&) -> basic_symbol_text<StandardCharT, N, N>;
template<typename StandardCharT, typename ASCIICharT, std::size_t N, std::size_t M> template<typename StandardCharT, std::size_t N, std::size_t M>
basic_symbol_text(const StandardCharT (&)[N], const ASCIICharT (&)[M]) -> basic_symbol_text<StandardCharT, ASCIICharT, N - 1, M - 1>; basic_symbol_text(const StandardCharT (&)[N], const char (&)[M]) -> basic_symbol_text<StandardCharT, N - 1, M - 1>;
template<typename StandardCharT, typename ASCIICharT, std::size_t N, std::size_t M> template<typename StandardCharT, std::size_t N, std::size_t M>
basic_symbol_text(const basic_fixed_string<StandardCharT, N>&, basic_symbol_text(const basic_fixed_string<StandardCharT, N>&,
const basic_fixed_string<ASCIICharT, M>&) const basic_fixed_string<char, M>&)
-> basic_symbol_text<StandardCharT, ASCIICharT, N, M>; -> basic_symbol_text<StandardCharT, N, M>;
} // namespace units } // namespace units