Bananymous
1af3ca19ab
BAN: Rewrite String with small string optimizations
...
String now holds a 15 byte sso buffer. I'm not sure what the size
should actually be but 15 will work for now. Maybe the sso buffer
should be contained in an union with one bit flag in size instead of
variant that uses extra 8 bytes for type index.
This patch buffs sizeof(String) from 24 bytes to 32 bytes on 64 bit.
I assume this is much better version than the old which had to make
allocation even for empty strings :D.
2023-10-29 03:11:13 +03:00
Bananymous
09fcc613c7
BAN: Add variant to ForwardList
...
I should be using the forward list more
2023-10-29 02:28:55 +03:00
Bananymous
3bffbe330d
BAN: Update ByteSpan API
...
Add ByteSpan::as_span<T> and const versions of as() and as_span()
require T to be const.
2023-10-28 22:10:47 +03:00
Bananymous
fda4a4ad24
BAN: ByteSpan can be sliced without specified size
...
This will give span with all remaining size after offset
2023-10-25 21:41:11 +03:00
Bananymous
988a4e1cd8
BAN: Fix bug of size of splice after slice()
...
I have no idea what was I doing before :D
2023-10-24 17:23:45 +03:00
Bananymous
db5c24b2a5
BAN: Implement ByteSpan
...
This is a span over exisiting containers/data types. I'm not too
happy with the constructors and assignment operators, but they will
work for now
2023-10-20 04:59:29 +03:00
Bananymous
781c950af6
BAN: add helper to cast Span<T> to Span<const T>
2023-10-20 04:59:08 +03:00
Bananymous
d2cfc843e4
BAN: Optional can now be constructed from another Optional
...
Also fix bug in release_value() where we did not call the
destructor.
2023-10-11 20:10:06 +03:00
Bananymous
eb5c6cf736
BAN: Remove endianness functions from Math
...
There is now a Endianness.h for these. The functions were super slow.
2023-09-29 19:38:07 +03:00
Bananymous
27adb9486b
BAN: Update Endiannes API
...
Add functions to swap endiannes or convert host to big/little endian
This code should be very compiler friendly and should be optimized to
single bswap instruction on x86.
2023-09-28 01:22:14 +03:00
Bananymous
b62186441b
BAN: Implement basic WeakPtr
...
This can be constructed from classes that inherit from Weakable
2023-09-25 19:43:10 +03:00
Bananymous
971eb737c1
BAN: Fix LinkedList::pop_back()
2023-09-22 17:20:35 +03:00
Bananymous
720bc418a6
All: Clear lines with only whitspace in them
2023-09-10 00:31:42 +03:00
Bananymous
cbd2519b9a
Kernel: better handle kernel errors
2023-08-29 00:13:21 +03:00
Bananymous
e8a73f9696
BuildSystem: use -a with rsync
...
This allows cmake to not rebuild whole project every time
2023-08-28 11:38:17 +03:00
Bananymous
b05cf9ef09
BuildSystem: Base sysroot is now distributed as a tar ball
...
This allows file and directory permissions work as intended.
cmake is now filled with 'sudo' but with sudo timeout this should be
fine.
2023-08-23 10:38:21 +03:00
Bananymous
2bf12a52d1
BAN: increase function size to 5 * sizeof(void*)
2023-08-22 14:52:03 +03:00
Bananymous
be5b81740e
BAN: Add enum class Iteration for for_each loops
2023-08-22 11:30:53 +03:00
Bananymous
e7458ca10a
BAN: Function call is now const
2023-08-22 11:30:40 +03:00
Bananymous
6feb8a99d2
BAN: UniqPtr can now be constructed from other convertible UniqPtr
2023-08-04 10:29:42 +03:00
Bananymous
5411c5aa4a
BAN: Fix function call in Optional
2023-07-21 10:57:46 +03:00
Bananymous
891144dac1
BAN: Iterators are now single general type with CONST template
...
This allows us to use the same base class for iterator and
const_iterator which were practically the same code.
2023-07-12 13:35:21 +03:00
Bananymous
41e7b53903
BAN: add either_or and either_or_t
...
This allows you to select type depending on constexpr evaluatable
boolean
2023-07-12 13:34:31 +03:00
Bananymous
6b0920e8c0
BAN: Implement ConstIteratorDouble and add it to HashMap
...
This is same as IteratorDouble except it uses const_iterator and does
not return non-const references.
2023-07-12 11:41:05 +03:00
Bananymous
4285729d5c
BAN: Generalize HashMapIterator to IteratorDouble
...
This iterator should be able to iterate any container within container
with type iterator defined.
This also fixed bug if first entry in outer container is empty container.
2023-07-12 09:29:05 +03:00
Bananymous
9174a89971
BAN: Add iterators to HashMap
2023-07-10 23:16:41 +03:00
Bananymous
74af46cb4a
BAN: RefPtr can be constructed from other types
2023-07-10 11:48:11 +03:00
Bananymous
c38e8de6b5
BAN: Optional can be constructed inplace
2023-06-12 23:45:36 +03:00
Bananymous
97638f7ade
BAN: Add operator-> and operator* to Optional
2023-06-12 22:25:14 +03:00
Bananymous
a0be415e09
BAN: Add basic Optional
2023-06-11 21:00:25 +03:00
Bananymous
6aff459e1c
BAN: add StringView::contains(char)
2023-06-05 22:51:02 +03:00
Bananymous
413f05bfca
BAN: Add UniqPtr
2023-06-04 00:39:20 +03:00
Bananymous
2ce244d303
BAN: Errors now includes assert.h
2023-06-03 18:53:05 +03:00
Bananymous
feea2d4024
BAN: Fix function call in Vector
2023-06-01 00:50:04 +03:00
Bananymous
cb359a05dc
BuildSystem: link libraries when they change
...
This also fixed the need for manual linkin on firt build
2023-05-31 23:01:40 +03:00
Bananymous
f79250c4d4
LibC: Rewrite all the headers.
...
We now have more or less posix issue 2018 conforming libc headers.
This was a really time consuming and boring operation but it had to
be done.
Now we get to actually start implementing libc :)
2023-05-26 22:31:21 +03:00
Bananymous
78b62776d2
BAN: libban is now build into library dir
2023-05-26 22:31:21 +03:00
Bananymous
bda4614783
BAN: Errors.h can be included from userspace
2023-05-26 22:31:21 +03:00
Bananymous
632b699475
BAN: add is_arithmetic and is_signed to Traits.h
2023-05-15 20:26:29 +03:00
Bananymous
13fabcc1f1
BAN: add pow, log2, log10, log in math
...
These are implemented using x86 floating point assembly
2023-05-10 19:03:33 +03:00
Bananymous
c2ad76fe4f
BAN: Error uses 64 bit error codes
2023-05-07 02:09:52 +03:00
Bananymous
88a2c60065
BAN: Add is_power_of_two to Math functions
2023-04-28 14:42:49 +03:00
Bananymous
c5b006bf19
BAN: Add {TRY,MUST}_REF for references
...
It is annoying that we have to have separate macros for these but
I can't find a way to cleanly return lvalue reference from statement
expression. Currently we cast the reference to pointer and return
unreference the pointer outside of the expression.
This feature will probably not be used any time soon, but atleas
it is implemented if I need it one day
2023-04-19 00:31:15 +03:00
Bananymous
115c44630d
BAN: TRY and MUST macros use rvalue references
2023-04-19 00:11:15 +03:00
Bananymous
1dc81abca4
BAN: Add specialization for ErrorOr<LValueReference>
...
ErrorOr can now return a reference :)
2023-04-18 22:02:47 +03:00
Bananymous
5aaf2128a8
BAN: Variant with reference now supports copy/assign
2023-04-18 20:21:23 +03:00
Bananymous
6aeac17072
BAN: Variant now works with references
...
References can be assigned with the set() method. Construction nor
assigment operators cannot be used with references to avoid ambiguity
with what assignment to reference does.
You can set the underlying reference with the set() method and access
it with the get() method.
The references are stored as pointers to the object under the hood
which means that size of a reference is sizeof pointer.
2023-04-18 19:53:34 +03:00
Bananymous
6d425182a2
BAN: Variant::set now copy/move assigns when possible
2023-04-18 19:10:22 +03:00
Bananymous
04ac23b67c
BAN: Variant now has variadic template types
2023-04-18 18:29:48 +03:00
Bananymous
9c0f3dd996
Kernel: Move kmalloc and MMU to Memory directory
2023-04-18 10:18:15 +03:00