Browse Source

Add constexpr to TriStateBool class

adaptive-webui-19844
Chocobo1 7 years ago
parent
commit
9631a9c2ad
No known key found for this signature in database
GPG Key ID: 210D9C873253A68C
  1. 25
      src/base/tristatebool.cpp
  2. 28
      src/base/tristatebool.h

25
src/base/tristatebool.cpp

@ -31,28 +31,3 @@ @@ -31,28 +31,3 @@
const TriStateBool TriStateBool::Undefined(-1);
const TriStateBool TriStateBool::False(0);
const TriStateBool TriStateBool::True(1);
TriStateBool::operator int() const
{
return m_value;
}
TriStateBool::TriStateBool(int value)
{
if (value < 0)
m_value = -1;
else if (value > 0)
m_value = 1;
else
m_value = 0;
}
bool TriStateBool::operator==(const TriStateBool &other) const
{
return (m_value == other.m_value);
}
bool TriStateBool::operator!=(const TriStateBool &other) const
{
return !operator==(other);
}

28
src/base/tristatebool.h

@ -36,15 +36,29 @@ public: @@ -36,15 +36,29 @@ public:
static const TriStateBool False;
static const TriStateBool True;
TriStateBool() = default;
TriStateBool(const TriStateBool &other) = default;
constexpr TriStateBool() = default;
constexpr TriStateBool(const TriStateBool &other) = default;
explicit constexpr TriStateBool(int value)
: m_value(value < 0 ? -1 : (value > 0 ? 1 : 0))
{
}
explicit TriStateBool(int value);
explicit operator int() const;
explicit constexpr operator int() const
{
return m_value;
}
TriStateBool &operator=(const TriStateBool &other) = default;
bool operator==(const TriStateBool &other) const;
bool operator!=(const TriStateBool &other) const;
TriStateBool &operator=(const TriStateBool &other) = default; // add constexpr when using C++14
constexpr bool operator==(const TriStateBool &other) const
{
return (m_value == other.m_value);
}
constexpr bool operator!=(const TriStateBool &other) const
{
return !operator==(other);
}
private:
signed char m_value = -1; // Undefined by default

Loading…
Cancel
Save