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));
}
};

불러오는 중...
취소
저장