diff options
Diffstat (limited to 'src/crepe')
-rw-r--r-- | src/crepe/util/OptionalRef.h | 22 | ||||
-rw-r--r-- | src/crepe/util/OptionalRef.hpp | 21 |
2 files changed, 16 insertions, 27 deletions
diff --git a/src/crepe/util/OptionalRef.h b/src/crepe/util/OptionalRef.h index 57f9635..253bc07 100644 --- a/src/crepe/util/OptionalRef.h +++ b/src/crepe/util/OptionalRef.h @@ -25,26 +25,20 @@ public: */ OptionalRef<T> & operator=(T & ref); /** - * \brief Check if this reference is not empty - * - * \returns `true` if reference is set, or `false` if it is not - */ - explicit operator bool() const noexcept; - - /** - * \brief Assign new reference - * - * \param ref Reference to assign - */ - void set(T & ref) noexcept; - /** * \brief Retrieve this reference * * \returns Internal reference if it is set * * \throws std::runtime_error if this function is called while the reference it not set */ - T & get() const; + operator T & () const; + /** + * \brief Check if this reference is not empty + * + * \returns `true` if reference is set, or `false` if it is not + */ + explicit operator bool() const noexcept; + /** * \brief Make this reference empty */ diff --git a/src/crepe/util/OptionalRef.hpp b/src/crepe/util/OptionalRef.hpp index 71e2a39..ae7c73e 100644 --- a/src/crepe/util/OptionalRef.hpp +++ b/src/crepe/util/OptionalRef.hpp @@ -8,29 +8,19 @@ namespace crepe { template <typename T> OptionalRef<T>::OptionalRef(T & ref) { - this->set(ref); + this->ref = &ref; } template <typename T> -T & OptionalRef<T>::get() const { +OptionalRef<T>::operator T & () const { if (this->ref == nullptr) throw std::runtime_error("OptionalRef: attempt to dereference nullptr"); return *this->ref; } template <typename T> -void OptionalRef<T>::set(T & ref) noexcept { - this->ref = &ref; -} - -template <typename T> -void OptionalRef<T>::clear() noexcept { - this->ref = nullptr; -} - -template <typename T> OptionalRef<T> & OptionalRef<T>::operator=(T & ref) { - this->set(ref); + this->ref = &ref; return *this; } @@ -39,4 +29,9 @@ OptionalRef<T>::operator bool() const noexcept { return this->ref != nullptr; } +template <typename T> +void OptionalRef<T>::clear() noexcept { + this->ref = nullptr; +} + } // namespace crepe |