69 lines
1.3 KiB
Diff
69 lines
1.3 KiB
Diff
--- a/lib/process.cpp
|
|
+++ b/lib/process.cpp
|
|
@@ -381,6 +381,32 @@
|
|
handler_->filter_events(process_event_filter);
|
|
}
|
|
|
|
+ template<class A, class B>
|
|
+ constexpr bool cmp_less(A a, B b) noexcept
|
|
+ {
|
|
+ static_assert(std::is_integral_v<A>);
|
|
+ static_assert(std::is_integral_v<B>);
|
|
+ if constexpr (std::is_signed_v<A> == std::is_signed_v<B>) {
|
|
+ return a < b;
|
|
+ }
|
|
+ else if constexpr (std::is_signed_v<A>) {
|
|
+ if (a < 0) {
|
|
+ return true;
|
|
+ }
|
|
+ else {
|
|
+ return std::make_unsigned_t<A>(a) < b;
|
|
+ }
|
|
+ }
|
|
+ else {
|
|
+ if (b < 0) {
|
|
+ return false;
|
|
+ }
|
|
+ else {
|
|
+ return a < std::make_unsigned_t<B>(b);
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+
|
|
template<typename Out, typename In>
|
|
constexpr Out clamped_cast(In in) noexcept
|
|
{
|
|
@@ -446,32 +472,6 @@
|
|
|
|
return true;
|
|
}
|
|
-
|
|
- template<class A, class B>
|
|
- constexpr bool cmp_less(A a, B b) noexcept
|
|
- {
|
|
- static_assert(std::is_integral_v<A>);
|
|
- static_assert(std::is_integral_v<B>);
|
|
- if constexpr (std::is_signed_v<A> == std::is_signed_v<B>) {
|
|
- return a < b;
|
|
- }
|
|
- else if constexpr (std::is_signed_v<A>) {
|
|
- if (a < 0) {
|
|
- return true;
|
|
- }
|
|
- else {
|
|
- return std::make_unsigned_t<A>(a) < b;
|
|
- }
|
|
- }
|
|
- else {
|
|
- if (b < 0) {
|
|
- return false;
|
|
- }
|
|
- else {
|
|
- return a < std::make_unsigned_t<B>(b);
|
|
- }
|
|
- }
|
|
- }
|
|
|
|
rwresult read(void* buffer, size_t len)
|
|
{
|