Max Kellermann
2cd5f4cd3e
util/IntrusiveHashSet: replace template parameters Hash/Equal with a single one
...
Preparing to add a key extraction function. Without this "Operators"
template parameter, we'd have even more template parameters, and that
parameter list would grow too complex. Better wrap it in one single
template that contains all operators.
This is an API change which all callers need to adjust to, but it will
be worth it.
2023-08-03 20:44:14 +02:00
Max Kellermann
dcd7c6337c
util/Intrusive{List,HashSet}: reimplement hook mode detection with implicit cast
2023-08-03 20:33:15 +02:00
Max Kellermann
acc92b156b
util/Concepts: remove obsolete fallbacks
2023-07-21 19:43:04 +02:00
Max Kellermann
aeadae5399
util/IntrusiveHashSet: insert_check() returns the bucket head on success
...
The list head is a stable value that is guaranteed to be still valid
when insert_commit() gets called.
This fixes a linked list corruption bug in class StaticCache which
occurs when the cache item pointed to by the iterator gets evicted
between insert_check() and insert_commit().
2023-07-21 19:42:35 +02:00
Max Kellermann
42d5b05f54
util/IntrusiveHashSet: rename insert() to insert_commit()
...
Clarify that the method is not a freestanding insertion method but
should only be used after insert_check().
2023-07-21 19:42:26 +02:00
Max Kellermann
e133f621a4
util/IntrusiveHashSet: add insert_check() documentation
2023-07-21 19:41:46 +02:00
Max Kellermann
91437d9e63
util/IntrusiveList: add insert_after()
2023-07-21 19:41:40 +02:00
Max Kellermann
f1b497fb0c
util/IntrusiveList: document insert()
2023-07-21 19:41:36 +02:00
Max Kellermann
cc9d061e51
util/IntrusiveList: pop_front() and pop_back() return reference
2023-07-21 19:41:13 +02:00
Max Kellermann
62ee9a4d60
util/DynamicFifoBuffer: use T instead of std::byte
...
Mistake added by commit b528b467649754
2023-07-21 19:40:38 +02:00
Max Kellermann
6496c1b806
util/ScopeExit: convert the function from base class to member
...
This allows using `final` callables.
2023-05-22 21:20:49 +02:00
Max Kellermann
9027e5c5bb
Merge tag 'v0.23.13'
...
release v0.23.13
2023-05-22 19:52:08 +02:00
Max Kellermann
dc127f39a7
util/ScopeExit: use std::declval()
...
Fixes GCC 10 error:
error: cannot call member function `Foo` without object
2023-05-22 15:01:25 +02:00
Max Kellermann
7a99a7008c
util/ScopeExit: use std::exchange()
2023-05-22 14:44:45 +02:00
Max Kellermann
70b451db7b
util/ScopeExit: add noexcept
2023-05-22 14:44:17 +02:00
Max Kellermann
2ab03a0914
util/ScopeExit: allow the function to throw
...
Fixes crash inside AtScopeExit() in the WASAPI output plugin.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1759
2023-05-22 14:43:23 +02:00
Max Kellermann
01c02a1ef8
util/StaticFifoBuffer: add method MoveFrom()
2023-05-21 21:26:20 +02:00
Max Kellermann
99885c4cbc
util/IntrusiveHashSet: add method remove_and_dispose()
2023-04-22 08:40:53 +02:00
Max Kellermann
76497bd5f7
util/IntrusiveSortedList, event/TimerList: include cleanup
2023-04-06 10:24:53 +02:00
Max Kellermann
688d9ff114
util/UriExtract: add uri_get_path_query_fragment()
...
Rename uri_get_path() to uri_get_path_query_fragment() and add a new
uri_get_path() function.
2023-03-14 20:03:17 +01:00
Max Kellermann
f3ebaf8bdd
util/ByteOrder: add class PackedLE64
2023-03-12 20:25:49 +01:00
Max Kellermann
fb961e89da
util/StringCompare: add constexpr
2023-03-12 20:14:23 +01:00
Max Kellermann
8b77da545d
*: use transparent comparison for std::{map,set} with std::string keys
...
This avoids many std::string temporaries for lookups.
2023-03-12 09:12:02 +01:00
Max Kellermann
415de497d3
use more libfmt instead of sprintf()
2023-03-06 19:50:53 +01:00
Max Kellermann
941f2ca60d
pcm/{Traits,Dsd*}: use std::byte
2023-03-06 18:44:20 +01:00
Max Kellermann
35b6d65f27
util/Compiler.h: remove unused compiler version check macros
2023-03-06 16:37:46 +01:00
Max Kellermann
ff239fff4f
util/ByteOrder: check only __GNUC__
...
Assume GCC/clang is recent enough.
2023-03-06 16:37:45 +01:00
Max Kellermann
47b3577d6b
util/Compiler.h: remove unused macro gcc_printf
2023-03-06 16:27:47 +01:00
Max Kellermann
1f56960c44
util/FormatString: remove unused library
2023-03-06 16:24:51 +01:00
Max Kellermann
18c3c2118d
util/Compiler.h: remove unused macros
2023-03-06 16:14:30 +01:00
Max Kellermann
42f6a0441c
use [[gnu::...]] attributes
2023-03-06 16:14:15 +01:00
Max Kellermann
3b9aab0684
util/UTF8: fix indent
2023-03-06 16:12:09 +01:00
Max Kellermann
148aca23be
use SPDX IDs, replacing the long copyright headers
2023-03-06 14:59:48 +01:00
Max Kellermann
f1cea1f152
util/IntrusiveHashSet: add unlink(), is_linked()
2023-01-31 13:07:26 +01:00
Max Kellermann
5b07c8fc6c
util/CharUtil: add IsLowerAlphaNumericASCII()
2023-01-29 09:39:40 +01:00
Max Kellermann
b45afd1cab
util/StringBuffer: add constexpr
2023-01-29 09:38:40 +01:00
Max Kellermann
ebf65572dd
util/ByteOrder: remove unnecessary operator=
...
The compiler can just use the uint32_t constructor instead. This was
redundant code.
2023-01-28 07:48:03 +01:00
Max Kellermann
f31ae7c556
util/RingBuffer: replacement for boost::lockfree::spsc_queue
2023-01-23 13:44:54 +01:00
Max Kellermann
868958e159
util/IntrusiveHashSet: fix find_if() concept
2023-01-22 12:25:55 +01:00
Max Kellermann
52af03a5a6
util/IntrusiveHashSet: implement remove_and_dispose_if() with constant_time_size
2023-01-22 12:24:50 +01:00
Max Kellermann
7475e971bc
util/IntrusiveList: remove_and_dispose_if() returns the number of removed items
2023-01-22 12:24:43 +01:00
Max Kellermann
c65b1fee8d
util/IntrusiveHashSet: check key equivalence in remove_and_dispose_if()
2023-01-22 12:24:41 +01:00
Max Kellermann
e2abade6aa
util/IntrusiveList: add postfix operator++
2023-01-22 12:24:33 +01:00
Max Kellermann
57673136d8
util/IntrusiveHashSet: add method expire_find_if()
2023-01-22 12:24:30 +01:00
Max Kellermann
49e122a81d
util/IntrusiveHashSet: add method remove_and_dispose_if(key)
2023-01-22 12:24:23 +01:00
Max Kellermann
c7a0597fe7
util/Intrusive*: add C++20 concept checks
2022-12-01 15:43:51 +01:00
Max Kellermann
00b7535cf1
util/Concepts: compatibility wrapper for std::predicate
2022-12-01 15:11:27 +01:00
Max Kellermann
5945877313
util/IntrusiveHashSet: add missing Cast()/ToHook() functions to IntrusiveHashSetMemberHookTraits
2022-12-01 15:10:42 +01:00
Max Kellermann
fe3e1d31bf
util/IntrusiveHashSet: remove unused type alias "ListHookTraits"
2022-12-01 15:10:38 +01:00
Max Kellermann
65f1cafa43
util/IntrusiveHashSet: add method find_if()
2022-12-01 15:10:32 +01:00