Commit Graph

239 Commits

Author SHA1 Message Date
Bananymous 9aab67fed8 BAN: make all Math functions inline constexpr 2023-02-22 01:17:56 +02:00
Bananymous 10b6d51522 BAN: implement Variant<> for two types 2023-02-22 01:17:21 +02:00
Bananymous afd4b7a184 BAN: HashMap now copies size when copying :D 2023-02-22 01:16:07 +02:00
Bananymous fbc17eb6dd BAN: Implement basic HashMap 2023-02-20 16:00:51 +02:00
Bananymous 247f03c79e BAN: Make ErrorOr<> have attribute [[nodiscard]]
We don't have to specify it everytime we make function return ErrorOr
2023-02-19 20:10:30 +02:00
Bananymous 66a4b69a29 BAN: Math now uses template concepts and add div_round_up 2023-02-19 00:48:56 +02:00
Bananymous 7f12a7050a BAN: Add data() to Vector.
This allows you to access the underlying data in a vector
2023-02-16 20:47:49 +02:00
Bananymous f188fea81c BAN: Implement basic HashSet 2023-02-10 02:59:52 +02:00
Bananymous 7630df84ad BAN: Add basic hashing functionality 2023-02-10 02:59:30 +02:00
Bananymous 4f8fcf0bd7 BAN: Add Formatter specialization for Vector 2023-02-10 02:58:14 +02:00
Bananymous f68ae01d0c BAN: Fix ErrorOr<void> to actually set error byte 2023-02-10 01:06:18 +02:00
Bananymous 7ee4ecd7f4 BAN: Vector's and Queue's underlying type is T* instead of uint8_t*
I have no idea what kind of brainfart I had to make use uint8_t*
that just complicated the code :D
2023-02-10 00:12:23 +02:00
Bananymous e5ffc1686f BAN: Vector::const_iterator now uses const T* as underlying type 2023-02-09 23:06:49 +02:00
Bananymous bfc9a2377c BAN: LinkedList now uses iterators instead of const_iterators on methods 2023-02-09 23:06:16 +02:00
Bananymous 6a133782ed All: Move to c++20 2023-02-09 23:05:26 +02:00
Bananymous 338771c5b0 BAN: Cleanup Vector code
*Applies to last patch also!*

Remove duplicate code in iterators. We used to have separate iterator
and const_iterator but now they are the same class with some enable_if
magic to disable references from const_iterator

