Commit Graph

317 Commits

Author SHA1 Message Date
Bananymous 939cbf46e4 BAN: Implement BAN::UTF8::to_codepoint() for single byte types 2024-06-03 03:39:57 +03:00
Bananymous cfdce9be61 BAN: Mark RefPtr and WeakPtr helper destructors virtual
Also fix a bug in WeakPtr::lock() which would assert false if the
underlying weak link was not initialized
2024-06-02 16:50:26 +03:00
Bananymous b2a4797d16 BAN: Fix dwarnln and derrorln stop color 2024-05-31 13:04:36 +03:00
Bananymous 30592b27ce BAN: Add comparison operators for RefPtr 2024-05-29 13:50:03 +03:00
Bananymous 54db4ab215 BAN: Increase BAN::Function storage size to 8 pointers 2024-05-28 16:01:41 +03:00
Bananymous f5987b68ff BAN: Mark some class methods as constexpr 2024-05-28 01:07:29 +03:00
Bananymous 06f4b0b29a BAN: Make String and StringView header only
This allows linking with libc without having to link ban
2024-05-23 15:43:26 +03:00
Bananymous 090a294017 BAN: Add {little,big}_endian_to_host
These just call host_to_{little,big}_endian but are more verbose
and cleaner.
2024-04-09 01:13:28 +03:00
Bananymous 3c62be3f5d BAN: Implement make_signed and make_unsigned 2024-03-22 12:35:20 +02:00
Bananymous e447d5fccf All: remove obsolete gitignore files
These have not been in use for almost a year
2024-03-18 15:28:46 +02:00
Bananymous 54d0cb47cd BAN: Update ASSERT_NOT_REACHED message 2024-03-08 22:11:39 +02:00
Bananymous efed67cbd0 BAN: Remove unnecessary default constructor from Array 2024-03-06 16:01:52 +02:00
Bananymous 8670364f44 BAN: Remove unnecessary include from Array.h 2024-03-06 00:01:06 +02:00
Bananymous 9c36d7c338 BAN/Kernel: Rework assertion/panic system
BAN/Assert.h does not need any includes meaning it can be included
anywhere without problems.
2024-03-04 11:41:54 +02:00
Bananymous efd8203232 BAN: Atomic memory order can be set per function call 2024-03-03 01:41:46 +02:00
Bananymous 1971813336 BAN: Add HashMap::remove(iterator) 2024-02-28 22:35:42 +02:00
Bananymous 3c88d2aad3 BAN: Implement find() for HashMap 2024-02-28 13:20:24 +02:00
Bananymous 6ebfe05fce BAN: Add parenthesis in ASSERT macros 2024-02-25 21:22:47 +02:00
Bananymous fb0d8d746f BAN: Add {max,min}_exponent{2,10} to numeric_limits<T> 2024-02-16 15:27:40 +02:00
Bananymous 3c54243ac7 BAN: Implement some numerical limits 2024-02-14 22:34:42 +02:00
Bananymous 5ad4340679 BAN: Use strerrordesc_np instead of strerror 2024-02-14 14:58:27 +02:00
Bananymous 78ef7e804f BAN: Implement bit_cast 2024-02-12 21:46:33 +02:00
Bananymous 218456d127 BAN: Fix some includes 2024-02-08 03:13:21 +02:00
Bananymous 0c8e9fe095 Kernel: Add operator bool() for WeakPtr 2024-02-08 02:26:46 +02:00
Bananymous 5b4acec4ca BAN: Add capacity() getter for Queue 2024-02-07 22:53:56 +02:00
Bananymous 2cc9534570 BAN: Add emplace for Variant
This allows variant to store values that are not copy/move
constructible.
2024-02-07 22:33:16 +02:00
Bananymous 40e341b0ee BAN: Remove unstable hash map and set
These can now be implemented safely with new linked list api
2024-02-06 17:35:15 +02:00
Bananymous b2291ce162 Kernel/BAN: Fix network strucute endianness 2024-02-05 18:18:56 +02:00
Bananymous d15cbb2d6a Kernel: Fix IPv4 header checksum calculation 2024-02-05 18:18:56 +02:00
Bananymous b8cf6432ef BAN: Implement host_to_network_endian 2024-02-05 17:29:24 +02:00
Bananymous 692cec8458 Kernel/Userspace/LibC: Implement basic dprintln for userspace 2024-02-05 01:24:09 +02:00
Bananymous 3a6d31d3fa BAN: Add comparison for MAC 2024-02-03 18:03:27 +02:00
Bananymous c18f72ceb9 BAN: Add more APIs for IPv4 address 2024-02-03 01:50:10 +02:00
Bananymous 7b287a1d5b BAN: Add types for IPv4 and MAC addresses 2024-02-02 13:48:07 +02:00
Bananymous acd6c86f98 BAN: Add NetworkEndian to Endianness 2024-02-02 03:13:14 +02:00
Bananymous d054e5b4b7 BAN: Implement basic radix sort for unsigned integers 2024-02-01 15:22:28 +02:00
Bananymous c4bf1641bd BAN: Add cool API for LinkedList
You can now move elements between LinkedLists without allocations or
deallocations. Same node moves from source to destination
2024-02-01 14:19:02 +02:00
Bananymous 4273f43be1 BAN: Move placement new to its own file and fix includes 2024-01-31 23:55:41 +02:00
Bananymous cc79f55817 BAN: Add compare_exchange to atomic 2024-01-30 01:21:15 +02:00
Bananymous 0408aa9bbc BAN: Implement is_unsigned* traits and (un)?signed_integral concepts 2024-01-25 14:17:23 +02:00
Bananymous dfe5a2d665 All: Cleanup all files
Add newline to end of files and remove whitespace from end of lines
2024-01-24 15:53:38 +02:00
Bananymous d2cf7c7a5c BAN: Implement basic Atomic class that wraps gcc builtins 2024-01-24 14:30:04 +02:00
Bananymous de4fdcd898 BAN: Implement is_base_of and integral_constant to Traits 2024-01-22 16:59:14 +02:00
Bananymous a5660b95b2 BAN: String don't memcpy with nullptr 2024-01-17 19:04:40 +01:00
Bananymous d2bc399770 BAN: Make StringView::split const and fix bug with empties 2024-01-03 00:14:29 +02:00
Bananymous 07d5d3f936 BAN: Simple iterator now contains valid flag
This allows iteration over empty containers
2023-12-29 14:49:57 +02:00
Bananymous 861bf27e96 BAN: Implement abs() 2023-12-26 00:54:06 +02:00
Bananymous b833239a82 BAN: Make hashmap work with non-copy constructable values 2023-12-24 13:38:47 +02:00
Bananymous 6fec142760 BAN: Add requires clauses for vector 2023-12-24 13:38:20 +02:00
Bananymous 84b2438b3d BAN: Add requires for copy constructor for linked list 2023-12-24 13:37:49 +02:00
Bananymous 0e714d5eb4 BAN: Implement String::operator==(const String&) 2023-12-24 13:36:46 +02:00
Bananymous 9b8e6e6629 BAN: Implement is_*constructable 2023-12-24 13:36:12 +02:00
Bananymous 2e77718f07 BAN: Implement find() for StringView 2023-12-23 18:43:52 +02:00
Bananymous f371fabe35 BAN: HashSet is now internally Vector<LinkedList<T>>
It used to be Vector<Vector<T>> but this feels more proper
2023-12-23 16:37:21 +02:00
Bananymous 79a15132da BAN: Cleanup HashSet
I now use BAN::Iterator as the base iterator. Also unstable version
was added.
2023-12-23 16:32:06 +02:00
Bananymous bacc0db778 BAN: Fix unstable hash map rebucket 2023-12-23 16:31:42 +02:00
Bananymous 3963afe343 BAN: Add unstable version of hash map
This version differs only when doing rebucket. If rebucket fails,
the whole hash map is invalidated. This allows rebucketing to use
moving instead of copying.
2023-12-19 22:23:28 +02:00
Bananymous 951873098e BAN: Rewrite heap sort
Heap sort is now more close to gnulibc++ version. This is just more
simplified version.
2023-12-08 22:45:55 +02:00
Bananymous 2b927b9729 BAN: Restructure sort functions and namespaces 2023-12-08 18:58:47 +02:00
Bananymous be657b9b18 BAN: Add default sort. This is wrapper around sort_intro 2023-12-08 00:10:09 +02:00
Bananymous 94e6b9fa65 BAN: Implement intro sort 2023-12-07 23:56:11 +02:00
Bananymous d8ea0eeba3 BAN: Add less than operator for iterator 2023-12-07 23:55:41 +02:00
Bananymous 6873244169 BAN: Move placement new to New.h
I have no idea why they were defined in Move.h
2023-12-07 23:52:57 +02:00
Bananymous 805b4096e9 BAN: Remove empty else. Builds with -Wall -Wextra 2023-12-07 23:50:35 +02:00
Bananymous 0f74e123b8 BAN: Implement ilog2 for unsigned integers 2023-12-07 23:50:04 +02:00
Bananymous 7f212106db BAN: Implement heap sort 2023-12-07 23:18:49 +02:00
Bananymous 46c3da71b6 BAN: Cleanup sorting code 2023-12-07 23:18:49 +02:00
Bananymous e5cab047d6 BAN: Implement more methods for iterators 2023-12-07 23:18:49 +02:00
Bananymous bf3e9eabd5 BAN: Implement distance() for iterators 2023-12-07 23:18:49 +02:00
Bananymous 19604015de BAN: Implement quick sort 2023-12-07 19:28:31 +02:00
Bananymous 08bc0a2815 BAN: Implement next() and prev() for iterators and use them in sorts 2023-12-07 19:28:05 +02:00
Bananymous 6caa9b6f95 BAN: implement quick sort and test for it 2023-12-07 11:55:28 +02:00
Bananymous 59ad639fa8 BAN: Fix simple iterator operator--() 2023-12-07 11:55:28 +02:00
Bananymous 43458cc74f BAN: implement exchange sort and test for it 2023-12-07 11:55:28 +02:00
Bananymous e935a33a4d BAN: add value_type to iterators 2023-12-07 10:15:18 +02:00
Bananymous a872efdef2 BAN: implement basic swap
This will be improved, currently just works on general type T and
moves values between arguments.
2023-12-07 09:26:17 +02:00
Bananymous 19ed0cb9bf BAN: Add basic GUID data structure 2023-11-21 15:11:50 +02:00
Bananymous 240d57f4b4 BAN: Update bytespan -> span API 2023-11-04 18:12:46 +02:00
Bananymous f6c312a6b3 BuildSystem: using sysroot doesn't need root privileges anymore!
Sysroot is now created with fakeroot. This allows root access to be
only needed for disk image creation, since it uses loopback devices.
2023-11-04 17:50:43 +02:00
Bananymous ca34ece8ef BAN: Update ASSERT api
its now much harder to mix < with <= and > with >=
2023-11-02 00:01:12 +02:00
Bananymous 3c311efb81 BAN: Implement better ASSERT macros
Implement macros for all basic binary ops. These macros print failed
values when the fail.
2023-10-30 16:22:02 +02:00
Bananymous d5e0900cbb BAN: String now uses union for its sso storage
This allows String to shrink by 8 bytes since Variant's 8 index is
no longer stored in here.

