From cf63552b2aa89778b0ce6a4ca1dd8de85bc4fef8 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Tue, 17 Jan 2023 11:38:16 +0200 Subject: [PATCH] BAN: Cleanup includes --- BAN/BAN/Memory.cpp | 13 +++++ BAN/BAN/String.cpp | 1 + BAN/Makefile | 1 + BAN/include/BAN/Errors.h | 96 ++++++++++++++++++----------------- BAN/include/BAN/ForwardList.h | 11 ++-- BAN/include/BAN/Memory.h | 15 +----- BAN/include/BAN/Queue.h | 1 + BAN/include/BAN/String.h | 1 - BAN/include/BAN/Vector.h | 1 + 9 files changed, 75 insertions(+), 65 deletions(-) create mode 100644 BAN/BAN/Memory.cpp diff --git a/BAN/BAN/Memory.cpp b/BAN/BAN/Memory.cpp new file mode 100644 index 00000000..c669032e --- /dev/null +++ b/BAN/BAN/Memory.cpp @@ -0,0 +1,13 @@ +#include + +namespace std { enum class align_val_t : size_t {}; } + +void* operator new(size_t size) { return BAN::allocator(size); } +void* operator new[](size_t size) { return BAN::allocator(size); } +void* operator new(size_t size, std::align_val_t align) { return BAN::allocator_align(size, (size_t)align); } +void* operator new[](size_t size, std::align_val_t align) { return BAN::allocator_align(size, (size_t)align); } + +void operator delete(void* addr) { BAN::deallocator(addr); } +void operator delete[](void* addr) { BAN::deallocator(addr); } +void operator delete(void* addr, size_t) { BAN::deallocator(addr); } +void operator delete[](void* addr, size_t) { BAN::deallocator(addr); } diff --git a/BAN/BAN/String.cpp b/BAN/BAN/String.cpp index cd571ddc..7c4908cf 100644 --- a/BAN/BAN/String.cpp +++ b/BAN/BAN/String.cpp @@ -1,5 +1,6 @@ #include #include +#include #include #include #include diff --git a/BAN/Makefile b/BAN/Makefile index 38dfc377..9da65528 100644 --- a/BAN/Makefile +++ b/BAN/Makefile @@ -31,6 +31,7 @@ BUILDDIR=$(abspath build) FREEOBJS= \ $(ARCH_FREEOBJS) \ +BAN/Memory.o \ BAN/String.o \ BAN/StringView.o \ diff --git a/BAN/include/BAN/Errors.h b/BAN/include/BAN/Errors.h index 357d5c34..d531e9af 100644 --- a/BAN/include/BAN/Errors.h +++ b/BAN/include/BAN/Errors.h @@ -1,7 +1,6 @@ #pragma once #include -#include #include @@ -15,62 +14,65 @@ #define TRY(error) ({ auto e = error; if (e.IsError()) return e; e.Value(); }) - -class Error +namespace BAN { -public: - static Error FromString(const char* message) + + class Error { - Error result; - strncpy(result.m_message, message, sizeof(m_message)); - result.m_message[sizeof(result.m_message) - 1] = '\0'; - result.m_error_code = 0xFF; - return result; - } + public: + static Error FromString(const char* message) + { + Error result; + strncpy(result.m_message, message, sizeof(m_message)); + result.m_message[sizeof(result.m_message) - 1] = '\0'; + result.m_error_code = 0xFF; + return result; + } - uint8_t GetErrorCode() const { return m_error_code; } - const char* GetMessage() const { return m_message; } + uint8_t GetErrorCode() const { return m_error_code; } + const char* GetMessage() const { return m_message; } -private: - char m_message[128]; - uint8_t m_error_code; -}; + private: + char m_message[128]; + uint8_t m_error_code; + }; -template -class ErrorOr -{ -public: - ErrorOr(const T& value) : m_has_error(false) { m_data = (void*)new T(value); } - ErrorOr(const Error& error) : m_has_error(true) { m_data = (void*)new Error(error); } - template ErrorOr(const ErrorOr& other) : ErrorOr(other.GetError()) {} - ~ErrorOr() { IsError() ? (delete reinterpret_cast(m_data)) : (delete reinterpret_cast(m_data)); } + template + class ErrorOr + { + public: + ErrorOr(const T& value) : m_has_error(false) { m_data = (void*)new T(value); } + ErrorOr(const Error& error) : m_has_error(true) { m_data = (void*)new Error(error); } + template ErrorOr(const ErrorOr& other) : ErrorOr(other.GetError()) {} + ~ErrorOr() { IsError() ? (delete reinterpret_cast(m_data)) : (delete reinterpret_cast(m_data)); } - bool IsError() const { return m_has_error; } - const Error& GetError() const { return *reinterpret_cast(m_data); } - T& Value() { return *reinterpret_cast(m_data); } + bool IsError() const { return m_has_error; } + const Error& GetError() const { return *reinterpret_cast(m_data); } + T& Value() { return *reinterpret_cast(m_data); } -private: - bool m_has_error = false; - void* m_data = nullptr; -}; + private: + bool m_has_error = false; + void* m_data = nullptr; + }; -template<> -class ErrorOr -{ -public: - ErrorOr() { } - ErrorOr(const Error& error) : m_error(error) { } - ~ErrorOr() { } + template<> + class ErrorOr + { + public: + ErrorOr() { } + ErrorOr(const Error& error) : m_error(error) { } + ~ErrorOr() { } - bool IsError() const { return m_has_error; } - const Error& GetError() const { return m_error; } - void Value() { } + bool IsError() const { return m_has_error; } + const Error& GetError() const { return m_error; } + void Value() { } -private: - Error m_error; - bool m_has_error = false; -}; + private: + Error m_error; + bool m_has_error = false; + }; +} namespace BAN::Formatter { @@ -82,4 +84,4 @@ namespace BAN::Formatter else print(putc, "{} ({})", error.GetMessage(), error.GetErrorCode()); } -} \ No newline at end of file +} diff --git a/BAN/include/BAN/ForwardList.h b/BAN/include/BAN/ForwardList.h index f11c948e..d95bec32 100644 --- a/BAN/include/BAN/ForwardList.h +++ b/BAN/include/BAN/ForwardList.h @@ -1,14 +1,17 @@ #pragma once -template class ErrorOr; +#include namespace BAN { + + template class Array; + template class ErrorOr; + template class Function; + template class Queue; class String; class StringView; - - template class Vector; - template class Queue; + template class Vector; } diff --git a/BAN/include/BAN/Memory.h b/BAN/include/BAN/Memory.h index 08636536..155b1125 100644 --- a/BAN/include/BAN/Memory.h +++ b/BAN/include/BAN/Memory.h @@ -38,16 +38,5 @@ namespace BAN } -namespace std { enum class align_val_t : size_t {}; } - -inline void* operator new(size_t size) { return BAN::allocator(size); } -inline void* operator new[](size_t size) { return BAN::allocator(size); } -inline void* operator new(size_t size, std::align_val_t align) { return BAN::allocator_align(size, (size_t)align); } -inline void* operator new[](size_t size, std::align_val_t align) { return BAN::allocator_align(size, (size_t)align); } -inline void* operator new(size_t, void* addr) { return addr; } -inline void* operator new[](size_t, void* addr) { return addr; } - -inline void operator delete(void* addr) { BAN::deallocator(addr); } -inline void operator delete[](void* addr) { BAN::deallocator(addr); } -inline void operator delete(void* addr, size_t) { BAN::deallocator(addr); } -inline void operator delete[](void* addr, size_t) { BAN::deallocator(addr); } +inline void* operator new(size_t, void* addr) { return addr; } +inline void* operator new[](size_t, void* addr) { return addr; } diff --git a/BAN/include/BAN/Queue.h b/BAN/include/BAN/Queue.h index 488f091a..586bfdf3 100644 --- a/BAN/include/BAN/Queue.h +++ b/BAN/include/BAN/Queue.h @@ -2,6 +2,7 @@ #include #include +#include #include namespace BAN diff --git a/BAN/include/BAN/String.h b/BAN/include/BAN/String.h index 0a4570bd..aa865ffa 100644 --- a/BAN/include/BAN/String.h +++ b/BAN/include/BAN/String.h @@ -1,6 +1,5 @@ #pragma once -#include #include #include diff --git a/BAN/include/BAN/Vector.h b/BAN/include/BAN/Vector.h index c3182c71..ca1a56fa 100644 --- a/BAN/include/BAN/Vector.h +++ b/BAN/include/BAN/Vector.h @@ -2,6 +2,7 @@ #include #include +#include #include namespace BAN