From b0d0e894a4394eed25dbb5cead12edd08a510a92 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Sun, 24 Aug 2025 14:13:34 +0200 Subject: feat! use `chunk_string` in the CGI module. Add additional constructors for `chunk_string` Signed-off-by: Amlal El Mahrouss --- dev/lib/memory/tracked_ptr.hpp | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) (limited to 'dev/lib/memory') diff --git a/dev/lib/memory/tracked_ptr.hpp b/dev/lib/memory/tracked_ptr.hpp index da7e46c..7030f40 100644 --- a/dev/lib/memory/tracked_ptr.hpp +++ b/dev/lib/memory/tracked_ptr.hpp @@ -9,7 +9,7 @@ #include #include -#include +#include #include #include @@ -45,19 +45,24 @@ namespace snu::memory template void retain(T*& ptr, U&&... args) { - ptr = new T(args...); + ptr = new T(std::forward(args)...); if (ptr) { ++allocated_count_; + return; } - else - { - throw std::bad_alloc(); - } + + throw std::bad_alloc(); + } + + template + void must_retain(T*& ptr, U&&... args) noexcept + { + this->retain(ptr, args...); } - void dispose(T*& ptr) + void dispose(T*& ptr) noexcept { if (ptr) { @@ -96,10 +101,17 @@ namespace snu::memory { T* ptr = nullptr; allocator_.retain(ptr, std::forward(args)...); + return ptr; } - void dispose(T*& ptr) + template + T* must_retain(U&&... args) noexcept + { + return this->retain(std::forward(args)...); + } + + void dispose(T*& ptr) noexcept { allocator_.dispose(ptr); } @@ -190,7 +202,7 @@ namespace snu::memory } private: - T* ptr_ = nullptr; + T* ptr_{nullptr}; }; template -- cgit v1.2.3