2 Комити

Аутор SHA1 Порука Датум
  Emil-Jarosz b864f3a3c1 Add arithmetic assign operators for endian_wrapper пре 3 година
  Emil-Jarosz de8f097d70 Add copy assignment operator for endian_wrapper пре 3 година
1 измењених фајлова са 41 додато и 7 уклоњено
  1. +41
    -7
      include/gp/math/boolean/bitops.hpp

+ 41
- 7
include/gp/math/boolean/bitops.hpp Прегледај датотеку

@ -35,21 +35,55 @@ struct endian_wrapper {
gp::array<uint8_t, sizeof(T)> bytes;
};
endian_wrapper() {}
endian_wrapper() noexcept
: value{0} {}
endian_wrapper(T v)
: value{mode == endian::native ? v : swap_endian(v)} {}
endian_wrapper(T v) noexcept
: value{adjust(v)} {}
endian_wrapper(endian_wrapper& v)
endian_wrapper(k">const endian_wrapper& v) noexcept
: value{v.value} {}
endian_wrapper& operator=(T p) {
value = mode == endian::native ? p : swap_endian(p);
endian_wrapper& operator=(T v) noexcept {
value = adjust(v);
return *this;
}
endian_wrapper& operator=(const endian_wrapper& v) noexcept {
value = v.value;
return *this;
}
operator T() const noexcept {
return mode == endian::native ? value : swap_endian(value);
return adjust(value);
}
// arithmetic assignment operators
endian_wrapper& operator+=(T rhs) noexcept {
value = adjust(adjust(value) + rhs);
return *this;
}
endian_wrapper& operator+=(endian_wrapper rhs) noexcept {
value = adjust(adjust(value) + adjust(rhs.value));
return *this;
}
endian_wrapper& operator-=(T rhs) noexcept {
value = adjust(adjust(value) - rhs);
return *this;
}
endian_wrapper& operator-=(endian_wrapper rhs) noexcept {
value = adjust(adjust(value) - adjust(rhs.value));
return *this;
}
private:
T adjust(T x) const noexcept {
return (mode == endian::native ? x : swap_endian(x));
}
};

Loading…
Откажи
Сачувај