summaryrefslogtreecommitdiffhomepage
path: root/dev
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-11-20 03:13:07 -0500
committerAmlal El Mahrouss <amlal@nekernel.org>2025-11-20 03:13:07 -0500
commitd73d1d2880d742a46602a94d0a888c981054feb4 (patch)
tree3913b547048db2ca95d372e286c765a02959166e /dev
parent1e4aa5a4f4a1e9c2b9fed58d569fe50fd45da04e (diff)
feat: LibC++: work in progress placement new system.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev')
-rw-r--r--dev/LibC++/filesystem.h2
-rw-r--r--dev/LibC++/new.h38
2 files changed, 29 insertions, 11 deletions
diff --git a/dev/LibC++/filesystem.h b/dev/LibC++/filesystem.h
index 59e73a0..0a1a39a 100644
--- a/dev/LibC++/filesystem.h
+++ b/dev/LibC++/filesystem.h
@@ -9,6 +9,8 @@
#include <LibC++/defines.h>
+/// @brief Filesystem module for LibC++
+
namespace std {
class path;
class filesystem_error;
diff --git a/dev/LibC++/new.h b/dev/LibC++/new.h
index f20dc3f..3ac60d7 100644
--- a/dev/LibC++/new.h
+++ b/dev/LibC++/new.h
@@ -8,21 +8,37 @@
#include <LibC++/defines.h>
-struct __placement_new_info;
+namespace std {
+struct placement_new;
+
+/// =========================================================
+/// @brief Disambugate non-throwing allocation functions.
+/// =========================================================
+struct nothrow_t {
+ explicit nothrow_t() = default;
+};
+
+/// =========================================================
+/// @brief Placement new metadata.
+/// =========================================================
+struct placement_new {
+ void* __base;
+ int __align;
+ long long __size;
+};
+
+using placement_new_t = placement_new;
+} // namespace std
void* operator new(size_t);
void* operator new[](size_t);
+void* operator new(size_t, const std::nothrow_t&) noexcept;
+void* operator new(size_t, void*) noexcept;
+void* operator new[](size_t, const std::nothrow_t&) noexcept;
+void* operator new[](size_t, void*) noexcept;
+
void operator delete(void*) noexcept;
-void operator delete(void*, unsigned long) noexcept;
+void operator delete(void*, size_t) noexcept;
void operator delete[](void*) noexcept;
-
-/// =========================================================
-/// @brief Placement new information structure
-/// =========================================================
-struct __placement_new_info {
- void* __base;
- int __align;
- long long __size;
-}; \ No newline at end of file