ladybird/AK
Lenny Maiorani 853cb8af5c DoublyLinkedList: Implement find in terms of AK::find
Problem:
- The implementation of `find` is coupled to the implementation of
  `DoublyLinkedList`.
- `append` and `prepend` are implemented multiple times so that
  r-value references can be moved from into the new node. This is
  probably not called very often because a pr-value or x-value needs
  to be used here.

Solution:
- Decouple the implementation of `find` from the class by using a
  generic `find` algorithm.
- Make `append` and `prepend` be function templates so that they can
  have binding references which can be forwarded.
2021-01-11 19:45:05 +01:00
..
Tests DoublyLinkedList: Implement find in terms of AK::find 2021-01-11 19:45:05 +01:00
AllOf.h AllOf: Common iterator types 2020-12-20 21:13:10 +01:00
Array.h AK: Remove redundant compare() functions. 2021-01-02 01:37:22 +01:00
Assertions.h AK+LibC: Add TODO() as an alternative to ASSERT_NOT_REACHED() 2020-05-30 11:31:49 +02:00
Atomic.h AK: Add default memory order as template argument for Atomic<T> 2021-01-04 19:13:52 +01:00
Badge.h Meta+AK: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
Base64.cpp AK: Fix base64 decoding '/' 2020-11-22 16:07:00 +01:00
Base64.h Base64: Pre-allocate size of input and output 2020-10-13 23:59:46 +02:00
BinarySearch.h AK: Deal with unsigned integers in binary search. 2021-01-01 22:23:13 +01:00
Bitmap.h Everywhere: Fix more typos 2020-10-03 12:36:49 +02:00
BitStream.h AK: Lower the requirements for InputStream::eof and rename it. 2020-09-14 20:58:12 +02:00
Buffered.h AK: Cleanup missing includes and #ifdef evaluation 2020-11-22 11:35:53 +01:00
ByteBuffer.cpp AK: Prevent confusing silent misuse of ByteBuffer 2020-08-22 17:18:14 +02:00
ByteBuffer.h AK: Remove redundant compare() functions. 2021-01-02 01:37:22 +01:00
Checked.h Everywhere: Redundant inline specifier on constexpr functions (#3807) 2020-10-20 18:08:13 +02:00
CircularDeque.h AK: Add enqueue_begin() for the CircularDeque class (#1320) 2020-03-02 09:50:43 +01:00
CircularDuplexStream.h AK: Remove bogus test case for CircularDuplexStream. 2020-12-19 23:29:40 +01:00
CircularQueue.h AK: Add CircularDuplexStream class. 2020-08-26 21:07:53 +02:00
CMakeLists.txt CMake: Decouple cmake utility functions from top-level CMakeLists.txt 2020-12-24 11:02:04 +01:00
Concepts.h AK: Pull Is{Integral,FloatingPoint} into the global namespace 2020-12-05 23:52:17 +01:00
Demangle.h Revert "AK: Don't demangle in serenity :(" 2020-05-20 16:24:26 +02:00
DistinctNumeric.h AK: Prefer using instead of typedef 2020-11-12 10:19:04 +01:00
DoublyLinkedList.h DoublyLinkedList: Implement find in terms of AK::find 2021-01-11 19:45:05 +01:00
Endian.h Everywhere: Re-format with clang-format-11 2020-12-31 21:51:00 +01:00
FileStream.h AK+ProtocolServer: Properly close download stream fd's 2020-12-30 20:37:41 +01:00
Find.h AK: Find a value in any container offering iterators 2021-01-11 19:45:05 +01:00
FlyString.cpp AK: Generalize AK::String::to_int() for more types 2020-12-21 00:15:44 +01:00
FlyString.h AK: Generalize AK::String::to_int() for more types 2020-12-21 00:15:44 +01:00
Format.cpp AK: Add Formatter<FormatString> as helper class. 2021-01-09 21:11:09 +01:00
Format.h Everywhere: Replace a bundle of dbg with dbgln. 2021-01-11 11:55:47 +01:00
Forward.h AK: Add default memory order as template argument for Atomic<T> 2021-01-04 19:13:52 +01:00
Function.h Meta+AK: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
GenericLexer.cpp AK: Add GenericLexer::retreat() 2020-10-29 11:52:31 +01:00
GenericLexer.h AK: Add GenericLexer::retreat() 2020-10-29 11:52:31 +01:00
HashFunctions.h HashFunctions: constexpr capability 2020-10-21 19:42:12 +02:00
HashMap.h AK: Add HashMap(std::initializer_list<Entry>) constructor 2020-12-29 15:22:15 +01:00
HashTable.h AK: Reduce memory writes in HashTable destructor 2020-10-18 14:44:23 +02:00
Hex.cpp AK: Add {encode,decode}_hex similar to {encode,decode}_base64 2020-12-13 11:00:20 +01:00
Hex.h AK: Add {encode,decode}_hex similar to {encode,decode}_base64 2020-12-13 11:00:20 +01:00
IDAllocator.h Meta+AK: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
InlineLinkedList.h AK: Add insert_before/insert_after to InlineLinkedList 2020-12-02 13:02:04 +01:00
IntrusiveList.h AK: Add IntrusiveList::take_last() 2020-11-24 16:37:55 +01:00
IPv4Address.h Everywhere: Re-format with clang-format-11 2020-12-31 21:51:00 +01:00
IterationDecision.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
Iterator.h AK: Mark SimpleIterator::operator*() as ALWAYS_INLINE 2020-11-14 17:20:17 +01:00
JsonArray.h Meta+AK: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
JsonArraySerializer.h AK+Kernel: Escape JSON keys & values 2020-11-02 12:56:36 +01:00
JsonObject.h AK+Kernel: Escape JSON keys & values 2020-11-02 12:56:36 +01:00
JsonObjectSerializer.h AK+Kernel: Escape JSON keys & values 2020-11-02 12:56:36 +01:00
JsonParser.cpp AK: Make JsonParser::parse_number properly parse >32bit ints 2020-12-21 00:15:44 +01:00
JsonParser.h AK: Remove empty destructor from JsonParser. 2020-09-08 14:01:21 +02:00
JsonPath.cpp Inspector: Expand and show properties in a TreeView 2020-07-01 11:18:19 +02:00
JsonPath.h Inspector: Expand and show properties in a TreeView 2020-07-01 11:18:19 +02:00
JsonValue.cpp AK: Fix JsonValue copy constructor behavior for 64-bit values 2020-07-06 18:38:08 +02:00
JsonValue.h AK+Format: Remove TypeErasedFormatParams& from format function. 2020-12-30 20:33:53 +01:00
kmalloc.h AK: Always include <new> from compiler before our operators new 2020-11-05 09:59:30 +01:00
kstdio.h LibC: Enable compiler warnings for printf format strings 2020-12-26 10:05:50 +01:00
LexicalPath.cpp Meta+AK: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
LexicalPath.h AK+Format: Remove TypeErasedFormatParams& from format function. 2020-12-30 20:33:53 +01:00
LogStream.cpp AK: Remove out() and warn(). 2020-11-09 16:21:29 +01:00
LogStream.h AK: Remove out() and warn(). 2020-11-09 16:21:29 +01:00
MACAddress.h Everywhere: Re-format with clang-format-11 2020-12-31 21:51:00 +01:00
MappedFile.cpp AK: Make MappedFile heap-allocated and ref-counted 2021-01-10 16:49:13 +01:00
MappedFile.h AK: Make MappedFile heap-allocated and ref-counted 2021-01-10 16:49:13 +01:00
MemMem.h AK: Implement memmem() for iterator haystacks 2020-12-08 23:34:38 +01:00
Memory.h AK+LibC: Always use REP MOVSB/STOSB for memcpy()/memset() 2020-07-27 15:54:39 +02:00
MemoryStream.h AK: Fix offset calculation error in DuplexMemoryStream::write. 2020-12-09 21:17:24 +01:00
NeverDestroyed.h NeverDestroyed: Add tests 2020-11-22 10:54:33 +01:00
Noncopyable.h Meta: Force semi-colon after MAKE_AK_NONXXXABLE() 2020-08-27 10:12:04 +02:00
NonnullOwnPtr.h AK+Format: Remove TypeErasedFormatParams& from format function. 2020-12-30 20:33:53 +01:00
NonnullOwnPtrVector.h AK: Forward declare Nonnull{Own,Ref}PtrVector 2020-12-08 23:34:38 +01:00
NonnullPtrVector.h AK: Use ALWAYS_INLINE all over NonnullPtrVector 2020-11-23 14:08:50 +01:00
NonnullRefPtr.h AK+Format: Remove TypeErasedFormatParams& from format function. 2020-12-30 20:33:53 +01:00
NonnullRefPtrVector.h AK: Forward declare Nonnull{Own,Ref}PtrVector 2020-12-08 23:34:38 +01:00
NumberFormat.h AK: Use new format functions. 2020-10-08 09:59:55 +02:00
NumericLimits.h AK: Add NumericLimits specialization for char. 2020-09-29 16:14:58 +02:00
Optional.h Everywhere: Re-format with clang-format-11 2020-12-31 21:51:00 +01:00
OSError.h AK: Add AK::OSError, a wrapper for errno codes 2021-01-10 16:46:13 +01:00
OwnPtr.h AK: Really disallow making OwnPtrs from refcounted types 2020-11-03 19:14:34 +01:00
Platform.h AK: Add CLOCK_*_COARSE aliases for darwin and BSD variants 2020-12-28 19:35:32 +01:00
PrintfImplementation.h AK: Remove custom %w format string specifier 2020-12-25 17:05:05 +01:00
Queue.h Meta+AK: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
QuickSort.h AK: Ensure dual_pivot_quick_sort does not copy the pivots 2020-12-10 11:02:02 +01:00
Random.h Everywhere: Switch from (void) to [[maybe_unused]] (#4473) 2020-12-21 00:09:48 +01:00
RefCounted.h AK: Decorate RefCountedBase::try_ref with nodiscard 2021-01-04 19:13:52 +01:00
RefPtr.h AK: Always inline RefPtr::operator bool() and RefPtr::is_null() 2020-11-25 21:26:58 +01:00
Result.h AK: Add release_value() and release_error() to AK::Result 2021-01-09 19:57:50 +01:00
ScopedValueRollback.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
ScopeGuard.h Meta+AK: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
SharedBuffer.cpp AK: Enable AK::SharedBuffer for all platforms 2020-12-28 19:35:32 +01:00
SharedBuffer.h AK: Enable AK::SharedBuffer for all platforms 2020-12-28 19:35:32 +01:00
SIMD.h AK: Add header for SIMD vectorized types 2020-12-08 09:39:43 +01:00
Singleton.h AK: Add static Singleton::get function to allow destructible globals 2021-01-09 21:12:31 +01:00
SinglyLinkedList.h AK: SinglyLinkedList use Traits<T>::equals in find 2020-09-06 21:56:32 +02:00
SinglyLinkedListWithCount.h AK: Cleanup missing includes and #ifdef evaluation 2020-11-22 11:35:53 +01:00
SourceGenerator.h LibIPC: Prepend each message with its size 2020-11-23 18:37:40 +01:00
Span.h AK: Mark some Span functions with [[nodiscard]] 2020-12-19 18:29:13 +01:00
StackInfo.cpp AK: Use MacOS pthread_get_stacksize_np to get stack size for StackInfo 2020-12-30 11:28:50 +01:00
StackInfo.h LibJS+AK: Move cross-platform stack bounds code from JS::Heap to AK::StackInfo 2020-11-08 16:51:54 +01:00
StdLibExtras.h AK: Add tests for type traits and IndexSequence 2020-12-30 11:32:20 +01:00
Stream.h AK: Replace some SFINAE with requires clauses, clean up existing ones 2020-12-30 13:28:49 +01:00
String.cpp AK: Move String::number entirely to header file 2020-12-30 11:32:20 +01:00
String.h AK: Add String{,View}::is_whitespace() 2021-01-03 10:47:29 +01:00
StringBuilder.cpp AK: Add some inline capacity to StringBuilder 2020-11-24 22:06:51 +01:00
StringBuilder.h AK: Add some inline capacity to StringBuilder 2020-11-24 22:06:51 +01:00
StringImpl.cpp AK: Don't return empty StringImpl from create() when char* starts with \0 2020-11-25 20:17:25 +01:00
StringImpl.h AK+Format: Remove TypeErasedFormatParams& from format function. 2020-12-30 20:33:53 +01:00
StringUtils.cpp AK: Add String{,View}::is_whitespace() 2021-01-03 10:47:29 +01:00
StringUtils.h AK: Add String{,View}::is_whitespace() 2021-01-03 10:47:29 +01:00
StringView.cpp AK: Generalize AK::String::to_int() for more types 2020-12-21 00:15:44 +01:00
StringView.h AK: Add String{,View}::is_whitespace() 2021-01-03 10:47:29 +01:00
TemporaryChange.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
TestSuite.h AK: Don't forward declare abort. 2020-10-14 11:29:29 +02:00
Time.cpp AK+LibC+LibCore: Have fewer implementations of day_of_week 2020-08-26 08:52:07 +02:00
Time.h AK: Add CLOCK_*_COARSE aliases for darwin and BSD variants 2020-12-28 19:35:32 +01:00
Traits.h AK: Find a value in any container offering iterators 2021-01-11 19:45:05 +01:00
Trie.h AK: Replace some SFINAE with requires clauses, clean up existing ones 2020-12-30 13:28:49 +01:00
TypeCasts.h AK+LibGUI+LibWeb: Remove AK::TypeTraits in favor of RTTI-based helpers 2021-01-01 15:33:30 +01:00
TypedTransfer.h AK: Moved TypedTransfer into it's own header. 2020-09-09 20:15:50 +02:00
TypeList.h AK: Add missing 'template' keywords in TypeList 2020-12-31 16:16:07 +01:00
Types.h AK: Add default memory order as template argument for Atomic<T> 2021-01-04 19:13:52 +01:00
URL.cpp AK::URL: Fix setting the port number in the case it was the last element of the URL 2020-12-12 20:09:42 +01:00
URL.h AK+Format: Remove TypeErasedFormatParams& from format function. 2020-12-30 20:33:53 +01:00
URLParser.cpp AK: Fix urlencode() with high byte values 2020-12-12 23:50:23 +01:00
URLParser.h AK: Add basic percent encoder/decoder (urlencode and urldecode) 2020-06-07 21:05:05 +02:00
Userspace.h Kernel: Allow Userspace<T> pointers with invalid content 2020-12-27 23:43:15 +01:00
Utf8View.cpp AK: Use size_t in methods of Utf8View. 2021-01-02 01:37:22 +01:00
Utf8View.h AK: Use size_t in methods of Utf8View. 2021-01-02 01:37:22 +01:00
Utf32View.h LibGfx+AK: Make text elision work with multi-byte characters 2020-12-28 23:54:10 +01:00
UUID.cpp AK: Add the UUID container 2021-01-01 22:59:48 +01:00
UUID.h AK: Add the UUID container 2021-01-01 22:59:48 +01:00
Vector.h Vector: Implement find, find_if, find_first_matching in terms of AK::find* 2021-01-11 19:45:05 +01:00
Weakable.h AK: Fix some WeakPtr copy constructor variants not copying the link 2020-12-31 00:39:43 +01:00
WeakPtr.h AK: Fix some WeakPtr copy constructor variants not copying the link 2020-12-31 00:39:43 +01:00