[+] AU_OPERATOR_COPY

[+] AU_OPERATOR_MOVE
[+] AU_OPERATOR_COPY_MOVE
This commit is contained in:
Reece Wilson 2024-03-25 13:39:43 +00:00
parent 779e884caf
commit 3085ddc97b

View File

@ -8,16 +8,20 @@
***/
#pragma once
#define AU_DEF(type) inline type() = default;
#define AU_DEF(type) inline type() = default;
#define AU_COPY(type) inline type(const type&) = default; inline type &operator=(const type &) = default;
#define AU_MOVE(type) inline type(type&&) = default; inline type &operator=(type &&) = default;
#define AU_COPY_MOVE(type) AU_COPY(type) AU_MOVE(type)
#define AU_COPY_MOVE_DEF(type) AU_COPY(type) AU_MOVE(type) AU_DEF(type)
#define AU_COPY(type) inline type(const type&) = default; inline type &operator=(const type &) = default;
#define AU_MOVE(type) inline type(type&&) = default; inline type &operator=(type &&) = default;
#define AU_COPY_MOVE(type) AU_COPY(type) AU_MOVE(type)
#define AU_COPY_MOVE_DEF(type) AU_COPY(type) AU_MOVE(type) AU_DEF(type)
#define AU_NO_COPY(type) inline type(const type&) = delete;
#define AU_NO_MOVE(type) inline type(type&&) = delete;
#define AU_NO_COPY_NO_MOVE(type) AU_NO_COPY(type) AU_NO_MOVE(type)
#define AU_NO_COPY(type) inline type(const type&) = delete;
#define AU_NO_MOVE(type) inline type(type&&) = delete;
#define AU_NO_COPY_NO_MOVE(type) AU_NO_COPY(type) AU_NO_MOVE(type)
#define AU_OPERATOR_COPY(type) inline type &operator =(const type &copy) { AuResetMember(*this, copy); return *this; }
#define AU_OPERATOR_MOVE(type) inline type &operator =(type &&move) { AuResetMember(*this, AuMove(move)); return *this; }
#define AU_OPERATOR_COPY_MOVE(type) AU_OPERATOR_COPY(type) AU_OPERATOR_MOVE(type)
#if !defined(AU_SHARED_FROM_THIS)
#define AU_SHARED_FROM_THIS (AuStaticPointerCast<AuRemovePointer_t<decltype(this)>>(this->SharedFromThis()))