This required me to make Strings max size one bit less, but that
should still be fine. There should never be strings with size of
over half of the computer's address space.
2023-10-30 11:13:16 +02:00
Bananymous 229082a1b2 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 0db17e9d39 BAN: Add variant to ForwardList
I should be using the forward list more
2023-10-29 02:28:55 +03:00
Bananymous d98f84f9d3 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 3566ddab00 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 fc8a000e46 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 71cad2fc38 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 61c7a68f4a BAN: add helper to cast Span<T> to Span<const T> 2023-10-20 04:59:08 +03:00
Bananymous 744ff40ba0 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 0b93fce923 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 a8d74f604e 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 ef68e12125 BAN: Implement basic WeakPtr
This can be constructed from classes that inherit from Weakable
2023-09-25 19:43:10 +03:00
Bananymous 2a469241b2 BAN: Fix LinkedList::pop_back() 2023-09-22 17:20:35 +03:00
Bananymous 921d95d18f All: Clear lines with only whitspace in them 2023-09-10 00:31:42 +03:00
Bananymous 250789aa20 Kernel: better handle kernel errors 2023-08-29 00:13:21 +03:00
Bananymous 8032824054 BuildSystem: use -a with rsync
This allows cmake to not rebuild whole project every time
2023-08-28 11:38:17 +03:00
Bananymous 80e7a89f67 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 e33bf62bba BAN: increase function size to 5 * sizeof(void*) 2023-08-22 14:52:03 +03:00
Bananymous 642929f071 BAN: Add enum class Iteration for for_each loops 2023-08-22 11:30:53 +03:00