5#ifndef INCLUDE_V8_MAYBE_H_
6#define INCLUDE_V8_MAYBE_H_
23namespace api_internal {
101 return std::move(value_);
109 return has_value_ ? value_ : default_value;
122 explicit Maybe(
const T& t) : has_value_(true), value_(t) {}
123 explicit Maybe(T&& t) : has_value_(true), value_(std::move(t)) {}
125 bool has_value_ =
false;
130 template <
class U, std::enable_if_t<!std::is_lvalue_reference_v<U>>*>
147template <
class T, std::enable_if_t<!std::is_lvalue_reference_v<T>>* =
nullptr>
172 explicit Maybe(JustTag) : is_valid_(true) {}
174 bool is_valid_ =
false;
Definition: conditional-stack-allocated.h:19
bool operator==(const Maybe &other) const
Definition: v8-maybe.h:161
constexpr Maybe()=default
bool IsNothing() const
Definition: v8-maybe.h:158
bool operator!=(const Maybe &other) const
Definition: v8-maybe.h:165
bool IsJust() const
Definition: v8-maybe.h:159
Definition: v8-maybe.h:39
T FromMaybe(const T &default_value) const
Definition: v8-maybe.h:108
Maybe(internal::NullMaybeType)
Definition: v8-maybe.h:43
bool operator!=(const Maybe &other) const
Definition: v8-maybe.h:117
bool IsNothing() const
Definition: v8-maybe.h:45
constexpr Maybe()=default
T FromJust() const &
Definition: v8-maybe.h:90
friend Maybe< U > Just(U &&u)
T FromJust() &&
Definition: v8-maybe.h:99
bool IsEmpty() const
Definition: v8-maybe.h:52
bool MoveTo(T *out) &&
Definition: v8-maybe.h:81
void Check() const
Definition: v8-maybe.h:63
bool To(T *out) const
Definition: v8-maybe.h:71
friend Maybe< U > Just(const U &u)
bool IsJust() const
Definition: v8-maybe.h:46
bool operator==(const Maybe &other) const
Definition: v8-maybe.h:112
T ToChecked() const
Definition: v8-maybe.h:57
constexpr NullMaybeType kNullMaybe
Definition: v8-maybe.h:20
Definition: libplatform.h:15
constexpr Maybe< T > Nothing()
Definition: v8-maybe.h:135
Maybe< void > JustVoid()
Definition: v8-maybe.h:179
Maybe< T > Just(const T &t)
Definition: v8-maybe.h:140
Definition: v8-maybe.h:18
#define V8_EXPORT
Definition: v8config.h:849
#define V8_INLINE
Definition: v8config.h:513
#define V8_LIKELY(condition)
Definition: v8config.h:674
#define V8_WARN_UNUSED_RESULT
Definition: v8config.h:684
#define V8_UNLIKELY(condition)
Definition: v8config.h:673