Bananymous
1292be71b2
BAN: Add FNV hash for strings
2023-03-16 15:11:22 +02:00
Bananymous
1b7625581d
Kernel: Add basic concept of Processes
...
We now create Shell as a process that has its own threads
2023-03-16 12:17:04 +02:00
Bananymous
c012822d49
BAN: Rename StringView suffix from _sv to sv
2023-03-16 12:15:16 +02:00
Bananymous
392da37f9a
BAN: Function storage is now aligned as CallableBase and not max_align_t
...
On 32 bit architecture the alignment of 16 bytes did not seem to work
on stack variables. UBSan detected whole lot of misaligned functions
from Ext2.cpp. This patch should make function alignment be big enough?
2023-03-09 01:42:17 +02:00
Bananymous
371dfe8ef3
BAN: Formatter now uses perfect forwarding on its arguments
2023-03-08 21:31:26 +02:00
Bananymous
3ac99f1bd8
BAN: Add more traits and cleanup code
2023-03-08 21:30:21 +02:00
Bananymous
7458f68c38
BAN: Error can now be constructed from c_string or format string
...
If the resulting string would overflow, we just truncate it to fit
the error message buffer (128) bytes
2023-03-08 17:05:37 +02:00
Bananymous
23b3028e15
Kernel: Rename RefCounted -> RefPtr and implement RefCounted
2023-03-08 03:26:25 +02:00
Bananymous
e480f9c195
BAN: RefCounted<> frees count if object allocation fails
2023-03-06 13:17:04 +02:00
Bananymous
e3a71289c0
BAN: fix LinkedList back/front functions
2023-03-06 01:46:52 +02:00
Bananymous
81cb342c12
BAN: Remove #error macros
2023-03-02 22:30:32 +02:00
Bananymous
1c146ba1a5
BAN: remove aligned alloc from ban
2023-03-02 22:12:42 +02:00
Bananymous
52aa98ba25
Kernel+LibC: Add some errno codes
...
Kernel now returns ENOMEM and other errnos, so we dont have to write
error messages
2023-03-02 21:10:44 +02:00
Bananymous
90a7268e5a
BAN: Rewrite RefCounted to return ErrorOr
2023-03-02 12:30:11 +02:00
Bananymous
dc1a4614fb
BAN: Errors are now moved around with TRY()
2023-02-26 02:54:34 +02:00
Bananymous
9439582154
BAN: Add ASSERT_NOT_REACHED()
2023-02-26 02:53:58 +02:00
Bananymous
6c1f0d1dc8
BAN: Add big_endian_to_host in Math
2023-02-23 15:58:32 +02:00
Bananymous
0e77b4dc4e
BAN: You can now transform little endian data to host endian
2023-02-22 21:47:22 +02:00
Bananymous
f98f3d851c
BAN: HashMap uses LinkedList as bucket, so kmalloc_fixed can be used
2023-02-22 21:46:41 +02:00
Bananymous
a845f8696c
BAN: Add function to decode utf-8 encoded strings
...
works for 3 byte unicode characters
2023-02-22 21:45:26 +02:00
Bananymous
4afc4660a4
BAN: Basic containers have shrink_to_fit() method
...
I also chaged the default memory allocation increase from 1.5 to 2
2023-02-22 02:07:05 +02:00
Bananymous
5d31e89574
Kernel: Update ErrorOr API and add path find to VFS
...
These two are done on the same commit since Changes to Shell were
annoying to make work with only one change
2023-02-22 01:23:11 +02:00
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