Tim Schumacher
52d9fc92f1
AK: Expose the seekback limit of CircularBuffer
2023-03-21 10:25:13 +01:00
Tim Schumacher
e62183f0ba
AK: Add a Stream wrapper that counts read bytes
2023-03-21 10:25:13 +01:00
Tim Schumacher
d1f6a28ffd
AK: Move ConstrainedStream from LibWasm and limit discarding
2023-03-21 10:25:13 +01:00
Timothy Flynn
2671d4280f
AK: Export FlyString from the forwarding header
2023-03-18 19:50:45 +01:00
Andreas Kling
d38a3ca9eb
LibGfx/OpenType: Add some initial support for GPOS glyph positioning
...
This patch parses enough of GPOS tables to be able to support the
kerning information embedded in Inter.
Since that specific font only applies positioning offsets to the first
glyph in each pair, I was able to get away with not changing our API.
Once we start adding support for more sophisticated positioning, we'll
need to be able to communicate more than a simple "kerning offset" to
the clients of this code.
2023-03-17 09:36:20 +01:00
Jelle Raaijmakers
954d660094
AK: Clear OrderedHashTable previous/next pointers on removal
...
With Clang, the previous/next pointers in buckets of an
`OrderedHashTable` are not cleared when a bucket is being shifted up as
a result of a removed bucket. As a result, an unfortunate pointer mixup
could lead to an infinite loop in the `HashTable` iterator, which was
exposed in `HashMap::keys()`.
Co-authored-by: Luke Wilde <lukew@serenityos.org>
2023-03-15 21:43:52 +01:00
gustrb
5141c86587
AK: Rename CaseInsensitiveStringViewTraits to reflect intent
...
Now it is called `CaseInsensitiveASCIIStringViewTraits`, so we can be
more specific about what data structure does it operate onto. ;)
2023-03-14 21:34:32 +00:00
Andreas Kling
f8c075f2b1
AK: Add Queue::tail()
...
We already had head(), so let's also have tail().
2023-03-14 16:52:44 +01:00
Tim Schumacher
e007279315
AK: Read and write accumulated BitStream bits directly
2023-03-13 15:16:20 +00:00
Tim Schumacher
b623dda765
AK: Remove unneeded overrides for write_until_depleted
from BitStream
2023-03-13 15:16:20 +00:00
Tim Schumacher
ecd1862859
AK: Rename Stream::write_entire_buffer to Stream::write_until_depleted
...
No functional changes.
2023-03-13 15:16:20 +00:00
Tim Schumacher
a3f73e7d85
AK: Rename Stream::read_entire_buffer to Stream::read_until_filled
...
No functional changes.
2023-03-13 15:16:20 +00:00
Tim Schumacher
d5871f5717
AK: Rename Stream::{read,write} to Stream::{read_some,write_some}
...
Similar to POSIX read, the basic read and write functions of AK::Stream
do not have a lower limit of how much data they read or write (apart
from "none at all").
Rename the functions to "read some [data]" and "write some [data]" (with
"data" being omitted, since everything here is reading and writing data)
to make them sufficiently distinct from the functions that ensure to
use the entire buffer (which should be the go-to function for most
usages).
No functional changes, just a lot of new FIXMEs.
2023-03-13 15:16:20 +00:00
Timothy Flynn
1d5b45f7d9
AK: Compute UTF-8 code point lengths using only leading bytes
...
We don't need to decode the entire code point to know its length. This
reduces the runtime of decoding a string containing 5 million instances
of U+10FFFF from over 4 seconds to 0.9 seconds.
2023-03-13 15:16:02 +00:00
Kenneth Myhra
e28a6d5da4
AK: Add FlyString::from_deprecated_fly_string()
...
Let's add FlyString::from_deprecated_fly_string() so we can use it
instead of FlyString::from_utf8(). This will make it easier to detect
potential unncessary allocations as we transfer to FlyString.
2023-03-11 18:32:33 +00:00
Sam Atkins
82f58b8af0
AK: Forward-declare LexicalPath
...
And alphabetically sort the list while I'm at it.
2023-03-11 13:22:57 +00:00
Andreas Kling
a504ac3e2a
Everywhere: Rename equals_ignoring_case => equals_ignoring_ascii_case
...
Let's make it clear that these functions deal with ASCII case only.
2023-03-10 13:15:44 +01:00
kleines Filmröllchen
b38beb106e
AK: Add constexpr floor and round
2023-03-10 04:07:14 -07:00
Andreas Kling
d517e7fb3a
AK: Make FlyString::hash() use the cached hash in StringData if possible
...
This avoids rehashing the string every time.
2023-03-09 21:54:59 +01:00
Sam Atkins
067d0689c5
AK: Replace C-style casts
2023-03-09 21:43:54 +01:00
Linus Groh
e76394d96c
AK: Remove infallible version of StringBuilder::to_byte_buffer
...
Also drop the try_ prefix from the fallible function, as it is no longer
needed to distinguish the two.
2023-03-09 15:51:00 +00:00
Karol Baraniecki
b4b283670d
AK: Introduce a fallible version of StringBuilder::to_byte_buffer
...
Name it StringBuilder::try_to_byte_buffer accordingly :^)
2023-03-09 12:59:57 +00:00
Timothy Flynn
1393ed2000
AK+LibUnicode: Implement String::equals_ignoring_case without allocating
...
We currently fully casefold the left- and right-hand sides to compare
two strings with case-insensitivity. Now, we casefold one code point at
a time, storing the result in a view for comparison, until we exhaust
both strings.
2023-03-08 18:57:53 +00:00
Timothy Flynn
4aee4e80bd
AK: Add a Utf32View::substring_view overload to take only an offset
...
This is for convenience, and matches our other UTF-N views.
2023-03-08 18:57:53 +00:00
Timothy Flynn
515fca4f7a
AK: Make String::contains(code_point) handle non-ASCII
...
We currently only accept a char, instead of a full code point.
2023-03-08 14:16:47 +00:00
Timothy Flynn
f882581e91
AK: Make String::{starts,ends}_with(code_point) handle non-ASCII
...
We currently pass the code point to StringView::{starts,ends}_with,
which actually accepts a single char, thus cannot handle non-ASCII
code points.
2023-03-08 14:16:47 +00:00
Andreas Kling
629b6462dc
AK: Add FlyString::equals_ignoring_ascii_case()
...
This is similar to equals_ignoring_case() but only cares about ASCII
case insensitivity.
2023-03-08 13:19:15 +01:00
Andreas Kling
5aa12da959
AK+Kernel: Remove all the Nonnull*PtrVector classes
2023-03-06 23:46:36 +01:00
Andreas Kling
d57b09b7cf
AK: Remove specialized shuffle for NonnullPtrVector
2023-03-06 23:46:36 +01:00
Kenneth Myhra
03ceca4ca1
AK: Add FlyString::to_deprecated_fly_string()
...
This adds the conversion function to_deprecated_fly_string() to enable
conversion from new FlyString to DeprecatedFlyString.
2023-03-05 18:25:59 +00:00
Dan Klishch
882dcfaddb
AK+LibAudio: Remove UFixedBigInt::my_size
2023-03-05 13:49:43 +01:00
Dan Klishch
2d27c98659
AK: Implement Knuth's algorithm D for dividing UFixedBigInt's
2023-03-04 22:10:03 -07:00
Dan Klishch
2470fab05e
AK: Delete unused and untested sqrt, pow and pow_mod from UFixedBigInt
2023-03-04 22:10:03 -07:00
Dan Klishch
8f8e31e780
AK+LibCrypto: Delete 64x64 wide multiplication workarounds
...
Now UFixedBigInt exposes API to do wide multiplications of this kind
efficiently.
2023-03-04 22:10:03 -07:00
Dan Klishch
67ec347bfa
AK: Rewrite UFixedBigInt using the framework from BigIntBase.h
2023-03-04 22:10:03 -07:00
Dan Klishch
e132570284
AK: Introduce "BigIntBase.h" for common simple operations on big ints
2023-03-04 22:10:03 -07:00
Dan Klishch
2a6f5ff441
AK: Move compiletime_fail to StdLibExtras.h
...
This function will be used in the next commit in "BigIntBase.h".
2023-03-04 22:10:03 -07:00
nipos
e35a858bde
AK: Remove signbit definition to prevent conflict in FixedPoint
2023-03-04 21:34:54 -07:00
nipos
aa9f1ee889
AK: Add support for Solaris to StackInfo
2023-03-04 21:34:54 -07:00
nipos
d65c912c09
AK: Add Solaris to platform detection
2023-03-04 21:34:54 -07:00
Andrew Kaster
c1983244a2
AK: Add StackInfo implementation for Windows
...
This prevents a warning when compiling jakt that it's not implemented.
2023-03-04 13:59:04 +01:00
Sam Atkins
3d8cc2257f
LibCMake: Introduce a CMake lexer
2023-03-04 05:43:43 -07:00
Sam Atkins
ca4cc03269
AK: Format Debug.h.in
...
Indented #cmakedefine01 is supported since CMake 3.10:
https://cmake.org/cmake/help/latest/release/3.10.html#commands
We're on 3.16, and the minimum required for Serenity itself is 3.25, so
this should be fine. And it makes CLion's auto-formatter much happier!
2023-03-04 05:43:43 -07:00
Dan Klishch
4536b80a62
AK+readelf: Issue error when using ARCH(arch) with nonexistent arch
...
This disallows erroneous `#if ARCH(x86_64)` (note lowercase x).
2023-03-03 21:53:41 +01:00
Timothy Flynn
da0d000909
AK: Ensure short String instances are valid UTF-8
...
We are currently only validating long strings.
2023-03-03 11:46:42 -05:00
Timothy Flynn
434ca78425
AK: Protect Utf8View against inclusion in the Kernel
...
It will soon be included in the Kernel by way of String.h. Utf8View
includes DeprecatedString, which is not allowed in the Kernel.
2023-03-03 11:46:42 -05:00
Timothy Flynn
c4d78c29a2
AK: Invalidate overlong UTF-8 code point encodings
...
For example, the code point U+002F could be encoded as UTF-8 with the
bytes 0x80 0xAF. This trick has historically been used to bypass
security checks.
2023-03-03 11:46:42 -05:00
Timothy Flynn
796a615bc1
AK: Replace UTF-8 string validation with a constexpr implementation
...
This will allow validating UTF-8 strings at compile time, such as from
String::from_utf8_short_string.
2023-03-03 11:46:42 -05:00
Linus Groh
45dc3d8a3e
AK: Add String::ends_with{,_bytes}()
2023-03-03 11:02:21 +00:00
Linus Groh
bfdbb4b6ed
AK: Add missing const qualifier to HashCompatible HashMap::contains()
2023-03-03 11:02:21 +00:00