diff options
Diffstat (limited to 'tools/aapt2/util/Maybe.h')
-rw-r--r-- | tools/aapt2/util/Maybe.h | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/tools/aapt2/util/Maybe.h b/tools/aapt2/util/Maybe.h index 595db960d5e5..a31bc89fa98b 100644 --- a/tools/aapt2/util/Maybe.h +++ b/tools/aapt2/util/Maybe.h @@ -88,6 +88,8 @@ public: */ const T& value() const; + T valueOrDefault(const T& def) const; + private: template <typename U> friend class Maybe; @@ -263,6 +265,14 @@ const T& Maybe<T>::value() const { } template <typename T> +T Maybe<T>::valueOrDefault(const T& def) const { + if (mNothing) { + return def; + } + return reinterpret_cast<const T&>(mStorage); +} + +template <typename T> void Maybe<T>::destroy() { reinterpret_cast<T&>(mStorage).~T(); } @@ -306,6 +316,19 @@ typename std::enable_if< return !(a == b); } +template <typename T, typename U> +typename std::enable_if< + has_lt_op<T, U>::value, + bool +>::type operator<(const Maybe<T>& a, const Maybe<U>& b) { + if (a && b) { + return a.value() < b.value(); + } else if (!a && !b) { + return false; + } + return !a; +} + } // namespace aapt #endif // AAPT_MAYBE_H |