mirror of
https://github.com/mpusz/mp-units.git
synced 2025-08-04 20:54:28 +02:00
replaced ASCIICharT typename with char
This commit is contained in:
committed by
Mateusz Pusz
parent
b8073b79d0
commit
a3d4e04645
@@ -5,17 +5,17 @@
|
||||
|
||||
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 {
|
||||
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, 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 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 basic_fixed_string<StandardCharT, N>& s, const basic_fixed_string<ASCIICharT, M>& a) 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<char, M>& a) noexcept: standard_(s), ascii_(a) {}
|
||||
|
||||
[[nodiscard]] constexpr auto& standard() { 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_; }
|
||||
|
||||
template<std::size_t N2, std::size_t M2>
|
||||
[[nodiscard]] constexpr friend basic_symbol_text<StandardCharT, ASCIICharT, N + N2, M + M2> operator+(
|
||||
const basic_symbol_text& lhs, const basic_symbol_text<StandardCharT, ASCIICharT, N2, M2>& rhs) noexcept
|
||||
[[nodiscard]] constexpr friend basic_symbol_text<StandardCharT, N + N2, M + M2> operator+(
|
||||
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_);
|
||||
}
|
||||
|
||||
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
|
||||
{
|
||||
return lhs + basic_symbol_text<StandardCharT, StandardCharT, N2, N2>(rhs);
|
||||
return lhs + basic_symbol_text<StandardCharT, N2, N2>(rhs);
|
||||
}
|
||||
|
||||
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
|
||||
{
|
||||
return basic_symbol_text<StandardCharT, StandardCharT, N2, N2>(lhs) + rhs;
|
||||
return basic_symbol_text<StandardCharT, N2, N2>(lhs) + rhs;
|
||||
}
|
||||
|
||||
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
|
||||
{
|
||||
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>
|
||||
[[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
|
||||
{
|
||||
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
|
||||
{
|
||||
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
|
||||
{
|
||||
return basic_symbol_text<StandardCharT, StandardCharT, 1, 1>(lhs) + rhs;
|
||||
return basic_symbol_text<StandardCharT, 1, 1>(lhs) + rhs;
|
||||
}
|
||||
|
||||
#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,
|
||||
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());
|
||||
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);
|
||||
}
|
||||
|
||||
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,
|
||||
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());
|
||||
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
|
||||
|
||||
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,
|
||||
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_);
|
||||
assert((lhs.ascii_ == rhs.ascii_) == 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,
|
||||
const basic_symbol_text<StandardCharT2, ASCIICharT2, N2, M2>& rhs) noexcept
|
||||
const basic_symbol_text<StandardCharT2, N2, M2>& rhs) noexcept
|
||||
{
|
||||
return !(lhs == rhs);
|
||||
}
|
||||
@@ -228,9 +228,9 @@ struct basic_symbol_text {
|
||||
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,
|
||||
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_;
|
||||
assert((lhs.ascii_ < rhs.ascii_) == comparison);
|
||||
@@ -258,9 +258,9 @@ struct basic_symbol_text {
|
||||
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,
|
||||
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_;
|
||||
assert((lhs.ascii_ > rhs.ascii_) == comparison);
|
||||
@@ -288,9 +288,9 @@ struct basic_symbol_text {
|
||||
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,
|
||||
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_;
|
||||
assert((lhs.ascii_ <= rhs.ascii_) == comparison);
|
||||
@@ -318,9 +318,9 @@ struct basic_symbol_text {
|
||||
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,
|
||||
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_;
|
||||
assert((lhs.ascii_ >= rhs.ascii_) == comparison);
|
||||
@@ -353,23 +353,23 @@ struct basic_symbol_text {
|
||||
};
|
||||
|
||||
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>
|
||||
basic_symbol_text(StandardCharT, ASCIICharT) -> basic_symbol_text<StandardCharT, ASCIICharT, 1, 1>;
|
||||
template<typename StandardCharT>
|
||||
basic_symbol_text(StandardCharT, char) -> basic_symbol_text<StandardCharT, 1, 1>;
|
||||
|
||||
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>
|
||||
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>
|
||||
basic_symbol_text(const StandardCharT (&)[N], const ASCIICharT (&)[M]) -> basic_symbol_text<StandardCharT, ASCIICharT, N - 1, M - 1>;
|
||||
template<typename StandardCharT, std::size_t N, std::size_t M>
|
||||
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>&,
|
||||
const basic_fixed_string<ASCIICharT, M>&)
|
||||
-> basic_symbol_text<StandardCharT, ASCIICharT, N, M>;
|
||||
const basic_fixed_string<char, M>&)
|
||||
-> basic_symbol_text<StandardCharT, N, M>;
|
||||
|
||||
} // namespace units
|
||||
|
Reference in New Issue
Block a user