mirror of
https://github.com/SerenityOS/serenity
synced 2024-10-15 04:13:11 +00:00
AK: Allow Checked += Checked, and other such operations
The overflow state from both Checkeds is OR'ed in the result.
This commit is contained in:
parent
6b7c96589b
commit
dc17e01c99
30
AK/Checked.h
30
AK/Checked.h
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Copyright (C) 2011-2019 Apple Inc. All rights reserved.
|
||||
* Copyright (c) 2020, Andreas Kling <kling@serenityos.org>
|
||||
* Copyright (c) 2020-2021, Andreas Kling <kling@serenityos.org>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
@ -186,24 +186,52 @@ public:
|
|||
m_value /= other;
|
||||
}
|
||||
|
||||
constexpr Checked& operator+=(const Checked& other)
|
||||
{
|
||||
m_overflow |= other.m_overflow;
|
||||
add(other.value());
|
||||
return *this;
|
||||
}
|
||||
|
||||
constexpr Checked& operator+=(T other)
|
||||
{
|
||||
add(other);
|
||||
return *this;
|
||||
}
|
||||
|
||||
constexpr Checked& operator-=(const Checked& other)
|
||||
{
|
||||
m_overflow |= other.m_overflow;
|
||||
sub(other.value());
|
||||
return *this;
|
||||
}
|
||||
|
||||
constexpr Checked& operator-=(T other)
|
||||
{
|
||||
sub(other);
|
||||
return *this;
|
||||
}
|
||||
|
||||
constexpr Checked& operator*=(const Checked& other)
|
||||
{
|
||||
m_overflow |= other.m_overflow;
|
||||
mul(other.value());
|
||||
return *this;
|
||||
}
|
||||
|
||||
constexpr Checked& operator*=(T other)
|
||||
{
|
||||
mul(other);
|
||||
return *this;
|
||||
}
|
||||
|
||||
constexpr Checked& operator/=(const Checked& other)
|
||||
{
|
||||
m_overflow |= other.m_overflow;
|
||||
div(other.value());
|
||||
return *this;
|
||||
}
|
||||
|
||||
constexpr Checked& operator/=(T other)
|
||||
{
|
||||
div(other);
|
||||
|
|
Loading…
Reference in a new issue