howar6hill
e07f50c398
AK: Add begin() and end() to String and StringView
...
Now it's possible to use range-based for loops with String and StringView.
2020-03-10 10:25:21 +01:00
Andreas Kling
b956e2d939
AK: Remove all the AK .host.o files on "make clean" in AK/Tests
...
This is a bit hackish, but sometimes these files stick around and mess
up rebuilds.
2020-03-08 21:40:40 +01:00
howar6hill
6da131d5db
AK: Reduce code duplication in StringBuilder
2020-03-08 17:08:18 +01:00
howar6hill
d8df9c510c
AK: Improve the API of StringBuilder
2020-03-08 17:08:18 +01:00
Liav A
0433c0780d
AK: Use default constructor of Optional if an unset bit is not found
2020-03-08 14:13:30 +01:00
Andreas Kling
32f15f3c45
AK: Remove unused InlineLRUCache template
...
This was not used by anyone. If we ever need it, we can bring it back.
2020-03-08 13:13:34 +01:00
Andreas Kling
900f51ccd0
AK: Move memory stuff (fast memcpy, etc) to a separate header
...
Move the "fast memcpy" stuff out of StdLibExtras.h and into Memory.h.
This will break a ton of things that were relying on StdLibExtras.h
to include a bunch of other headers. Fix will follow immediately after.
This makes it possible to include StdLibExtras.h from Types.h, which is
the main point of this exercise.
2020-03-08 13:06:51 +01:00
Andreas Kling
35d88f536c
AK: Use __builtin_memset() and such to reduce header dependencies
...
We can use __builtin_memset() without including <string.h>.
This is pretty neat, as it will allow us to reduce the header deps
of AK templates a bit, if applied consistently.
Note that this is an enabling change for an upcoming #include removal.
2020-03-08 13:06:51 +01:00
Andreas Kling
b1058b33fb
AK: Add global FlatPtr typedef. It's u32 or u64, based on sizeof(void*)
...
Use this instead of uintptr_t throughout the codebase. This makes it
possible to pass a FlatPtr to something that has u32 and u64 overloads.
2020-03-08 13:06:51 +01:00
Andreas Kling
b98d8ad5b0
AK: Add a Conditional<condition, TrueType, FalseType> template
...
This allows you to select a type based on a compile-time condition.
2020-03-08 13:06:51 +01:00
Andreas Kling
b866582d98
AK: Fix all the warnings in the AK tests
2020-03-06 11:22:23 +01:00
Andreas Kling
8bb361889c
AK: Remove Optional::operator bool()
...
This was causing some obvious-in-hindsight but hard to spot bugs where
we'd implicitly convert the bool to an integer type and carry on with
the number 1 instead of the actual value().
2020-03-06 10:32:58 +01:00
Andreas Kling
dc039fdc7e
AK: Simplify JsonObject and JsonArray API a little bit
...
Instead of set(const JsonValue&) and set(JsonValue&&), just do
set(JsonValue) and let callers move() if they want. This removes some
ambiguity and the compiler is smart enough to optimize it anyway.
2020-03-06 08:51:22 +01:00
Andreas Kling
783c99516a
AK: LogStream should handle being passed a null const char*
2020-03-04 21:04:06 +01:00
Andreas Kling
686ade6b5a
AK: Make quick_sort() a little more ergonomic
...
Now it actually defaults to "a < b" comparison, instead of forcing you
to provide a trivial less-than comparator. Also you can pass in any
collection type that has .begin() and .end() and we'll sort it for you.
2020-03-03 16:02:58 +01:00
Liav A
9440c45d6e
AK: Add support for Kernel Log Stream
2020-03-02 22:23:39 +01:00
Andreas Kling
214f934465
Meta: Adjust some copyright dates by Fei Wu
2020-03-02 14:24:25 +01:00
Andreas Kling
f5b78c2a1c
AK: Add missing copyright headers to StringUtils.{cpp,h}
2020-03-02 14:23:11 +01:00
howar6hill
d75fa80a7b
AK: Move to_int(), to_uint() implementations to StringUtils ( #1338 )
...
Provide wrappers in String and StringView. Add some tests for the
implementations.
2020-03-02 14:19:33 +01:00
howar6hill
055344f346
AK: Move the wildcard-matching implementation to StringUtils
...
Provide wrappers in the String and StringView classes, and add some tests.
2020-03-02 10:38:08 +01:00
howar6hill
2a30a020c1
AK: Add enqueue_begin() for the CircularDeque class ( #1320 )
...
Also add tests for CircularDeque.
2020-03-02 09:50:43 +01:00
howar6hill
4ed2ba264d
AK: Remove superfluous explicit in Bitmap ( #1337 )
2020-03-02 09:50:22 +01:00
Andreas Kling
22d0a6d92f
AK: Remove unnecessary casts to size_t, after Vector changes
...
Now that Vector uses size_t, we can remove a whole bunch of redundant
casts to size_t.
2020-03-01 12:58:22 +01:00
Andreas Kling
dcd619bd46
Kernel: Merge the shbuf_get_size() syscall into shbuf_get()
...
Add an extra out-parameter to shbuf_get() that receives the size of the
shared buffer. That way we don't need to make a separate syscall to
get the size, which we always did immediately after.
2020-02-28 12:55:58 +01:00
Andreas Kling
a1514369d7
LibC: Move shbuf_* API's to <serenity.h>
2020-02-28 12:55:58 +01:00
Andreas Kling
f72e5bbb17
Kernel+LibC: Rename shared buffer syscalls to use a prefix
...
This feels a lot more consistent and Unixy:
create_shared_buffer() => shbuf_create()
share_buffer_with() => shbuf_allow_pid()
share_buffer_globally() => shbuf_allow_all()
get_shared_buffer() => shbuf_get()
release_shared_buffer() => shbuf_release()
seal_shared_buffer() => shbuf_seal()
get_shared_buffer_size() => shbuf_get_size()
Also, "shared_buffer_id" is shortened to "shbuf_id" all around.
2020-02-28 12:55:58 +01:00
howar6hill
a19967d5c3
Tests: Fix a typo inTestRefPtr
2020-02-27 21:16:02 +01:00
William McPherson
121e7306c3
AK: Expose SinglyLinkedListIterator constructor
...
This commit replaces SinglyLinkedListIterator::universal_end() with an
empty SinglyLinkedListIterator(). Piano needs this in order to
initialize a member array of iterators without 84 lines of
universal_end().
2020-02-27 10:21:13 +01:00
howar6hill
a57f074187
CircularQueue: Move construct a T object instead of copy constructing it
2020-02-26 15:22:45 +01:00
Andreas Kling
6824cb17a6
AK: Have AK/kmalloc.h #include <new> on other platforms
...
This should make stuff like placement new work correctly when building
outside of Serenity. This stuff is a bit delicate due to the weirdly
staged toolchain build at the moment. Hopefully we can unify this stuff
in the future.
2020-02-25 15:58:24 +01:00
Andreas Kling
00e744c263
AK: Provide a ptr_hash(const void*) overload
2020-02-25 15:37:07 +01:00
joshua stein
7e6ac544f7
AK: Add ptr_hash to use int_hash or u64_hash depending on pointer size
2020-02-25 15:32:58 +01:00
Andreas Kling
960cae924a
AK: Some more int => size_t in Bitmap
2020-02-25 15:11:15 +01:00
Andreas Kling
fbe4081f4b
AK: Make Queue use size_t for its size
2020-02-25 14:55:04 +01:00
Andreas Kling
ceec1a7d38
AK: Make Vector use size_t for its size and capacity
2020-02-25 14:52:35 +01:00
Emanuel Sprung
074d935c6e
AK, LibGfx, LibGUI: Initialize various variables to zero.
...
The not initialized variables can lead to compiler warnings that
become errors with the -Werror flag.
2020-02-25 10:18:46 +01:00
Andreas Kling
17846dd063
AK: Zero-initialize the internal storage of Optional
2020-02-24 10:22:27 +01:00
Andreas Kling
0763f67043
AK: Make Bitmap use size_t for its size
...
Also rework its API's to return Optional<size_t> instead of int with -1
as the error value.
2020-02-24 09:56:07 +01:00
Andreas Kling
b813b2f871
AK: Make HashTable and HashMap use size_t for size and capacity
2020-02-24 09:42:52 +01:00
Shannon Booth
ba9313111f
AK: Add StringBuilder::is_empty()
2020-02-22 21:36:54 +01:00
Shannon Booth
854f0b9e1a
AK: Add StringView::starts_with(char) & StringView::ends_with(char)
...
This is simply meant to be a more efficient implementation in the
case that we only need to check a single character.
2020-02-22 21:36:54 +01:00
Andreas Kling
c4c1ad2289
Toolchain: Build demangling into LibC except during toolchain build
2020-02-21 18:54:57 +01:00
Andreas Kling
7592f9afd5
AK: Use size_t for CircularQueue and CircularDeque
2020-02-20 13:20:34 +01:00
Andreas Kling
88b9fcb976
AK: Use size_t for ByteBuffer sizes
...
This matches what we already do for string types.
2020-02-20 13:20:34 +01:00
Andreas Kling
23a54636ea
AK: Fix bug where "%s" with field width would print too many characters
...
I introduced this while implementing "%.*s", oops.
2020-02-19 23:02:15 +01:00
Andreas Kling
151467b569
AK: Support "%.*s" in format strings
...
Work towards #623 .
2020-02-19 22:08:13 +01:00
Liav A
01ae3e9c85
AK: Use endianness flags to determine if conversion is necessary
2020-02-19 16:08:28 +01:00
Andreas Kling
a7dbb3cf96
Kernel: Use a FixedArray for a process's extra GIDs
...
There's not really enough of these to justify using a HashTable.
2020-02-18 11:35:47 +01:00
Sergey Bugaev
bf8dacf0c1
Kernel: Add placement new[] operator
2020-02-18 11:23:27 +01:00
Andreas Kling
48f7c28a5c
Kernel: Replace "current" with Thread::current and Process::current
...
Suggested by Sergey. The currently running Thread and Process are now
Thread::current and Process::current respectively. :^)
2020-02-17 15:04:27 +01:00