This introduces some 'bad things' you can for example call
const_iterator.operator*<false>() to obtain non const reference. I
don't think this matters since you could use const_cast or something
else to work around const if you really tried
2023-02-07 11:08:05 +02:00
Bananymous 08dfb0e1db BAN: Cleanup LinkedList code 2023-02-06 19:01:52 +02:00
Bananymous 2403df50bb BAN: Add getter for Function size 2023-02-02 23:19:18 +02:00
Bananymous 0d2d6e5348 BAN: Fix all emplace functions to actually do perfect forwarding 2023-02-01 21:41:51 +02:00
Bananymous 99cf1c0330 BAN: Add destructor to function if it needs to deallocate something someday 2023-02-01 21:41:18 +02:00
Bananymous 9b8de5025a All: rename every function from UpperCamelCase to snake_case
This was a mess since I didn't know which to use but now I decided
to go with snake_case :)
2023-02-01 21:05:44 +02:00
Bananymous 4faa662a59 BAN: Rewrite Traits and add some more of them 2023-02-01 20:05:34 +02:00
Bananymous 1945b716ad BAN: Implement basic LinkedList 2023-02-01 01:22:41 +02:00
Bananymous 5127da9ecc BAN: Add more traits 2023-02-01 01:22:19 +02:00
Bananymous 56d6b2af3d BAN: TRY() now returns the error itself and not ErrorOr<>
This allows us to use TRY with different ErrorOr<> templates
2023-02-01 01:21:14 +02:00
Bananymous 3a1f068bac BAN: Add needed include to Function 2023-01-31 18:43:24 +02:00
Bananymous f10a57dcec BAN: Add RefCounted<> and Unique<>
We have now maybe functional smart pointers
2023-01-31 18:43:09 +02:00
Bananymous b315fdc27f Kernel: Finally managed to get 64-bit working
I had weird problems with interrupts but everything should work now
2023-01-25 19:19:28 +02:00
Bananymous 7c6d474a3a BAN: Add basic ScopeGuard 2023-01-23 17:41:34 +02:00
Bananymous c9e32b1b5b BAN: Cleanup Queue AddressOf functions 2023-01-18 17:19:57 +02:00
Bananymous 64f0cc0d42 BAN: fix Vector code
one return value was missing and AddressOf functions were kinda ugly
2023-01-18 17:18:54 +02:00
Bananymous dd607ce86f BAN: Add basic lambda support for BAN::Function 2023-01-18 14:39:31 +02:00
Bananymous ef2e8f1a2f BAN: Move RemoveReference and IsLValueReference to their own header
Also implement basic Less, Equal, Greater
2023-01-18 13:39:08 +02:00
Bananymous 59fa4055a6 BAN: Add Queue::Emplace() 2023-01-17 12:02:59 +02:00
Bananymous 1340e26148 BAN: Add Vector::Emplace and EmplaceBack() and fix insert assignment 2023-01-17 11:59:36 +02:00
Bananymous cf63552b2a BAN: Cleanup includes 2023-01-17 11:38:16 +02:00
Bananymous a7a55cd0fb BAN: Rename Forward.h -> ForwardList.h to avoid confusion with BAN::Forward() 2023-01-17 11:21:21 +02:00
Bananymous 53a5ad3cf9 BAN: Function now properly forward arguments 2023-01-17 11:16:46 +02:00
Bananymous 124afbecaa BAN: Add Forward() 2023-01-17 11:15:57 +02:00
Bananymous 5122d27f89 BAN: Add Front() and Back() to StringView 2023-01-16 18:56:51 +02:00
Bananymous 3561257286 BAN: Add basic Function for function pointers and member functions 2023-01-16 15:09:27 +02:00
Bananymous a02d4c59ed BAN: Vector and Queue replace Address() with AddressOf and correct const 2023-01-16 12:10:16 +02:00
Bananymous c62d512d68 BAN: Add Iterator and ConstIterator to Vector 2023-01-13 17:48:19 +02:00
Bananymous 57cbd728db BAN: Rewrite Queue with move semantics 2023-01-13 15:04:06 +02:00
Bananymous 0f4e95acc5 BAN: Rewrite vector with move semantics 2023-01-13 15:04:06 +02:00
Bananymous 065e23d307 BAN: fix include 2023-01-13 15:04:06 +02:00
Bananymous 82a25f9035 BAN: implement placement new 2023-01-13 14:45:27 +02:00
Bananymous 61de71e0d5 BAN: Properly allocate/deallocate elements in Vector/Queue 2023-01-13 01:09:40 +02:00
Bananymous 6ed542d6bf BAN: Queue and Vector now default initialize newly allocated elements 2023-01-13 01:00:50 +02:00
Bananymous c35181a92f BAN: ASSERT now prints the condition 2023-01-13 00:57:47 +02:00
Bananymous 53d1d12c12 BAN: String add operator=(StringView) 2023-01-13 00:57:47 +02:00
Bananymous c33c6c5785 BAN: memcpy only if we already have a buffer 2023-01-13 00:17:19 +02:00
Bananymous 6b73547989 All: edit gcc flags 2023-01-13 00:04:15 +02:00
Bananymous 61bd9da8e0 BAN: Add [[nodiscard]] to BAN functions returning ErrorOr 2023-01-12 23:57:07 +02:00
Bananymous 78da037dda BAN: String, Queue and Vector dont use floating point arithmetic 2023-01-12 17:00:29 +02:00
Bananymous 67308c36ad BAN: ErrorOr<void> does not do an heap allocation anymore 2023-01-12 00:11:54 +02:00
Bananymous d02e3b19c7 BAN: Move operator new/delete to BAN/Memory.cpp
We also now implement alignment new
2023-01-10 21:59:40 +02:00
Bananymous 6f9552d673 BAN: Add math to its own namespace 2023-01-10 19:11:27 +02:00
Bananymous ee83cd3430 BAN: Implement basic static array 2023-01-10 17:52:00 +02:00
Bananymous 85068e27d6 BAN: BAN/Memory.h now provides the operator new and delete 2023-01-10 17:51:33 +02:00
Bananymous 1a65ea977d BAN: Better ASSERT() 2023-01-10 17:43:18 +02:00
Bananymous efd8638a96 Kernel: Improve kernel panic message and rename it 'panic'->'Panic' 2023-01-09 21:57:03 +02:00
Bananymous b60af90538 BAN: Add min, max and clamp 2022-12-30 19:52:16 +02:00
Bananymous f0fd62c703 BAN: Strings can now be constructed using BAN::Formatter 2022-12-27 20:01:05 +02:00
Bananymous fd4fdffd46 BAN::Formatter now takes putc like function as a parameter
This allows us to use capturing lambdas as a putc like function
2022-12-27 19:55:07 +02:00
Bananymous 6732cabf20 BAN: StringView::Split now accepts a function
Original overload with char is not threadsafe anymore, but I don't
want to duplicate code :)
2022-12-20 11:50:32 +02:00
Bananymous 7ae00ac76e BAN: Vector now has a Has() function 2022-12-20 11:38:29 +02:00
Bananymous 4c559f50a4 BAN: StringView::Split() now precomputes number of elements
We dont have to resize vector on PushBack()'s if we reserve required size
2022-12-20 11:37:28 +02:00
Bananymous d5a068f90c BAN: String and StringView don't have to compute strlen for equality 2022-12-20 11:36:01 +02:00
Bananymous 9fa3d891e9 BAN: Vector now has a copy constructor 2022-12-15 17:28:12 +02:00
Bananymous c21766760b Add strlen comparing back to StringView since it is not nullterminated 2022-12-13 22:45:51 +02:00
Bananymous ced05ff5f2 BAN: use only memcmp when comparing string(view) with const char* 2022-12-13 21:32:51 +02:00
Bananymous bf7a320050 BAN: Fix Time format printing 2022-12-13 21:04:09 +02:00
Bananymous 5345b6b8c3 BAN: overloaded operator== for more types 2022-12-13 20:55:09 +02:00
Bananymous d806778a6d BAN: Formatter now passes arguments as const references
We used to take everything by value, since I wasn't sure if I wanted
to overload bigger types
2022-12-13 20:43:43 +02:00
Bananymous cb6dee9d91 BAN: Implement more basic functionality
String has more features
StringView was implemented
Basic move semantics are now working
Added file for forward declarations
2022-12-13 20:41:32 +02:00
Bananymous 941238830e BAN: Now actually build libban :D 2022-12-13 16:13:38 +02:00
Bananymous 57b5e7ecf3 BAN: Add pragma once to String and Vector 2022-12-13 15:15:36 +02:00
Bananymous b42469efd7 BAN: Vector now has Back() and Front() helpers 2022-12-13 15:08:12 +02:00
Bananymous b491007eac BAN: Default constructed string is now nullterminated 2022-12-13 15:07:35 +02:00
Bananymous 07f61d9b82 BAN: Implement basic vector 2022-12-13 14:43:58 +02:00
Bananymous 171a33bbcd Kernel/BAN: Add weekday to Time structure and get it with RTC 2022-12-13 14:37:10 +02:00
Bananymous 00f230fcb2 BAN: Add basic String implementation 2022-12-13 14:37:10 +02:00
Bananymous 19307ce197 BAN: MUST() now returns the underlying value 2022-12-13 14:37:10 +02:00
Bananymous b49a873d54 BAN: Add allocator/deallocator references for kernel/userspace 2022-12-13 13:40:54 +02:00
Bananymous 52c793bb5c Kernel/BAN: Make Time a struct in BAN and add formatter to it 2022-12-13 12:37:26 +02:00
Bananymous 3cda527987 BAN: Rename BAN::Formatter argument overload thing 2022-12-13 12:30:48 +02:00
Bananymous 334abe6b27 Kernel: lol 2022-12-13 12:12:15 +02:00
Bananymous 835430e7b0 BAN: Move Formatter to new project called BAN
I also implemented basic ErrorOr and Queue
2022-12-13 10:39:57 +02:00