diff --git a/Include/auROXTL/MemoryModel/auMemoryAllocate.hpp b/Include/auROXTL/MemoryModel/auMemoryAllocate.hpp index d0451e6..0501ae3 100755 --- a/Include/auROXTL/MemoryModel/auMemoryAllocate.hpp +++ b/Include/auROXTL/MemoryModel/auMemoryAllocate.hpp @@ -1,3 +1,11 @@ +/*** + Copyright (C) 2024 Jamie Reece Wilson (a/k/a "Reece"). All rights reserved. + + File: auMemoryAllocate.hpp + Date: 2024-09-13 + Date: 2024-02-13 + Author: Reece +***/ #pragma once #if defined(AURORA_ROXTL_HAS_RUNTIME) && AURORA_ROXTL_HAS_RUNTIME @@ -57,13 +65,13 @@ using AuHUPOf_t = AuUPtr; template auto AuNullHeapPointer() { - return AuHeapNullUniquePointer(); + return AuUPtr(); } template auto AuNullPointer() { - return AuHeapNullUniquePointer(); + return AuUPtr(); } template diff --git a/Include/auROXTL/Objects/SOO.hpp b/Include/auROXTL/Objects/SOO.hpp index 5fb6e02..6d61325 100644 --- a/Include/auROXTL/Objects/SOO.hpp +++ b/Include/auROXTL/Objects/SOO.hpp @@ -110,7 +110,19 @@ struct AU_ALIGN(sizeof(AuUInt)) Type ## SOO }; \ \ using Type ## SOO_t = Type ## SOO; \ -using Type = Type ## SOO; +using Type = Type ## SOO; \ + \ + template \ + Type ## Unique_t Type ## UniqueOnHeap(AuHeap *pHeap, T &&... args) \ + { \ + return pHeap->NewClassUnique(AuForward(args)...); \ + } \ + \ + template \ + Type ## Shared_t Type ## SharedOnHeap(AuHeap *pHeap, T &&... args) \ + { \ + return pHeap->NewClass(AuForward(args)...); \ + } #define AU_SOO_MOVE_BASIC(Type) \ inline Type(Type &&that) \ @@ -172,19 +184,7 @@ using Type = Type ## SOO; AUROXTL_INTERFACE_SOO_HDR_EX2(vis, Type, extends, targetSize, (AU_NO_COPY_NO_MOVE(Type ## SOO)), ## __VA_ARGS__) #define AUROXTL_INTERFACE_SOO_HDR(Type, extends, targetSize, ...) \ - AUROXTL_INTERFACE_SOO_HDR_EX(, Type, extends, targetSize, ## __VA_ARGS__) \ - \ - template \ - extends ## Unique_t Type ## UniqueOnHeap(AuHeap *pHeap, T &&... args) \ - { \ - return pHeap->NewClassUnique(AuForward(args)...); \ - } \ - \ - template \ - extends ## Shared_t Type ## SharedOnHeap(AuHeap *pHeap, T &&... args) \ - { \ - return pHeap->NewClass(AuForward(args)...); \ - } + AUROXTL_INTERFACE_SOO_HDR_EX(, Type, extends, targetSize, ## __VA_ARGS__) #define AUROXTL_INTERFACE_SOO_SRC_EX(vis, Type, FullType, ...) \ vis Type ## SOO::Type ## SOO(AU_FOR_EACH_FIRST(_AUROXTL_INTERRFACE_SOO_EMITTER_0, _AUROXTL_INTERRFACE_SOO_EMITTER_1, ## __VA_ARGS__, (AuUInt32, uSize))) \