diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-08-18 21:39:29 +0200 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-08-18 21:39:29 +0200 |
| commit | da70596895d8135e08f8caac6978117697b4c021 (patch) | |
| tree | 2516785b5434df8453687f05dc8dd877438901ab /dev/Kernel/NewKit/OwnPtr.hxx | |
| parent | 005de79004c9d30e64bdee6e14e06f9d47d1f2ab (diff) | |
[REFACTOR]
Improved project structure.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/Kernel/NewKit/OwnPtr.hxx')
| -rw-r--r-- | dev/Kernel/NewKit/OwnPtr.hxx | 94 |
1 files changed, 0 insertions, 94 deletions
diff --git a/dev/Kernel/NewKit/OwnPtr.hxx b/dev/Kernel/NewKit/OwnPtr.hxx deleted file mode 100644 index 6e42b33f..00000000 --- a/dev/Kernel/NewKit/OwnPtr.hxx +++ /dev/null @@ -1,94 +0,0 @@ - -/* ------------------------------------------- - - Copyright ZKA Technologies. - -------------------------------------------- */ - -#pragma once - -#include <NewKit/Defines.hxx> -#include <NewKit/KernelCheck.hxx> -#include <NewKit/Ref.hxx> - -namespace Kernel -{ - template <typename T> - class OwnPtr; - - template <typename T> - class NonNullRefPtr; - - template <typename T> - class OwnPtr final - { - public: - OwnPtr() - { - } - ~OwnPtr() - { - this->Delete(); - } - - OwnPtr& operator=(const OwnPtr&) = default; - OwnPtr(const OwnPtr&) = default; - - public: - template <typename... Args> - bool New(Args&&... arg) - { - if (fCls) - { - return false; - } - - fCls = new T(arg...); - return fCls; - } - - void Delete() - { - if (fCls) - delete fCls; - - fCls = nullptr; - } - - T* operator->() const - { - return fCls; - }; - T* Raw() - { - return fCls; - } - - Ref<T> AsRef() - { - return Ref<T>(fCls); - } - - operator bool() - { - return fCls; - } - bool operator!() - { - return !fCls; - } - - private: - T* fCls; - }; - - template <typename T, typename... Args> - OwnPtr<T> make_ptr(Args... args) - { - OwnPtr<T> ret; - ret.template New<Args...>(forward(args)...); - MUST_PASS(ret); - - return ret; - } -} // namespace Kernel |
