ladybird/AK
Jelle Raaijmakers f175a00003 AK: Add and use IdentityHashTraits<Integral>
These new traits are identical to `Traits<Integral>`, except that
calling `.hash()` will return the value itself instead of hashing it.
This should be used in cases where either the value is already a proper
hash, or using the value as a hash will yield "good enough" performance
in e.g. HashTable.

Types larger than 32 bits are folded in on themselves. Collision tests
on some popular hashing algorithms show that XOR folding slightly
increases the number of collisions, but this allows `IdentityHashTraits`
not to make any assumptions on which bits are the most relevant for the
final hash.
2026-02-24 13:24:58 +01:00
..
.clang-tidy Meta: Add basic clang-tidy configuration 2021-11-14 22:52:35 +01:00
AllOf.h AK: Make it possible to not using AK classes into the global namespace 2022-11-26 15:51:34 +01:00
AnyOf.h AK: Make it possible to not using AK classes into the global namespace 2022-11-26 15:51:34 +01:00
Array.h Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
Assertions.cpp AK: Print backtrace with warnln 2025-11-20 15:44:25 +01:00
Assertions.h AK: Remove unused architecture specific TODO macros 2025-11-07 11:27:51 +01:00
Atomic.h Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
AtomicRefCounted.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
Backtrace.h.in AK+CMake: Use the find module to find the correct backtrace(3) header 2024-07-01 10:15:24 -06:00
Badge.h AK: Use Noncopyable.h in Badge 2024-12-04 16:45:58 +00:00
Base64.cpp AK: Remove unused include from Base64 2026-02-17 12:38:51 +00:00
Base64.h AK+LibJS: Use simdutf for all base64 operations 2025-05-03 11:21:10 -04:00
BigIntBase.h AK+LibGfx: Prefer if consteval over is_constant_evaluated 2026-02-22 13:56:12 -05:00
BinaryHeap.h AK: Introduce IntrusiveBinaryHeap and reimplement BinaryHeap using it 2024-02-25 17:24:36 -07:00
BinarySearch.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
BitCast.h AK: Use bit_cast in SIMDExtras.h/AK::Detail::byte_reverse_impl 2024-07-17 09:56:13 -06:00
Bitmap.h LibGfx: Clean up #include directives 2024-11-20 21:13:23 +01:00
BitmapView.h AK: Define operator== for BitmapView 2025-01-04 20:32:35 +01:00
BitStream.h AK: Add BigEndianInputBitStream::bits_until_next_byte_boundary() 2024-02-12 14:08:56 +01:00
BufferedStream.h AK: Don't move trivially copyable types in BufferedStream methods 2024-04-30 13:22:56 +02:00
BuiltinWrappers.h AK: Fix doc comment for bit_scan_forward 2023-10-11 14:36:48 -04:00
BumpAllocator.h AK: Fix BumpAllocator.h compilation errors on Windows 2024-12-14 16:12:12 +01:00
ByteBuffer.h Everywhere: Make ByteBuffer::bytes() lvalue-only 2025-12-10 07:43:22 -05:00
ByteReader.h AK: Make it possible to not using AK classes into the global namespace 2022-11-26 15:51:34 +01:00
ByteString.cpp AK: Remove unused UTF-8 / other factory methods from ByteString 2025-04-07 17:44:38 +02:00
ByteString.h AK: Remove unused include from ByteString 2026-02-17 12:38:51 +00:00
ByteStringImpl.cpp AK: Remove unused include from ByteStringImpl 2026-02-17 12:38:51 +00:00
ByteStringImpl.h AK: Remove unused include from ByteStringImpl 2026-02-17 12:38:51 +00:00
CharacterTypes.h AK: Add is_ascii_c0_control_or_space 2024-08-05 17:21:26 +01:00
Checked.h AK: Add variadic Checked::addition_would_overflow() 2026-01-19 10:48:12 +01:00
CheckedFormatString.h Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
CircularBuffer.cpp AK: Remove unused include from CircularBuffer 2026-02-17 12:38:51 +00:00
CircularBuffer.h AK: Add and use IdentityHashTraits<Integral> 2026-02-24 13:24:58 +01:00
CircularQueue.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
CMakeLists.txt AK+LibJS: Replace home-grown Ryu implementation with fmt's dragonbox 2026-02-23 18:30:40 +01:00
Concepts.h Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
ConstrainedStream.cpp AK: Make some Stream::read* functions available inline 2025-08-08 12:54:06 +02:00
ConstrainedStream.h AK: Make some Stream::read* functions available inline 2025-08-08 12:54:06 +02:00
CopyOnWrite.h AK+LibURL: Move CopyOnWrite<T> from LibURL to AK 2024-09-10 13:51:28 +02:00
CountingStream.cpp AK: Let CountingStream take an initial value for the counter 2025-06-11 18:16:29 +02:00
CountingStream.h AK: Let CountingStream take an initial value for the counter 2025-06-11 18:16:29 +02:00
COWVector.h LibRegex: Flatten capture group list in MatchState 2025-04-18 17:09:27 +02:00
DateConstants.h AK: Make it possible to not using AK classes into the global namespace 2022-11-26 15:51:34 +01:00
Debug.h.in LibThreading: Remove WorkerThread 2026-01-26 15:51:46 -06:00
DefaultDelete.h AK+Everywhere: Move custom deleter capability to OwnPtr 2022-12-17 16:00:08 -05:00
Demangle.h AK: Implement demangle() for MSVC ABI 2025-06-17 18:39:18 -06:00
DemangleWindows.cpp AK: Implement demangle() for MSVC ABI 2025-06-17 18:39:18 -06:00
Diagnostics.h AK: Add a helper macro to temporarily ignore diagnostics with _Pragma() 2022-12-06 21:31:00 +00:00
DisjointChunks.h LibRegex: Use ReadonlySpan to peek into OpCode_Compare LUTs 2025-04-14 17:40:13 +02:00
DistinctNumeric.h Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
DoublyLinkedList.h AK: Mark some DoublyLinkedList and Vector methods ALWAYS_INLINE 2026-02-02 14:11:49 +01:00
Endian.h AK: Support non-native endianness in Utf16View 2024-07-18 19:43:57 +02:00
EnumBits.h Everywhere: Remove unused includes of AK/StdLibExtras.h 2023-01-02 20:27:20 -05:00
Enumerate.h AK: Avoid copying the iterable container in AK::enumerate 2025-11-18 13:31:52 +01:00
Error.cpp AK: Define some simple getters in a single line 2025-05-10 21:19:46 -04:00
Error.h AK/Error: Add value_or convenience method 2025-05-26 18:48:09 +02:00
Find.h AK: Take the container in AK::find_value as a forwarding reference 2026-01-22 08:54:49 -05:00
FixedArray.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
FixedBitmap.h AK: Add FixedBitmap template class for stack-allocated bitmaps 2026-01-14 11:46:23 +01:00
FixedPoint.h AK: Stop exporting AK::FixedPoint into the global namespace 2024-07-18 09:43:38 +01:00
FloatingPoint.h AK: Add missing include to FloatingPoint.h 2026-02-23 18:30:40 +01:00
FlyString.cpp AK: Cache hashes for fly string interning 2026-01-26 19:37:42 +01:00
FlyString.h AK: Store hash with HashTable entry to avoid expensive equality checks 2025-09-18 22:37:18 +02:00
Format.cpp AK+LibJS: Replace home-grown Ryu implementation with fmt's dragonbox 2026-02-23 18:30:40 +01:00
Format.h AK: Remove unused include from Format 2026-02-17 12:38:51 +00:00
Forward.h AK: Use AK namespace for ValueComparingRefPtr 2026-02-20 22:01:44 +00:00
Function.h AK+Tests: Destroy moved-from CallableWrappers 2026-02-18 13:13:32 -06:00
GenericLexer.cpp AK: Templatize GenericLexer for UTF-16 strings 2025-08-13 09:56:13 -04:00
GenericLexer.h AK: Templatize GenericLexer for UTF-16 strings 2025-08-13 09:56:13 -04:00
GenericShorthands.h Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
HashFunctions.h AK+Everywhere: Use MurmurHash3 for int/u64 hashing 2026-02-20 22:47:24 +01:00
HashMap.h AK: Remove HashMap::hash() 2026-01-29 10:10:12 +01:00
HashTable.h AK: Use power-of-two growth in HashTable 2026-02-20 22:47:24 +01:00
Hex.cpp AK: Remove unused include from Hex 2026-02-17 12:38:51 +00:00
Hex.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
IDAllocator.h Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
InsertionSort.h AK: Fix InsertionSort to respect specified bounds 2024-12-06 06:44:27 +00:00
IntegralMath.h AK: Add lowest common multiple and greatest common divisor functions 2025-04-23 09:13:45 +01:00
IntrusiveDetails.h Everywhere: Remove all KERNEL #defines 2024-06-18 09:36:25 +02:00
IntrusiveList.h AK: Annotate [[no_unique_address]] members with NO_UNIQUE_ADDRESS macro 2025-04-15 02:19:06 -06:00
IntrusiveListRelaxedConst.h Everywhere: Run clang-format 2024-12-28 05:39:32 -08:00
IntrusiveRedBlackTree.h AK: Annotate [[no_unique_address]] members with NO_UNIQUE_ADDRESS macro 2025-04-15 02:19:06 -06:00
IPv4Address.h AK: Remove uneeded null StringView handling for IP string parsing 2026-02-21 12:37:44 +01:00
IPv6Address.h AK: Remove uneeded null StringView handling for IP string parsing 2026-02-21 12:37:44 +01:00
IterationDecision.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
Iterator.h AK+LibJS: Add [[nodiscard]] to operator* in common types 2024-10-25 09:15:28 +02:00
JsonArray.cpp AK+Everywhere: Convert JSON value serialization to String 2025-02-20 19:27:51 -05:00
JsonArray.h AK: Fix the JsonArray constructor for accepting an iterable type 2025-03-04 15:33:39 -05:00
JsonArraySerializer.h Everywhere: Remove all KERNEL #defines 2024-06-18 09:36:25 +02:00
JsonObject.cpp AK+Everywhere: Convert JSON value serialization to String 2025-02-20 19:27:51 -05:00
JsonObject.h AK+Everywhere: Convert JSON value serialization to String 2025-02-20 19:27:51 -05:00
JsonObjectSerializer.h AK+Everywhere: Store JSON strings as String 2025-02-20 19:27:51 -05:00
JsonParser.cpp AK+Everywhere: Replace custom number parsers with fast_float 2025-07-03 09:51:56 -04:00
JsonParser.h AK: Disallow construction of JsonParser 2025-03-20 10:50:24 +01:00
JsonValue.cpp AK: Disallow construction of JsonParser 2025-03-20 10:50:24 +01:00
JsonValue.h AK+Everywhere: Convert JSON value serialization to String 2025-02-20 19:27:51 -05:00
kmalloc.cpp Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
kmalloc.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
LEB128.h AK: Skip vcalls to Stream::read_value and read_until_filled in LEB128 2025-08-08 12:54:06 +02:00
LexicalPath.cpp AK: Add LexicalPath::is_root() 2024-11-19 22:07:01 -07:00
LexicalPath.h Everywhere: Slap some [[clang::lifetimebound]] where appropriate 2025-09-01 11:11:38 +02:00
LexicalPathWindows.cpp AK: Don't crash on empty extension in LexicalPath::has_extension 2025-02-17 14:57:00 +01:00
LsanSuppressions.h LibGfx+LibWeb: Replace remaining OpenType implementation with Skia 2024-09-05 19:21:52 +02:00
Math.h AK+LibGfx: Prefer if consteval over is_constant_evaluated 2026-02-22 13:56:12 -05:00
MaybeOwned.h AK: Allow creating a MaybeOwned<Superclass> from a MaybeOwned<Subclass> 2024-03-25 20:35:00 +01:00
MemMem.h Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
Memory.h AK: Remove fast_u32_xxx apis from Memory.h 2025-03-03 15:58:27 +01:00
MemoryStream.cpp AK: Make some Stream::read* functions available inline 2025-08-08 12:54:06 +02:00
MemoryStream.h AK: Remove unused include from MemoryStream 2026-02-17 12:38:51 +00:00
NeverDestroyed.h AK: Include missing StdLibExtras from NeverDestroyed 2024-11-19 14:32:11 -07:00
Noncopyable.h AK: Loosen the restrictions on non-copyable/non-movable containers 2025-04-22 21:19:31 -06:00
NonnullOwnPtr.h AK: Store hash with HashTable entry to avoid expensive equality checks 2025-09-18 22:37:18 +02:00
NonnullRawPtr.h AK: Store hash with HashTable entry to avoid expensive equality checks 2025-09-18 22:37:18 +02:00
NonnullRefPtr.h AK: Store hash with HashTable entry to avoid expensive equality checks 2025-09-18 22:37:18 +02:00
NumberFormat.cpp AK: Remove unused include from NumberFormat 2026-02-17 12:38:51 +00:00
NumberFormat.h AK: Remove unused include from NumberFormat 2026-02-17 12:38:51 +00:00
NumericLimits.h AK: Add 16-bit float type 2024-11-10 14:48:20 -07:00
Optional.h AK+LibGfx: Prefer if consteval over is_constant_evaluated 2026-02-22 13:56:12 -05:00
OptionParser.cpp AK: Remove unused include from OptionParser 2026-02-17 12:38:51 +00:00
OptionParser.h AK: Remove unused include from OptionParser 2026-02-17 12:38:51 +00:00
OwnPtr.h AK: Store hash with HashTable entry to avoid expensive equality checks 2025-09-18 22:37:18 +02:00
Platform.h AK: Use builtin macro to get cache line size 2026-02-21 11:49:42 +01:00
Queue.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
QuickSort.h AK: Remove redundant condition from Quick Sort 2024-12-22 12:33:41 +01:00
Random.cpp AK: Remove unused header in Random 2026-02-21 19:27:35 +01:00
Random.h LibJS/AK: Move XorShift128PlusRNG to AK 2025-12-01 11:00:33 +00:00
RedBlackTree.h AK: Add find methods to RedBlackTree returning mutable iterators 2026-01-29 05:22:27 -06:00
RefCounted.h AK: Call deref_base() on the pointer type 2026-02-18 13:13:32 -06:00
RefPtr.h AK: Store hash with HashTable entry to avoid expensive equality checks 2025-09-18 22:37:18 +02:00
Result.h Everywhere: Run clang-format 2024-12-28 05:39:32 -08:00
ReverseIterator.h Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
ScopedValueRollback.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
ScopeGuard.h AK: Make ScopeGuard and ArmedScopeGuard [[nodiscard]] 2025-01-09 18:36:34 +00:00
ScopeLogger.h Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
SegmentedVector.h AK: Define ConstIterator for SegmentedVector 2025-07-13 19:15:05 +02:00
SIMD.h Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
SIMDExtras.h Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
Singleton.h LibWebView: Enable in Windows CI 2025-08-23 16:04:36 -06:00
SinglyLinkedList.h AK+LibJS: Make SinglyLinkedList::remove() return a new iterator 2025-12-25 20:21:37 +01:00
SinglyLinkedListSizePolicy.h AK: Combine SinglyLinkedList and SinglyLinkedListWithCount 2023-01-02 20:13:24 +00:00
SourceGenerator.h Everywhere: Slap some [[clang::lifetimebound]] where appropriate 2025-09-01 11:11:38 +02:00
SourceLocation.h AK: Make SourceLocation's copy assignment operator take const 2026-02-18 13:13:32 -06:00
Span.h LibIPC: Encode spans of trivial arithmetic types more efficiently 2025-12-01 15:12:52 +01:00
Stack.h Everywhere: Run clang-format 2022-12-03 23:52:23 +00:00
StackInfo.cpp AK: Use getrlimit() to find the correct main thread stack size on macOS 2024-11-10 19:12:59 +01:00
StackInfo.h AK: Use __builtin_frame_address to find current stack depth remaining 2023-07-01 07:03:11 +02:00
StdLibExtraDetails.h AK: Use __is_trivially_destructible built-in with new enough GCC 2025-06-14 16:02:40 -04:00
StdLibExtras.h AK+LibGfx: Prefer if consteval over is_constant_evaluated 2026-02-22 13:56:12 -05:00
Stream.cpp AK: Make some Stream::read* functions available inline 2025-08-08 12:54:06 +02:00
Stream.h AK: Make some Stream::read* functions available inline 2025-08-08 12:54:06 +02:00
String.cpp AK: Prefer Optional<StringView> for String::bijective_base_from 2026-02-21 12:37:44 +01:00
String.h AK: Prefer Optional<StringView> for String::bijective_base_from 2026-02-21 12:37:44 +01:00
StringBase.cpp AK: Remove unused include from StringBase 2026-02-17 12:38:51 +00:00
StringBase.h AK+LibGfx: Prefer if consteval over is_constant_evaluated 2026-02-22 13:56:12 -05:00
StringBuilder.cpp AK: Initialize StringBuilder buffer in place 2025-10-05 11:24:46 +02:00
StringBuilder.h AK: Initialize StringBuilder buffer in place 2025-10-05 11:24:46 +02:00
StringConversions.cpp AK+LibJS: Replace home-grown Ryu implementation with fmt's dragonbox 2026-02-23 18:30:40 +01:00
StringConversions.h AK+LibJS: Replace home-grown Ryu implementation with fmt's dragonbox 2026-02-23 18:30:40 +01:00
StringData.h Everywhere: Slap some [[clang::lifetimebound]] where appropriate 2025-09-01 11:11:38 +02:00
StringHash.h AK: Make hashing of UTF-16 strings cheaper 2025-08-07 02:05:50 +02:00
StringNumber.h AK: Skip ASCII validation in {Utf16String,String}::number() 2025-10-05 11:24:46 +02:00
StringUtils.cpp AK: Use simdutf for searching strings for a single code unit 2025-08-11 16:55:37 +02:00
StringUtils.h AK+Everywhere: Replace custom number parsers with fast_float 2025-07-03 09:51:56 -04:00
StringView.cpp AK: Remove unused include from StringView 2026-02-17 12:38:51 +00:00
StringView.h AK+LibGfx: Prefer if consteval over is_constant_evaluated 2026-02-22 13:56:12 -05:00
TemporaryChange.h AK: Fully qualify use of move in TemporaryChange 2025-03-22 17:27:45 +01:00
Time.cpp AK: Handle integer negative seconds in Duration::from_time_units() 2026-01-23 20:36:35 +01:00
Time.h AK+LibGfx: Prefer if consteval over is_constant_evaluated 2026-02-22 13:56:12 -05:00
Traits.h AK: Add and use IdentityHashTraits<Integral> 2026-02-24 13:24:58 +01:00
Trie.h AK+LibRegex: Only set node metadata on Trie::ensure_child if missing 2025-11-21 02:46:33 +01:00
Try.h AK+LibJS: Allow {TRY,MUST}{,_OR_THROW_OOM} on list-initializers 2024-12-04 16:45:58 +00:00
Tuple.h Everywhere: Run clang-format 2026-02-18 08:02:45 -05:00
TypeCasts.h AK: Avoid double "is" check in as_if<T> when type must be dynamic_casted 2025-12-20 09:13:19 -06:00
TypedTransfer.h AK: Compare pointers in TypedTransfer<T>::compare() 2025-07-24 07:18:25 -04:00
TypeList.h AK: Make IndexSequence use size_t 2024-02-11 18:53:00 +01:00
Types.h AK: Remove unused __ptrdiff_t declaration 2025-11-07 11:27:51 +01:00
UFixedBigInt.h Everywhere: Slap some [[clang::lifetimebound]] where appropriate 2025-09-01 11:11:38 +02:00
UFixedBigIntDivision.h AK: Move generalized internals of UFixedBigIntDivision to BigIntBase 2024-03-25 14:26:29 -06:00
UnicodeUtils.h AK: Fix usage of constexpr within Utf16View and related utilities 2025-07-05 01:25:22 +12:00
Utf8View.cpp AK: Remove unused include from Utf8View 2026-02-17 12:38:51 +00:00
Utf8View.h AK: Provide a length_in_code_units API for UTF-8 strings 2025-08-22 14:06:46 +02:00
Utf16FlyString.cpp AK: Cache hashes for fly string interning 2026-01-26 19:37:42 +01:00
Utf16FlyString.h AK: Store hash with HashTable entry to avoid expensive equality checks 2025-09-18 22:37:18 +02:00
Utf16String.cpp AK: Skip ASCII validation in {Utf16String,String}::number() 2025-10-05 11:24:46 +02:00
Utf16String.h LibJS: Make single-character ASCII string cache strings be Utf16String 2025-10-05 16:39:14 +02:00
Utf16StringBase.h AK+LibGfx: Prefer if consteval over is_constant_evaluated 2026-02-22 13:56:12 -05:00
Utf16StringData.cpp AK: Remove unused include from ByteString 2026-02-17 12:38:51 +00:00
Utf16StringData.h AK: Skip ASCII validation in {Utf16String,String}::number() 2025-10-05 11:24:46 +02:00
Utf16View.cpp AK: Remove unused include from Utf16View 2026-02-17 12:38:51 +00:00
Utf16View.h AK: Remove unused include from Utf16View 2026-02-17 12:38:51 +00:00
Utf32View.cpp AK: Add a comparison operator for Utf32View 2024-10-20 08:50:01 +02:00
Utf32View.h AK: Add a UTF-16 string with optimized short- and ASCII-string storage 2025-07-18 12:45:38 -04:00
ValueComparingRefPtr.h AK: Allow comparing ValueComparingRefPtr with nullptr 2026-02-20 22:01:44 +00:00
Variant.h AK: Add Variant::unsafe_get() 2025-08-26 15:20:33 +02:00
Vector.h AK: Use specific IsTrivially* traits insteead of is_trivial in Vector 2026-02-02 14:11:49 +01:00
Weakable.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
WeakPtr.h AK: Store hash with HashTable entry to avoid expensive equality checks 2025-09-18 22:37:18 +02:00
Windows.h Everywhere: Abandon Swift adoption 2026-02-17 10:48:09 -05:00