diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-11-20 03:13:07 -0500 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2025-11-20 03:13:07 -0500 |
| commit | d73d1d2880d742a46602a94d0a888c981054feb4 (patch) | |
| tree | 3913b547048db2ca95d372e286c765a02959166e /dev | |
| parent | 1e4aa5a4f4a1e9c2b9fed58d569fe50fd45da04e (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.h | 2 | ||||
| -rw-r--r-- | dev/LibC++/new.h | 38 |
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 |
