tlx
|
Namespaces | |
digest_detail | |
meta_detail | |
multisequence_partition_detail | |
multisequence_selection_detail | |
multiway_merge_detail | |
parallel_mergesort_detail | |
radix_heap_detail | |
sort_networks | |
Implementations of sorting networks for up to sixteen elements. | |
sort_strings_detail | |
Classes | |
class | Aggregate |
Calculate running aggregate statistics: feed it with values, and it will keep the minimum, the maximum, the average, the value number, and the standard deviation is values. More... | |
class | AggregateMinMax |
Calculate running aggregate statistics: feed it with values, and it will keep the minimum and the maximum values. More... | |
class | AllocatorBase |
class | BTree |
Basic class implementing a B+ tree data structure in memory. More... | |
struct | btree_default_traits |
Generates default traits for a B+ tree used as a set or map. More... | |
class | btree_map |
Specialized B+ tree template class implementing STL's map container. More... | |
class | btree_multimap |
Specialized B+ tree template class implementing STL's multimap container. More... | |
class | btree_multiset |
Specialized B+ tree template class implementing STL's multiset container. More... | |
class | btree_set |
Specialized B+ tree template class implementing STL's set container. More... | |
class | CmdlineParser |
base class of all options and parameters More... | |
class | CountingPtr |
High-performance smart pointer used as a wrapping reference counting pointer. More... | |
class | CountingPtrDefaultDeleter |
default deleter for CountingPtr More... | |
class | CountingPtrNoOperationDeleter |
dummy deleter for CountingPtr More... | |
class | DAryAddressableIntHeap |
This class implements an addressable integer priority queue, precisely a d-ary heap. More... | |
class | DAryHeap |
This class implements a d-ary comparison-based heap usable as a priority queue. More... | |
class | DefaultLoggerOutputCErr |
default output logger to cerr More... | |
class | DefaultLoggerOutputCOut |
default output logger to cout More... | |
class | Delegate |
class | Delegate< R(A...), Allocator > |
This is a faster replacement than std::function. More... | |
class | DieException |
Exception thrown by die_with_message() if. More... | |
struct | enable_if |
SFINAE enable_if – copy of std::enable_if<> with less extra cruft. More... | |
struct | enable_if< true, T > |
class | FunctionChain |
A FunctionChain is a chain of functors that can be folded to a single functors. More... | |
class | FunctionStack |
A FunctionStack is a chain of functor that can be folded to a single functor (which is usually optimize by the compiler). More... | |
struct | has_ostream_operator |
SFINAE magic helper for wrap_unprintable() More... | |
struct | index_sequence |
struct | is_std_array |
test if is std::array<T, N> More... | |
struct | is_std_array< std::array< T, N > > |
struct | is_std_pair |
test if is a std::pair<...> More... | |
struct | is_std_pair< std::pair< S, T > > |
struct | is_std_tuple |
test if is a std::tuple<...> More... | |
struct | is_std_tuple< std::tuple< Ts... > > |
struct | is_std_vector |
test if is std::vector<T> More... | |
struct | is_std_vector< std::vector< T > > |
struct | less_icase_asc |
Case-insensitive less order relation functional class for std::map, etc. More... | |
struct | less_icase_desc |
Descending case-insensitive less order relation functional class for std::map, etc. More... | |
struct | LevenshteinStandardICaseParameters |
Standard parameters to Levenshtein distance function. More... | |
struct | LevenshteinStandardParameters |
Standard parameters to levenshtein distance function. More... | |
class | Log2 |
class | Log2< 0 > |
class | Log2< 1 > |
class | Log2Floor |
class | Log2Floor< 0 > |
class | Log2Floor< 1 > |
class | Logger |
LOG and sLOG for development and debugging. More... | |
class | LoggerCollectOutput |
Class to hook logger output in the local thread. More... | |
class | LoggerFormatter |
template class for formatting. contains a print() method. More... | |
class | LoggerFormatter< AnyType > |
class | LoggerFormatter< std::array< T, N > > |
class | LoggerFormatter< std::deque< T, A > > |
class | LoggerFormatter< std::map< K, V, C, A > > |
class | LoggerFormatter< std::multimap< K, V, C, A > > |
class | LoggerFormatter< std::multiset< T, C, A > > |
class | LoggerFormatter< std::pair< A, B > > |
class | LoggerFormatter< std::set< T, C, A > > |
class | LoggerFormatter< std::tuple< Args... > > |
class | LoggerFormatter< std::tuple<> > |
class | LoggerFormatter< std::unordered_map< K, V, H, E, A > > |
class | LoggerFormatter< std::unordered_multimap< K, V, H, E, A > > |
class | LoggerFormatter< std::unordered_multiset< T, H, E, A > > |
class | LoggerFormatter< std::unordered_set< T, H, E, A > > |
class | LoggerFormatter< std::vector< T, A > > |
class | LoggerOutputHook |
Abstract class to implement output hooks for logging. More... | |
class | LoggerPrefixHook |
Abstract class to implement prefix output hooks for logging. More... | |
class | LoggerTupleFormatter |
class | LoggerVoidify |
class | LoserTreeCopy |
Guarded loser tree/tournament tree, either copying the whole element into the tree structure, or looking up the element via the index. More... | |
class | LoserTreeCopy< true, ValueType, Comparator > |
Guarded loser tree/tournament tree, either copying the whole element into the tree structure, or looking up the element via the index. More... | |
class | LoserTreeCopyBase |
Guarded loser tree/tournament tree, either copying the whole element into the tree structure, or looking up the element via the index. More... | |
class | LoserTreeCopyUnguarded |
class | LoserTreeCopyUnguarded< true, ValueType, Comparator > |
class | LoserTreeCopyUnguardedBase |
Unguarded loser tree, copying the whole element into the tree structure. More... | |
class | LoserTreePointer |
Guarded loser tree, using pointers to the elements instead of copying them into the tree nodes. More... | |
class | LoserTreePointer< true, ValueType, Comparator > |
Guarded loser tree, using pointers to the elements instead of copying them into the tree nodes. More... | |
class | LoserTreePointerBase |
Guarded loser tree, using pointers to the elements instead of copying them into the tree nodes. More... | |
class | LoserTreePointerUnguarded |
class | LoserTreePointerUnguarded< true, ValueType, Comparator > |
class | LoserTreePointerUnguardedBase |
Unguarded loser tree, keeping only pointers to the elements in the tree structure. More... | |
class | LoserTreeSwitch |
class | LruCacheMap |
This is an expected O(1) LRU cache which contains a map of (key -> value) elements. More... | |
class | LruCacheSet |
This is an expected O(1) LRU cache which contains a set of key-only elements. More... | |
struct | make_index_sequence |
class | MD5 |
MD-5 processor without external dependencies. More... | |
class | MultiTimer |
MultiTimer can be used to measure time usage of different phases in a program or algorithm. More... | |
class | NoOperation |
The noop functor, which takes any arguments and does nothing. More... | |
class | NoOperation< void > |
Specialized noop functor which returns a void. More... | |
class | PolynomialRegression |
Calculate the regression polynomial \( a_0+a_1x^1+a_2x^2+\cdots+a_nx^n \) from a list of 2D points. More... | |
class | RadixHeap |
This class implements a monotonic integer min priority queue, more specific a multi-level radix heap. More... | |
class | ReferenceCounter |
Provides reference counting abilities for use with CountingPtr. More... | |
class | RingBuffer |
A ring (circular) buffer of static (non-growing) size. More... | |
class | ScopedMultiTimer |
Independent RAII Scoped MultiTimer: contains a MultiTimer which is started with the given timer, and added to the base MultiTimer on destruction. More... | |
class | ScopedMultiTimerSwitch |
RAII Scoped MultiTimer switcher: switches the timer of a MultiTimer on construction and back to old one on destruction. More... | |
class | Semaphore |
A simple semaphore implementation using C++11 synchronization methods. More... | |
class | SHA1 |
SHA-1 processor without external dependencies. More... | |
class | SHA256 |
SHA-256 processor without external dependencies. More... | |
class | SHA512 |
SHA-512 processor without external dependencies. More... | |
class | SimpleVector |
Simpler non-growing vector without initialization. More... | |
class | SpacingLogger |
A logging class which outputs spaces between elements pushed via operator<<. More... | |
class | SplayTree |
class | StackAllocator |
class | StackArena |
Storage area allocated on the stack and usable by a StackAllocator. More... | |
struct | StaticIndex |
Helper for call_foreach_with_index() to save the index as a compile-time index. More... | |
class | StringView |
StringView is a reference to a part of a string, consisting of only a char pointer and a length. More... | |
class | ThreadBarrierMutex |
Implements a thread barrier using mutex locking and condition variables that can be used to synchronize threads. More... | |
class | ThreadBarrierSpin |
Implements a thread barrier using atomics and a spin lock that can be used to synchronize threads. More... | |
class | ThreadPool |
ThreadPool starts a fixed number p of std::threads which process Jobs that are enqueued into a concurrent job queue. More... | |
Typedefs | |
template<typename KeyType , unsigned Arity = 2, typename Compare = std::less<KeyType>> | |
using | d_ary_addressable_int_heap = DAryAddressableIntHeap< KeyType, Arity, Compare > |
make template alias due to similarity with std::priority_queue More... | |
template<typename KeyType , unsigned Arity = 2, typename Compare = std::less<KeyType>> | |
using | d_ary_heap = DAryHeap< KeyType, Arity, Compare > |
make template alias due to similarity with std::priority_queue More... | |
template<typename KeyType , typename DataType , unsigned Radix = 8> | |
using | RadixHeapPair = RadixHeap< std::pair< KeyType, DataType >, radix_heap_detail::PairKeyExtract< KeyType, DataType >, KeyType, Radix > |
This class is a variant of tlx::RadixHeap for data types which do not include the key directly. More... | |
template<typename T > | |
using | simple_vector = SimpleVector< T > |
make template alias due to similarity with std::vector More... | |
template<typename Key , typename Compare = std::less<Key>, typename Allocator = std::allocator<Key>> | |
using | splay_set = SplayTree< Key, Compare, false, Allocator > |
template<typename Key , typename Compare = std::less<Key>, typename Allocator = std::allocator<Key>> | |
using | splay_multiset = SplayTree< Key, Compare, true, Allocator > |
using | string_view = StringView |
make alias due to STL similarity More... | |
template<typename Type > | |
using | counting_ptr = CountingPtr< Type > |
make alias due to similarity with std::shared_ptr<T> More... | |
template<typename Type > | |
using | CountingPtrNoDelete = CountingPtr< Type, CountingPtrNoOperationDeleter > |
make alias for dummy deleter More... | |
using | reference_counter = ReferenceCounter |
make alias due to CountingPtr's similarity with std::shared_ptr<T> More... | |
template<typename T , typename Allocator = std::allocator<void>> | |
using | delegate = Delegate< T, Allocator > |
make template alias due to similarity with std::function More... | |
typedef uint32_t | u32 |
typedef uint64_t | u64 |
using | semaphore = Semaphore |
alias for STL-like code style More... | |
Enumerations | |
enum | MultiwayMergeAlgorithm { MWMA_LOSER_TREE, MWMA_LOSER_TREE_COMBINED, MWMA_LOSER_TREE_SENTINEL, MWMA_BUBBLE, MWMA_ALGORITHM_LAST, MWMA_ALGORITHM_DEFAULT } |
Different merging algorithms: bubblesort-alike, loser-tree variants, enum sentinel. More... | |
enum | MultiwayMergeSplittingAlgorithm { MWMSA_SAMPLING, MWMSA_EXACT, MWMSA_LAST, MWMSA_DEFAULT } |
Different splitting strategies for sorting/merging: by sampling, exact. More... | |
enum | SimpleVectorMode { Normal, NoInitButDestroy, NoInitNoDestroy } |
enum class to select SimpleVector object initialization More... | |
Functions | |
template<typename InputIterator , typename OutputIterator , typename T , typename BinaryOperation = std::plus<T>> | |
OutputIterator | exclusive_scan (InputIterator first, InputIterator last, OutputIterator result, T init, BinaryOperation binary_op=BinaryOperation()) |
Computes an exclusive prefix sum operation using binary_op the range [first, last), using init as the initial value, and writes the results to the range beginning at result. More... | |
template<typename ForwardIterator , typename Comparator > | |
ForwardIterator | is_sorted_until_cmp (ForwardIterator first, ForwardIterator last, Comparator cmp) |
Checks if a range is sorted using a three-way Comparator (with memcmp() semantics). More... | |
template<typename ForwardIterator , typename Comparator > | |
bool | is_sorted_cmp (ForwardIterator first, ForwardIterator last, Comparator cmp) |
Checks if a range is sorted using a three-way Comparator (with memcmp() semantics). More... | |
template<typename RandomAccessIterator1 , typename RandomAccessIterator2 , typename OutputIterator , typename DiffType , typename Comparator > | |
OutputIterator | merge_advance_usual (RandomAccessIterator1 &begin1, RandomAccessIterator1 end1, RandomAccessIterator2 &begin2, RandomAccessIterator2 end2, OutputIterator target, DiffType max_size, Comparator comp) |
Merge routine being able to merge only the max_size smallest elements. More... | |
template<typename RandomAccessIterator1 , typename RandomAccessIterator2 , typename OutputIterator , typename DiffType , typename Comparator > | |
OutputIterator | merge_advance_movc (RandomAccessIterator1 &begin1, RandomAccessIterator1 end1, RandomAccessIterator2 &begin2, RandomAccessIterator2 end2, OutputIterator target, DiffType max_size, Comparator comp) |
Merge routine being able to merge only the max_size smallest elements. More... | |
template<typename RandomAccessIterator1 , typename RandomAccessIterator2 , typename OutputIterator , typename DiffType , typename Comparator > | |
OutputIterator | merge_advance (RandomAccessIterator1 &begin1, RandomAccessIterator1 end1, RandomAccessIterator2 &begin2, RandomAccessIterator2 end2, OutputIterator target, DiffType max_size, Comparator comp) |
Merge routine being able to merge only the max_size smallest elements. More... | |
template<typename InputIterator1 , typename InputIterator2 , typename OutputIterator , typename Comparator , typename Combine = std::plus< typename std::iterator_traits<InputIterator1>::value_type>> | |
OutputIterator | merge_combine (InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Comparator cmp=Comparator(), Combine combine=Combine()) |
Merge two sorted ranges and add all items comparing equal. More... | |
template<typename RanSeqs , typename RankType , typename RankIterator , typename Comparator = std::less< typename std::iterator_traits< typename std::iterator_traits<RanSeqs> ::value_type::first_type>::value_type>> | |
void | multisequence_partition (const RanSeqs &begin_seqs, const RanSeqs &end_seqs, const RankType &rank, RankIterator begin_offsets, Comparator comp=Comparator()) |
Splits several sorted sequences at a certain global rank, resulting in a splitting point for each sequence. More... | |
template<typename ValueType , typename RanSeqs , typename RankType , typename Comparator = std::less<ValueType>> | |
ValueType | multisequence_selection (const RanSeqs &begin_seqs, const RanSeqs &end_seqs, const RankType &rank, RankType &offset, Comparator comp=Comparator()) |
Selects the element at a certain global rank from several sorted sequences. More... | |
template<bool Stable, bool Sentinels, typename RandomAccessIteratorIterator , typename RandomAccessIterator3 , typename Comparator = std::less< typename std::iterator_traits< typename std::iterator_traits<RandomAccessIteratorIterator> ::value_type::first_type>::value_type>> | |
RandomAccessIterator3 | multiway_merge_base (RandomAccessIteratorIterator seqs_begin, RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target, typename std::iterator_traits< typename std::iterator_traits< RandomAccessIteratorIterator >::value_type::first_type >::difference_type size, Comparator comp=Comparator(), MultiwayMergeAlgorithm mwma=MWMA_ALGORITHM_DEFAULT) |
Sequential multi-way merging switch. More... | |
template<typename RandomAccessIteratorIterator , typename RandomAccessIterator3 , typename Comparator = std::less< typename std::iterator_traits< typename std::iterator_traits<RandomAccessIteratorIterator> ::value_type::first_type>::value_type>> | |
RandomAccessIterator3 | multiway_merge (RandomAccessIteratorIterator seqs_begin, RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target, typename std::iterator_traits< typename std::iterator_traits< RandomAccessIteratorIterator >::value_type::first_type >::difference_type size, Comparator comp=Comparator(), MultiwayMergeAlgorithm mwma=MWMA_ALGORITHM_DEFAULT) |
Sequential multi-way merge. More... | |
template<typename RandomAccessIteratorIterator , typename RandomAccessIterator3 , typename Comparator = std::less< typename std::iterator_traits< typename std::iterator_traits<RandomAccessIteratorIterator> ::value_type::first_type>::value_type>> | |
RandomAccessIterator3 | stable_multiway_merge (RandomAccessIteratorIterator seqs_begin, RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target, typename std::iterator_traits< typename std::iterator_traits< RandomAccessIteratorIterator >::value_type::first_type >::difference_type size, Comparator comp=Comparator(), MultiwayMergeAlgorithm mwma=MWMA_ALGORITHM_DEFAULT) |
Stable sequential multi-way merge. More... | |
template<typename RandomAccessIteratorIterator , typename RandomAccessIterator3 , typename Comparator = std::less< typename std::iterator_traits< typename std::iterator_traits<RandomAccessIteratorIterator> ::value_type::first_type>::value_type>> | |
RandomAccessIterator3 | multiway_merge_sentinels (RandomAccessIteratorIterator seqs_begin, RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target, typename std::iterator_traits< typename std::iterator_traits< RandomAccessIteratorIterator >::value_type::first_type >::difference_type size, Comparator comp=Comparator(), MultiwayMergeAlgorithm mwma=MWMA_ALGORITHM_DEFAULT) |
Sequential multi-way merge with sentinels in sequences. More... | |
template<typename RandomAccessIteratorIterator , typename RandomAccessIterator3 , typename Comparator = std::less< typename std::iterator_traits< typename std::iterator_traits<RandomAccessIteratorIterator> ::value_type::first_type>::value_type>> | |
RandomAccessIterator3 | stable_multiway_merge_sentinels (RandomAccessIteratorIterator seqs_begin, RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target, typename std::iterator_traits< typename std::iterator_traits< RandomAccessIteratorIterator >::value_type::first_type >::difference_type size, Comparator comp=Comparator(), MultiwayMergeAlgorithm mwma=MWMA_ALGORITHM_DEFAULT) |
Stable sequential multi-way merge with sentinels in sequences. More... | |
template<bool Stable, typename RandomAccessIteratorIterator , typename Comparator > | |
void | multiway_merge_sampling_splitting (const RandomAccessIteratorIterator &seqs_begin, const RandomAccessIteratorIterator &seqs_end, typename std::iterator_traits< typename std::iterator_traits< RandomAccessIteratorIterator >::value_type::first_type >::difference_type size, typename std::iterator_traits< typename std::iterator_traits< RandomAccessIteratorIterator >::value_type::first_type >::difference_type total_size, Comparator comp, std::vector< typename std::iterator_traits< RandomAccessIteratorIterator >::value_type > *chunks, const size_t num_threads, const size_t merge_oversampling) |
Splitting method for parallel multi-way merge routine: use sampling and binary search for in-exact splitting. More... | |
template<bool Stable, typename RandomAccessIteratorIterator , typename Comparator > | |
void | multiway_merge_exact_splitting (const RandomAccessIteratorIterator &seqs_begin, const RandomAccessIteratorIterator &seqs_end, typename std::iterator_traits< typename std::iterator_traits< RandomAccessIteratorIterator >::value_type::first_type >::difference_type size, typename std::iterator_traits< typename std::iterator_traits< RandomAccessIteratorIterator >::value_type::first_type >::difference_type total_size, Comparator comp, std::vector< typename std::iterator_traits< RandomAccessIteratorIterator >::value_type > *chunks, const size_t num_threads) |
Splitting method for parallel multi-way merge routine: use multisequence selection for exact splitting. More... | |
template<bool Stable, typename RandomAccessIteratorIterator , typename RandomAccessIterator3 , typename Comparator = std::less< typename std::iterator_traits< typename std::iterator_traits<RandomAccessIteratorIterator> ::value_type::first_type>::value_type>> | |
RandomAccessIterator3 | parallel_multiway_merge_base (RandomAccessIteratorIterator seqs_begin, RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target, const typename std::iterator_traits< typename std::iterator_traits< RandomAccessIteratorIterator >::value_type::first_type >::difference_type size, Comparator comp=Comparator(), MultiwayMergeAlgorithm mwma=MWMA_ALGORITHM_DEFAULT, MultiwayMergeSplittingAlgorithm mwmsa=MWMSA_DEFAULT, size_t num_threads=std::thread::hardware_concurrency()) |
Parallel multi-way merge routine. More... | |
template<typename RandomAccessIteratorIterator , typename RandomAccessIterator3 , typename Comparator = std::less< typename std::iterator_traits< typename std::iterator_traits<RandomAccessIteratorIterator> ::value_type::first_type>::value_type>> | |
RandomAccessIterator3 | parallel_multiway_merge (RandomAccessIteratorIterator seqs_begin, RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target, const typename std::iterator_traits< typename std::iterator_traits< RandomAccessIteratorIterator >::value_type::first_type >::difference_type size, Comparator comp=Comparator(), MultiwayMergeAlgorithm mwma=MWMA_ALGORITHM_DEFAULT, MultiwayMergeSplittingAlgorithm mwmsa=MWMSA_DEFAULT, size_t num_threads=std::thread::hardware_concurrency()) |
Parallel multi-way merge routine. More... | |
template<typename RandomAccessIteratorIterator , typename RandomAccessIterator3 , typename Comparator = std::less< typename std::iterator_traits< typename std::iterator_traits<RandomAccessIteratorIterator> ::value_type::first_type>::value_type>> | |
RandomAccessIterator3 | stable_parallel_multiway_merge (RandomAccessIteratorIterator seqs_begin, RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target, const typename std::iterator_traits< typename std::iterator_traits< RandomAccessIteratorIterator >::value_type::first_type >::difference_type size, Comparator comp=Comparator(), MultiwayMergeAlgorithm mwma=MWMA_ALGORITHM_DEFAULT, MultiwayMergeSplittingAlgorithm mwmsa=MWMSA_DEFAULT, size_t num_threads=std::thread::hardware_concurrency()) |
Stable parallel multi-way merge routine. More... | |
template<typename RandomAccessIteratorIterator , typename RandomAccessIterator3 , typename Comparator = std::less< typename std::iterator_traits< typename std::iterator_traits<RandomAccessIteratorIterator> ::value_type::first_type>::value_type>> | |
RandomAccessIterator3 | parallel_multiway_merge_sentinels (RandomAccessIteratorIterator seqs_begin, RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target, const typename std::iterator_traits< typename std::iterator_traits< RandomAccessIteratorIterator >::value_type::first_type >::difference_type size, Comparator comp=Comparator(), MultiwayMergeAlgorithm mwma=MWMA_ALGORITHM_DEFAULT, MultiwayMergeSplittingAlgorithm mwmsa=MWMSA_DEFAULT, size_t num_threads=std::thread::hardware_concurrency()) |
Parallel multi-way merge routine with sentinels. More... | |
template<typename RandomAccessIteratorIterator , typename RandomAccessIterator3 , typename Comparator = std::less< typename std::iterator_traits< typename std::iterator_traits<RandomAccessIteratorIterator> ::value_type::first_type>::value_type>> | |
RandomAccessIterator3 | stable_parallel_multiway_merge_sentinels (RandomAccessIteratorIterator seqs_begin, RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target, const typename std::iterator_traits< typename std::iterator_traits< RandomAccessIteratorIterator >::value_type::first_type >::difference_type size, Comparator comp=Comparator(), MultiwayMergeAlgorithm mwma=MWMA_ALGORITHM_DEFAULT, MultiwayMergeSplittingAlgorithm mwmsa=MWMSA_DEFAULT, size_t num_threads=std::thread::hardware_concurrency()) |
Stable parallel multi-way merge routine with sentinels. More... | |
template<typename RandomAccessIt , typename RandomBits > | |
void | random_bipartition_shuffle (RandomAccessIt begin, RandomAccessIt end, size_t size_left_partition, RandomBits &urng) |
Similar to std::shuffle, but only generates a random bi-partition. More... | |
template<typename DataType , unsigned Radix = 8, typename KeyExtract = void> | |
auto | make_radix_heap (KeyExtract &&key_extract) -> RadixHeap< DataType, KeyExtract, decltype(key_extract(std::declval< DataType >())), Radix > |
Helper to easily derive type of RadixHeap for a pre-C++17 compiler. More... | |
template<typename Tree , typename Compare > | |
bool | splay_check (const Tree *t, const Tree *&out_tmin, const Tree *&out_tmax, const Compare &cmp) |
check the tree order, recursively calculate min and max elements More... | |
template<typename Tree , typename Compare > | |
bool | splay_check (const Tree *t, const Compare &cmp) |
check the tree order More... | |
template<typename Key , typename Tree , typename Compare > | |
Tree * | splay (const Key &k, Tree *t, const Compare &cmp) |
Splay using the key i (which may or may not be in the tree.) The starting root is t, and the tree used is defined by rat size fields are maintained. More... | |
template<typename Tree , typename Compare > | |
Tree * | splay_insert (Tree *nn, Tree *t, const Compare &cmp) |
Insert key i into the tree t, if it is not already there. More... | |
template<typename Key , typename Tree , typename Compare > | |
Tree * | splay_erase (const Key &k, Tree *&t, const Compare &cmp) |
Erases i from the tree if it's there. More... | |
template<typename Tree , typename Functor > | |
void | splay_traverse_preorder (const Functor &f, const Tree *t) |
traverse the tree in preorder (left, node, right) More... | |
template<typename Tree , typename Functor > | |
void | splay_traverse_postorder (const Functor &f, Tree *t) |
traverse the tree in postorder (left, right, node) More... | |
static bool | operator== (const StringView &a, const std::string &b) noexcept |
equality operator to compare a StringView with a std::string More... | |
static bool | operator== (const std::string &a, const StringView &b) noexcept |
equality operator to compare a StringView with a std::string More... | |
static bool | operator!= (const StringView &a, const std::string &b) noexcept |
inequality operator to compare a StringView with a std::string More... | |
static bool | operator!= (const std::string &a, const StringView &b) noexcept |
inequality operator to compare a StringView with a std::string More... | |
static bool | operator< (const StringView &a, const std::string &b) noexcept |
less operator to compare a StringView with a std::string lexicographically More... | |
static bool | operator< (const std::string &a, const StringView &b) noexcept |
less operator to compare a StringView with a std::string lexicographically More... | |
static bool | operator> (const StringView &x, const std::string &y) noexcept |
static bool | operator> (const std::string &x, const StringView &y) noexcept |
static bool | operator<= (const StringView &x, const std::string &y) noexcept |
static bool | operator<= (const std::string &x, const StringView &y) noexcept |
static bool | operator>= (const StringView &x, const std::string &y) noexcept |
static bool | operator>= (const std::string &x, const StringView &y) noexcept |
static bool | operator== (const StringView &x, const char *y) noexcept |
equality operator to compare a StringView with a const char* More... | |
static bool | operator== (const char *x, const StringView &y) noexcept |
equality operator to compare a StringView with a const char* More... | |
static bool | operator!= (const StringView &x, const char *y) noexcept |
inequality operator to compare a StringView with a const char* More... | |
static bool | operator!= (const char *x, const StringView &y) noexcept |
inequality operator to compare a StringView with a const char* More... | |
static bool | operator< (const StringView &x, const char *y) noexcept |
static bool | operator< (const char *x, const StringView &y) noexcept |
static bool | operator> (const StringView &x, const char *y) noexcept |
static bool | operator> (const char *x, const StringView &y) noexcept |
static bool | operator<= (const StringView &x, const char *y) noexcept |
static bool | operator<= (const char *x, const StringView &y) noexcept |
static bool | operator>= (const StringView &x, const char *y) noexcept |
static bool | operator>= (const char *x, const StringView &y) noexcept |
template<typename Type , typename... Args> | |
CountingPtr< Type > | make_counting (Args &&...args) |
method analogous to std::make_shared and std::make_unique. More... | |
template<typename A , typename D > | |
void | swap (CountingPtr< A, D > &a1, CountingPtr< A, D > &a2) noexcept |
swap enclosed object with another counting pointer (no reference counts need change) More... | |
template<typename A , typename D > | |
std::ostream & | operator<< (std::ostream &os, const CountingPtr< A, D > &c) |
print pointer More... | |
template<class C , typename R , typename... A> | |
Delegate< R(A...)> | make_delegate (C *const object_ptr, R(C::*const method_ptr)(A...)) noexcept |
constructor for wrapping a class::method with object pointer. More... | |
template<class C , typename R , typename... A> | |
Delegate< R(A...)> | make_delegate (C &object_ptr, R(C::*const method_ptr)(A...)) noexcept |
constructor for wrapping a class::method with object reference. More... | |
template<class C , typename R , typename... A> | |
Delegate< R(A...)> | make_delegate (C const &object_ptr, R(C::*const method_ptr)(A...) const) noexcept |
constructor for wrapping a const class::method with object reference. More... | |
void | die_with_message (const std::string &msg) |
die with message - either throw an exception or die via std::terminate() More... | |
void | die_with_message (const char *msg, const char *file, size_t line) |
die with message - either throw an exception or die via std::terminate() More... | |
void | die_with_message (const std::string &msg, const char *file, size_t line) |
die with message - either throw an exception or die via std::terminate() More... | |
bool | set_die_with_exception (bool b) |
Switch between dying via std::terminate() and throwing an exception. More... | |
template<typename TypeA , typename TypeB > | |
bool | die_equal_compare (TypeA a, TypeB b) |
helper method to compare two values in die_unequal() More... | |
template<> | |
bool | die_equal_compare (const char *a, const char *b) |
template<> | |
bool | die_equal_compare (float a, float b) |
template<> | |
bool | die_equal_compare (double a, double b) |
template<typename Type > | |
Type | die_unequal_eps_abs (const Type &t) |
simple replacement for std::abs More... | |
template<typename TypeA , typename TypeB > | |
bool | die_equal_eps_compare (TypeA x, TypeB y, double eps) |
helper method to compare two values in die_unequal_eps() More... | |
std::string | md5_hex (const void *data, uint32_t size) |
process data and return 16 byte (128 bit) digest hex encoded More... | |
std::string | md5_hex (const std::string &str) |
process data and return 16 byte (128 bit) digest hex encoded More... | |
std::string | md5_hex_uc (const void *data, uint32_t size) |
process data and return 16 byte (128 bit) digest upper-case hex encoded More... | |
std::string | md5_hex_uc (const std::string &str) |
process data and return 16 byte (128 bit) digest upper-case hex encoded More... | |
std::string | sha1_hex (const void *data, uint32_t size) |
process data and return 20 byte (160 bit) digest hex encoded More... | |
std::string | sha1_hex (const std::string &str) |
process data and return 20 byte (160 bit) digest hex encoded More... | |
std::string | sha1_hex_uc (const void *data, uint32_t size) |
process data and return 20 byte (160 bit) digest upper-case hex encoded More... | |
std::string | sha1_hex_uc (const std::string &str) |
process data and return 20 byte (160 bit) digest upper-case hex encoded More... | |
std::string | sha256_hex (const void *data, uint32_t size) |
process data and return 32 byte (256 bit) digest hex encoded More... | |
std::string | sha256_hex (const std::string &str) |
process data and return 32 byte (256 bit) digest hex encoded More... | |
std::string | sha256_hex_uc (const void *data, uint32_t size) |
process data and return 32 byte (256 bit) digest upper-case hex encoded More... | |
std::string | sha256_hex_uc (const std::string &str) |
process data and return 32 byte (256 bit) digest upper-case hex encoded More... | |
std::string | sha512_hex (const void *data, uint32_t size) |
process data and return 64 byte (512 bit) digest hex encoded More... | |
std::string | sha512_hex (const std::string &str) |
process data and return 64 byte (512 bit) digest hex encoded More... | |
std::string | sha512_hex_uc (const void *data, uint32_t size) |
process data and return 64 byte (512 bit) digest upper-case hex encoded More... | |
std::string | sha512_hex_uc (const std::string &str) |
process data and return 64 byte (512 bit) digest upper-case hex encoded More... | |
LoggerOutputHook * | set_logger_output_hook (LoggerOutputHook *hook) |
set new LoggerOutputHook instance to receive global log lines. More... | |
LoggerOutputHook * | set_logger_to_stderr () |
install default logger to cerr / stderr instead of stdout. More... | |
LoggerPrefixHook * | set_logger_prefix_hook (LoggerPrefixHook *hook) |
Set new LoggerPrefixHook instance to prefix global log lines. More... | |
template<typename Type > | |
struct | has_ostream_operator<Type, decltype(std::declval< std::ostream & > ()<< std |
template<typename Type > | |
enable_if<!has_ostream_operator<Type >::value, const char * >::type | wrap_unprintable (Type, const char *instead="<unprintable>") |
SFINAE magic to return "<unprintable>" instead if the value HAS NO ostream operator << available. More... | |
template<typename Type > | |
enable_if< has_ostream_operator<Type >::value, Type >::type | wrap_unprintable (Type value, const char *=nullptr) |
SFINAE magic to return the value if the value HAS a ostream operator << available. More... | |
template<typename Type > | |
enable_if<!has_ostream_operator<Type >::value, const char * >::type | wrap_unp (Type, const char *instead="<unprintable>") |
SFINAE magic to return "<unprintable>" instead if the value HAS NO ostream operator << available. More... | |
template<typename Type > | |
enable_if< has_ostream_operator<Type >::value, Type >::type | wrap_unp (Type value, const char *=nullptr) |
SFINAE magic to return the value if the value HAS a ostream operator << available. More... | |
template<typename T > | |
T | abs_diff (const T &a, const T &b) |
absolute difference, which also works for unsigned types More... | |
static uint16_t | bswap16_generic (const uint16_t &x) |
bswap16 - generic implementation More... | |
static uint16_t | bswap16 (const uint16_t &v) |
bswap16 - generic More... | |
static uint32_t | bswap32_generic (const uint32_t &x) |
bswap32 - generic implementation More... | |
static uint32_t | bswap32 (const uint32_t &v) |
bswap32 - generic More... | |
static uint64_t | bswap64_generic (const uint64_t &x) |
bswap64 - generic implementation More... | |
static uint64_t | bswap64 (const uint64_t &v) |
bswap64 - generic More... | |
template<typename Integral > | |
static unsigned | clz_template (Integral x) |
clz (count leading zeros) - generic implementation More... | |
template<typename Integral > | |
unsigned | clz (Integral x) |
template<> | |
unsigned | clz< int > (int i) |
clz (count leading zeros) More... | |
template<> | |
unsigned | clz< unsigned > (unsigned i) |
clz (count leading zeros) More... | |
template<> | |
unsigned | clz< long > (long i) |
clz (count leading zeros) More... | |
template<> | |
unsigned | clz< unsigned long > (unsigned long i) |
clz (count leading zeros) More... | |
template<> | |
unsigned | clz< long long > (long long i) |
clz (count leading zeros) More... | |
template<> | |
unsigned | clz< unsigned long long > (unsigned long long i) |
clz (count leading zeros) More... | |
template<typename Integral > | |
static unsigned | ctz_template (Integral x) |
ctz (count trailing zeros) - generic implementation More... | |
template<typename Integral > | |
unsigned | ctz (Integral x) |
template<> | |
unsigned | ctz< int > (int i) |
ctz (count trailing zeros) More... | |
template<> | |
unsigned | ctz< unsigned > (unsigned i) |
ctz (count trailing zeros) More... | |
template<> | |
unsigned | ctz< long > (long i) |
ctz (count trailing zeros) More... | |
template<> | |
unsigned | ctz< unsigned long > (unsigned long i) |
ctz (count trailing zeros) More... | |
template<> | |
unsigned | ctz< long long > (long long i) |
ctz (count trailing zeros) More... | |
template<> | |
unsigned | ctz< unsigned long long > (unsigned long long i) |
ctz (count trailing zeros) More... | |
template<typename IntegralN , typename IntegralK > | |
static constexpr auto | div_ceil (const IntegralN &n, const IntegralK &k) -> decltype(n+k) |
calculate n div k with rounding up, for n and k positive! More... | |
template<typename Integral > | |
static unsigned | ffs_template (Integral x) |
ffs (find first set bit) - generic implementation More... | |
static unsigned | ffs (int i) |
find first set bit in integer, or zero if none are set. More... | |
static unsigned | ffs (unsigned int i) |
find first set bit in integer, or zero if none are set. More... | |
static unsigned | ffs (long i) |
find first set bit in integer, or zero if none are set. More... | |
static unsigned | ffs (unsigned long i) |
find first set bit in integer, or zero if none are set. More... | |
static unsigned | ffs (long long i) |
find first set bit in integer, or zero if none are set. More... | |
static unsigned | ffs (unsigned long long i) |
find first set bit in integer, or zero if none are set. More... | |
template<typename IntegerType > | |
static TLX_ADVANCED_CONSTEXPR unsigned | integer_log2_floor_template (IntegerType i) |
calculate the log2 floor of an integer type More... | |
static TLX_ADVANCED_CONSTEXPR unsigned | integer_log2_floor (int i) |
calculate the log2 floor of an integer type More... | |
static TLX_ADVANCED_CONSTEXPR unsigned | integer_log2_floor (unsigned int i) |
calculate the log2 floor of an integer type More... | |
static TLX_ADVANCED_CONSTEXPR unsigned | integer_log2_floor (long i) |
calculate the log2 floor of an integer type More... | |
static TLX_ADVANCED_CONSTEXPR unsigned | integer_log2_floor (unsigned long i) |
calculate the log2 floor of an integer type More... | |
static TLX_ADVANCED_CONSTEXPR unsigned | integer_log2_floor (long long i) |
calculate the log2 floor of an integer type More... | |
static TLX_ADVANCED_CONSTEXPR unsigned | integer_log2_floor (unsigned long long i) |
calculate the log2 floor of an integer type More... | |
static TLX_ADVANCED_CONSTEXPR unsigned | integer_log2_ceil (int i) |
calculate the log2 floor of an integer type More... | |
static TLX_ADVANCED_CONSTEXPR unsigned | integer_log2_ceil (unsigned int i) |
calculate the log2 floor of an integer type More... | |
static TLX_ADVANCED_CONSTEXPR unsigned | integer_log2_ceil (long i) |
calculate the log2 floor of an integer type More... | |
static TLX_ADVANCED_CONSTEXPR unsigned | integer_log2_ceil (unsigned long i) |
calculate the log2 floor of an integer type More... | |
static TLX_ADVANCED_CONSTEXPR unsigned | integer_log2_ceil (long long i) |
calculate the log2 floor of an integer type More... | |
static TLX_ADVANCED_CONSTEXPR unsigned | integer_log2_ceil (unsigned long long i) |
calculate the log2 floor of an integer type More... | |
template<typename Integral > | |
static bool | is_power_of_two_template (Integral i) |
static bool | is_power_of_two (int i) |
does what it says: true if i is a power of two More... | |
static bool | is_power_of_two (unsigned int i) |
does what it says: true if i is a power of two More... | |
static bool | is_power_of_two (long i) |
does what it says: true if i is a power of two More... | |
static bool | is_power_of_two (unsigned long i) |
does what it says: true if i is a power of two More... | |
static bool | is_power_of_two (long long i) |
does what it says: true if i is a power of two More... | |
static bool | is_power_of_two (unsigned long long i) |
does what it says: true if i is a power of two More... | |
static unsigned | popcount_generic8 (uint8_t x) |
popcount (count one bits) - generic SWAR implementation More... | |
static unsigned | popcount_generic16 (uint16_t x) |
popcount (count one bits) - generic SWAR implementation More... | |
static unsigned | popcount_generic32 (uint32_t x) |
popcount (count one bits) - generic SWAR implementation from https://stackoverflow.com/questions/109023 More... | |
static unsigned | popcount_generic64 (uint64_t x) |
popcount (count one bits) - generic SWAR implementation More... | |
template<typename Integral > | |
unsigned | popcount (Integral i) |
popcount (count one bits) More... | |
static size_t | popcount (const void *data, size_t size) |
template<unsigned D, typename T > | |
static constexpr T | power_to_the (T x) |
power_to_the<D>(x) More... | |
static uint32_t | rol32_generic (const uint32_t &x, int i) |
rol32 - generic implementation More... | |
static uint32_t | rol32 (const uint32_t &x, int i) |
rol32 - generic More... | |
static uint64_t | rol64_generic (const uint64_t &x, int i) |
rol64 - generic implementation More... | |
static uint64_t | rol64 (const uint64_t &x, int i) |
rol64 - generic More... | |
static uint32_t | ror32_generic (const uint32_t &x, int i) |
ror32 - generic implementation More... | |
static uint32_t | ror32 (const uint32_t &x, int i) |
ror32 - generic More... | |
static uint64_t | ror64_generic (const uint64_t &x, int i) |
ror64 - generic implementation More... | |
static uint64_t | ror64 (const uint64_t &x, int i) |
ror64 - generic More... | |
template<typename Integral > | |
static Integral | round_up_to_power_of_two_template (Integral n) |
static int | round_up_to_power_of_two (int i) |
does what it says: round up to next power of two More... | |
static unsigned int | round_up_to_power_of_two (unsigned int i) |
does what it says: round up to next power of two More... | |
static long | round_up_to_power_of_two (long i) |
does what it says: round up to next power of two More... | |
static unsigned long | round_up_to_power_of_two (unsigned long i) |
does what it says: round up to next power of two More... | |
static long long | round_up_to_power_of_two (long long i) |
does what it says: round up to next power of two More... | |
static unsigned long long | round_up_to_power_of_two (unsigned long long i) |
does what it says: round up to next power of two More... | |
static int | round_down_to_power_of_two (int i) |
does what it says: round down to next power of two More... | |
static unsigned int | round_down_to_power_of_two (unsigned int i) |
does what it says: round down to next power of two More... | |
static long | round_down_to_power_of_two (long i) |
does what it says: round down to next power of two More... | |
static unsigned long | round_down_to_power_of_two (unsigned long i) |
does what it says: round down to next power of two More... | |
static long long | round_down_to_power_of_two (long long i) |
does what it says: round down to next power of two More... | |
static unsigned long long | round_down_to_power_of_two (unsigned long long i) |
does what it says: round down to next power of two More... | |
template<typename IntegralN , typename IntegralK > | |
static constexpr auto | round_up (const IntegralN &n, const IntegralK &k) -> decltype(n+k) |
round n up to the next multiple of k, for n and k positive! More... | |
template<typename T > | |
int | sgn (const T &val) |
sgn() - signum More... | |
template<typename Functor , typename Tuple > | |
auto | apply_tuple (Functor &&f, Tuple &&t) |
Call the functor f with the contents of t as arguments. More... | |
template<size_t Size, typename Functor > | |
void | call_for_range (Functor &&f) |
Call a generic functor (like a generic lambda) for the integers [0,Size). More... | |
template<size_t Begin, size_t End, typename Functor > | |
void | call_for_range (Functor &&f) |
Call a generic functor (like a generic lambda) for the integers [Begin,End). More... | |
template<typename Functor , typename... Args> | |
void | call_foreach (Functor &&f, Args &&...args) |
Call a generic functor (like a generic lambda) for each variadic template argument. More... | |
template<typename Functor , typename Tuple > | |
void | call_foreach_tuple (Functor &&f, Tuple &&t) |
Call a generic functor (like a generic lambda) to each components of a tuple together with its zero-based index. More... | |
template<typename Functor , typename Tuple > | |
void | call_foreach_tuple_with_index (Functor &&f, Tuple &&t) |
Call a generic functor (like a generic lambda) to each components of a tuple together with its zero-based index. More... | |
template<typename Functor , typename... Args> | |
void | call_foreach_with_index (Functor &&f, Args &&...args) |
Call a generic functor (like a generic lambda) for each variadic template argument together with its zero-based index. More... | |
template<typename Reduce , typename Initial , typename... Args> | |
auto | fold_left (Reduce &&r, Initial &&init, Args &&...args) |
Implements fold_left() – ((a * b) * c) – with a binary Reduce operation and initial value. More... | |
template<typename Reduce , typename Initial , typename Tuple > | |
auto | fold_left_tuple (Reduce &&r, Initial &&init, Tuple &&t) |
Implements fold_left() – ((a * b) * c) – with a binary Reduce operation and initial value on a tuple. More... | |
template<typename Reduce , typename Initial , typename... Args> | |
auto | fold_right (Reduce &&r, Initial &&init, Args &&...args) |
Implements fold_right() – (a * (b * c)) – with a binary Reduce operation and initial value. More... | |
template<typename Reduce , typename Initial , typename Tuple > | |
auto | fold_right_tuple (Reduce &&r, Initial &&init, Tuple &&t) |
Implements fold_right() – (a * (b * c)) – with a binary Reduce operation and initial value on a tuple. More... | |
template<typename Functor > | |
static auto | make_function_chain (const Functor &functor) |
Functor chain maker. Can also be called with a lambda function. More... | |
static auto | make_function_chain () |
Construct and empty function chain. More... | |
template<typename Input , typename Functor > | |
static auto | make_function_stack (const Functor &functor) |
Function-style construction of a FunctionStack. More... | |
template<typename... Types> | |
void | vexpand (Types &&...) |
template<size_t Size, typename Functor > | |
auto | vmap_for_range (Functor &&f) |
Vmap a generic functor (like a generic lambda) for the integers [0,Size). More... | |
template<size_t Begin, size_t End, typename Functor > | |
auto | vmap_for_range (Functor &&f) |
Vmap a generic functor (like a generic lambda) for the integers [Begin,End). More... | |
template<typename Functor , typename... Args> | |
auto | vmap_foreach (Functor &&f, Args &&...args) |
Call a generic functor (like a generic lambda) for each variadic template argument. More... | |
template<typename Functor , typename Tuple > | |
auto | vmap_foreach_tuple (Functor &&f, Tuple &&t) |
Call a generic functor (like a generic lambda) for each variadic template argument and collect the result in a std::tuple<>. More... | |
template<typename Functor , typename Tuple > | |
auto | vmap_foreach_tuple_with_index (Functor &&f, Tuple &&t) |
Call a generic functor (like a generic lambda) for each variadic template argument and collect the result in a std::tuple<>. More... | |
template<typename Functor , typename... Args> | |
auto | vmap_foreach_with_index (Functor &&f, Args &&...args) |
Call a generic functor (like a generic lambda) for each variadic template argument together with its zero-based index. More... | |
int | setenv (const char *name, const char *value, int overwrite) |
setenv - change or add an environment variable. More... | |
static uint64_t | siphash_plain (const uint8_t key[16], const uint8_t *m, size_t len) |
static uint64_t | siphash (const uint8_t key[16], const uint8_t *msg, size_t size) |
static uint64_t | siphash (const uint8_t *msg, size_t size) |
static uint64_t | siphash (const char *msg, size_t size) |
static uint64_t | siphash (const std::string &str) |
template<typename Type > | |
static uint64_t | siphash (const Type &value) |
std::istream & | appendline (std::istream &is, std::string &str, char delim= '\n') |
like std::getline(istream, string, delim) except that it appends to the string, possibly reusing buffer capacity. More... | |
int | compare_icase (const char *a, const char *b) |
returns +1/0/-1 like strcmp(a, b) but without regard for letter case More... | |
int | compare_icase (const char *a, const std::string &b) |
returns +1/0/-1 like strcmp(a, b) but without regard for letter case More... | |
int | compare_icase (const std::string &a, const char *b) |
returns +1/0/-1 like strcmp(a, b) but without regard for letter case More... | |
int | compare_icase (const std::string &a, const std::string &b) |
returns +1/0/-1 like strcmp(a, b) but without regard for letter case More... | |
bool | contains (const std::string &str, const std::string &pattern) |
Tests of string contains pattern. More... | |
bool | contains (const std::string &str, const char *pattern) |
Tests of string contains pattern. More... | |
bool | contains (const std::string &str, const char ch) |
Tests of string contains character. More... | |
static bool | is_white (char c) |
bool | contains_word (const std::string &str, const char *word) |
Search the given string for a whitespace-delimited word. More... | |
bool | contains_word (const std::string &str, const std::string &word) |
Search the given string for a whitespace-delimited word. More... | |
bool | ends_with (const char *str, const char *match) |
Checks if the given match string is located at the end of this string. More... | |
bool | ends_with (const char *str, const std::string &match) |
Checks if the given match string is located at the end of this string. More... | |
bool | ends_with (const std::string &str, const char *match) |
Checks if the given match string is located at the end of this string. More... | |
bool | ends_with (const std::string &str, const std::string &match) |
Checks if the given match string is located at the end of this string. More... | |
bool | ends_with_icase (const char *str, const char *match) |
bool | ends_with_icase (const char *str, const std::string &match) |
bool | ends_with_icase (const std::string &str, const char *match) |
Checks if the given match string is located at the end of this string. More... | |
bool | ends_with_icase (const std::string &str, const std::string &match) |
Checks if the given match string is located at the end of this string. More... | |
bool | equal_icase (const char *a, const char *b) |
returns true if a == b without regard for letter case More... | |
bool | equal_icase (const char *a, const std::string &b) |
returns true if a == b without regard for letter case More... | |
bool | equal_icase (const std::string &a, const char *b) |
returns true if a == b without regard for letter case More... | |
bool | equal_icase (const std::string &a, const std::string &b) |
returns true if a == b without regard for letter case More... | |
std::string & | erase_all (std::string *str, char drop= ' ') |
Remove all occurrences of the given character in-place. More... | |
std::string & | erase_all (std::string *str, const char *drop) |
Remove all occurrences of the given characters in-place. More... | |
std::string & | erase_all (std::string *str, const std::string &drop) |
Remove all occurrences of the given characters in-place. More... | |
std::string | erase_all (const std::string &str, char drop= ' ') |
Remove all occurrences of the given character, return copy of string. More... | |
std::string | erase_all (const std::string &str, const char *drop) |
Remove all occurrences of the given characters, return copy of string. More... | |
std::string | erase_all (const std::string &str, const std::string &drop) |
Remove all occurrences of the given characters, return copy of string. More... | |
std::string | escape_html (const std::string &str) |
Escape characters for inclusion in HTML documents: replaces the characters <, >, & and " with HTML entities. More... | |
std::string | escape_html (const char *str) |
Escape characters for inclusion in HTML documents: replaces the characters <, >, & and " with HTML entities. More... | |
std::string | escape_uri (const std::string &str) |
Escape a string into a URI-encoding. More... | |
std::string | escape_uri (const char *str) |
Escape a string into a URI-encoding. More... | |
std::string & | expand_environment_variables (std::string *s) |
Expand substrings $ABC_123 and ${ABC_123} into the corresponding environment variables. More... | |
std::string | expand_environment_variables (const std::string &s) |
Expand substrings $ABC_123 and ${ABC_123} into the corresponding environment variables. More... | |
std::string | expand_environment_variables (const char *s) |
Expand substrings $ABC_123 and ${ABC_123} into the corresponding environment variables. More... | |
template<typename Separator1 , typename Separator2 > | |
static std::string | extract_between_template (const std::string &str, const Separator1 &sep1, size_t sep1_size, const Separator2 &sep2) |
std::string | extract_between (const std::string &str, const char *sep1, const char *sep2) |
Search the string for given start and end separators and extract all characters between the both, if they are found. More... | |
std::string | extract_between (const std::string &str, const char *sep1, const std::string &sep2) |
Search the string for given start and end separators and extract all characters between the both, if they are found. More... | |
std::string | extract_between (const std::string &str, const std::string &sep1, const char *sep2) |
Search the string for given start and end separators and extract all characters between the both, if they are found. More... | |
std::string | extract_between (const std::string &str, const std::string &sep1, const std::string &sep2) |
Search the string for given start and end separators and extract all characters between the both, if they are found. More... | |
std::string | format_iec_units (uint64_t number, int precision=3) |
Format a byte size using IEC (Ki, Mi, Gi, Ti) suffixes (powers of two). More... | |
std::string | format_si_units (uint64_t number, int precision) |
Format number as something like 1 TB. More... | |
static uint32_t | hash_djb2 (const unsigned char *str) |
Simple, fast, but "insecure" string hash method by Dan Bernstein from http://www.cse.yorku.ca/~oz/hash.html. More... | |
static uint32_t | hash_djb2 (const char *str) |
Simple, fast, but "insecure" string hash method by Dan Bernstein from http://www.cse.yorku.ca/~oz/hash.html. More... | |
static uint32_t | hash_djb2 (const unsigned char *str, size_t size) |
Simple, fast, but "insecure" string hash method by Dan Bernstein from http://www.cse.yorku.ca/~oz/hash.html. More... | |
static uint32_t | hash_djb2 (const char *str, size_t size) |
Simple, fast, but "insecure" string hash method by Dan Bernstein from http://www.cse.yorku.ca/~oz/hash.html. More... | |
static uint32_t | hash_djb2 (const std::string &str) |
Simple, fast, but "insecure" string hash method by Dan Bernstein from http://www.cse.yorku.ca/~oz/hash.html. More... | |
static uint32_t | hash_sdbm (const unsigned char *str) |
Simple, fast, but "insecure" string hash method by sdbm database from http://www.cse.yorku.ca/~oz/hash.html. More... | |
static uint32_t | hash_sdbm (const char *str) |
Simple, fast, but "insecure" string hash method by sdbm database from http://www.cse.yorku.ca/~oz/hash.html. More... | |
static uint32_t | hash_sdbm (const unsigned char *str, size_t size) |
Simple, fast, but "insecure" string hash method by sdbm database from http://www.cse.yorku.ca/~oz/hash.html. More... | |
static uint32_t | hash_sdbm (const char *str, size_t size) |
Simple, fast, but "insecure" string hash method by sdbm database from http://www.cse.yorku.ca/~oz/hash.html. More... | |
static uint32_t | hash_sdbm (const std::string &str) |
Simple, fast, but "insecure" string hash method by sdbm database from http://www.cse.yorku.ca/~oz/hash.html. More... | |
size_t | index_of (const std::vector< std::string > &list, const char *str) |
Attempts to find str in the list and return the index. More... | |
size_t | index_of (const std::vector< std::string > &list, const std::string &str) |
Attempts to find str in the list and return the index. More... | |
size_t | index_of_icase (const std::vector< std::string > &list, const char *str) |
Attempts to find str in the list and return the index using case-insensitive comparisons. More... | |
size_t | index_of_icase (const std::vector< std::string > &list, const std::string &str) |
Attempts to find str in the list and return the index using case-insensitive comparisons. More... | |
bool | less_icase (const char *a, const char *b) |
returns true if a < b without regard for letter case More... | |
bool | less_icase (const char *a, const std::string &b) |
returns true if a < b without regard for letter case More... | |
bool | less_icase (const std::string &a, const char *b) |
returns true if a < b without regard for letter case More... | |
bool | less_icase (const std::string &a, const std::string &b) |
returns true if a < b without regard for letter case More... | |
template<typename Param > | |
static size_t | levenshtein_algorithm (const char *a, size_t a_size, const char *b, size_t b_size) |
Computes the Levenshtein string distance also called edit distance between two strings. More... | |
static size_t | levenshtein (const char *a, const char *b) |
Computes the Levenshtein string distance between two strings. More... | |
static size_t | levenshtein_icase (const char *a, const char *b) |
Computes the Levenshtein string distance between two strings. More... | |
static size_t | levenshtein (const std::string &a, const std::string &b) |
Computes the Levenshtein string distance between two strings. More... | |
static size_t | levenshtein_icase (const std::string &a, const std::string &b) |
Computes the Levenshtein string distance between two strings. More... | |
std::string | pad (const std::string &s, size_t len, char pad_char= ' ') |
Truncate or pad string to exactly len characters. More... | |
bool | parse_si_iec_units (const char *str, uint64_t *out_size, char default_unit=0) |
Parse a string like "343KB" or "44 GiB" into the corresponding size in bytes. More... | |
bool | parse_si_iec_units (const std::string &str, uint64_t *out_size, char default_unit=0) |
Parse a string like "343KB" or "44 GiB" into the corresponding size in bytes. More... | |
static void | parse_uri (const char *uri, tlx::string_view *path, tlx::string_view *query_string, tlx::string_view *fragment) |
Parse a URI like "/path1/path2?query=string&submit=submit#fragment" into the parts path, query_string, and fragment. More... | |
static void | parse_uri (const std::string &uri, tlx::string_view *path, tlx::string_view *query_string, tlx::string_view *fragment) |
Parse a URI like "/path1/path2?query=string&submit=submit#fragment" into the parts path, query_string, and fragment. More... | |
static std::string | parse_uri_form_data_decode (const char *str, const char *end=nullptr) |
Helper function to decode %20 and + in urlencoded form data like "query=string+with+spaces&submit=yes%21&". More... | |
static void | parse_uri_form_data (const char *query_string, std::vector< std::string > *key, std::vector< std::string > *value) |
Parse a urlencoded form data like "query=string+with+spaces&submit=yes%21&" into a list of keys and values. More... | |
static void | parse_uri_form_data (const std::string &query_string, std::vector< std::string > *key, std::vector< std::string > *value) |
Parse a urlencoded form data like "query=string+with+spaces&submit=yes%21&" into a list of keys and values. More... | |
static std::vector< std::string > & | split (std::vector< std::string > *into, const char *sep, size_t sep_size, const std::string &str, std::string::size_type limit) |
std::vector< std::string > | split_words (const std::string &str, std::string::size_type limit=std::string::npos) |
Split the given string by whitespaces into distinct words. More... | |
std::string | ssprintf (const char *fmt,...) TLX_ATTRIBUTE_FORMAT_PRINTF(1 |
Helper for return the result of a sprintf() call inside a std::string. More... | |
std::string | ssnprintf (size_t max_size, const char *fmt,...) TLX_ATTRIBUTE_FORMAT_PRINTF(2 |
Helper for return the result of a snprintf() call inside a std::string. More... | |
template<typename String = std::string> | |
String | ssprintf_generic (const char *fmt,...) TLX_ATTRIBUTE_FORMAT_PRINTF(1 |
Helper for return the result of a sprintf() call inside a string object. More... | |
template<typename String > | |
String String | ssprintf_generic (const char *fmt,...) |
template<typename String = std::string> | |
String | ssnprintf_generic (size_t max_size, const char *fmt,...) TLX_ATTRIBUTE_FORMAT_PRINTF(2 |
Helper for return the result of a snprintf() call inside a string object. More... | |
template<typename String > | |
String String | ssnprintf_generic (size_t max_size, const char *fmt,...) |
bool | starts_with (const char *str, const char *match) |
Checks if the given match string is located at the start of this string. More... | |
bool | starts_with (const char *str, const std::string &match) |
Checks if the given match string is located at the start of this string. More... | |
bool | starts_with (const std::string &str, const char *match) |
Checks if the given match string is located at the start of this string. More... | |
bool | starts_with (const std::string &str, const std::string &match) |
Checks if the given match string is located at the start of this string. More... | |
bool | starts_with_icase (const char *str, const char *match) |
Checks if the given match string is located at the start of this string. More... | |
bool | starts_with_icase (const char *str, const std::string &match) |
Checks if the given match string is located at the start of this string. More... | |
bool | starts_with_icase (const std::string &str, const char *match) |
Checks if the given match string is located at the start of this string. More... | |
bool | starts_with_icase (const std::string &str, const std::string &match) |
Checks if the given match string is located at the start of this string. More... | |
char | to_lower (char ch) |
Transform the given character to lower case without any localization. More... | |
std::string & | to_lower (std::string *str) |
Transforms the given string to lowercase and returns a reference to it. More... | |
std::string | to_lower (const std::string &str) |
Returns a copy of the given string converted to lowercase. More... | |
char | to_upper (char ch) |
Transform the given character to upper case without any localization. More... | |
std::string & | to_upper (std::string *str) |
Transforms the given string to uppercase and returns a reference to it. More... | |
std::string | to_upper (const std::string &str) |
Returns a copy of the given string converted to uppercase. More... | |
std::string | union_words (const std::string &wordsA, const std::string &wordsB) |
Return union of two keyword sets. More... | |
bool | is_space (char ch) |
std::string | word_wrap (const std::string &str, unsigned int wrap=80) |
Try to wrap a string to 80 columns without split words. More... | |
double | timestamp () |
Returns number of seconds since the epoch, currently microsecond resolution. More... | |
template<typename... Types> | |
void | unused (Types &&...) |
template<typename Type > | |
void | vector_free (std::vector< Type > &v) |
Simple method to free the underlying memory in a vector, because .clear() need not do it. More... | |
Stack Backtrace Printing | |
void | print_raw_backtrace (FILE *out, unsigned int max_frames, const char *fmt,...) TLX_ATTRIBUTE_FORMAT_PRINTF(3 |
Print a plain hex stack backtrace of the called function to FILE* out, prefixed with the given printf formatted output. More... | |
void | print_raw_backtrace (FILE *out=stderr, unsigned int max_frames=63) |
Print a plain hex stack backtrace of the called function to FILE* out. More... | |
void | print_cxx_backtrace (FILE *out=stderr, unsigned int max_frames=63) |
Print a demangled stack backtrace of the caller function to FILE* out. More... | |
void | enable_segv_backtrace () |
Install SIGSEGV signal handler and output backtrace on segmentation fault. More... | |
Parallel Sorting Algorithms | |
template<bool Stable, typename RandomAccessIterator , typename Comparator > | |
void | parallel_mergesort_base (RandomAccessIterator begin, RandomAccessIterator end, Comparator comp, size_t num_threads=std::thread::hardware_concurrency(), MultiwayMergeSplittingAlgorithm mwmsa=MWMSA_DEFAULT) |
Parallel multiway mergesort main call. More... | |
template<typename RandomAccessIterator , typename Comparator = std::less< typename std::iterator_traits<RandomAccessIterator>::value_type>> | |
void | parallel_mergesort (RandomAccessIterator begin, RandomAccessIterator end, Comparator comp=Comparator(), size_t num_threads=std::thread::hardware_concurrency(), MultiwayMergeSplittingAlgorithm mwmsa=MWMSA_DEFAULT) |
Parallel multiway mergesort. More... | |
template<typename RandomAccessIterator , typename Comparator = std::less< typename std::iterator_traits<RandomAccessIterator>::value_type>> | |
void | stable_parallel_mergesort (RandomAccessIterator begin, RandomAccessIterator end, Comparator comp=Comparator(), size_t num_threads=std::thread::hardware_concurrency(), MultiwayMergeSplittingAlgorithm mwmsa=MWMSA_DEFAULT) |
Stable parallel multiway mergesort. More... | |
String Sorting Algorithms | |
static void | sort_strings (unsigned char **strings, size_t size, size_t memory=0) |
Sort a set of strings represented by C-style uint8_t* in place. More... | |
static void | sort_strings (char **strings, size_t size, size_t memory=0) |
Sort a set of strings represented by C-style char* in place. More... | |
static void | sort_strings (const unsigned char **strings, size_t size, size_t memory=0) |
Sort a set of strings represented by C-style uint8_t* in place. More... | |
static void | sort_strings (const char **strings, size_t size, size_t memory=0) |
Sort a set of strings represented by C-style char* in place. More... | |
static void | sort_strings (std::vector< char * > &strings, size_t memory=0) |
Sort a set of strings represented by C-style char* in place. More... | |
static void | sort_strings (std::vector< unsigned char * > &strings, size_t memory=0) |
Sort a set of strings represented by C-style uint8_t* in place. More... | |
static void | sort_strings (std::vector< const char * > &strings, size_t memory=0) |
Sort a set of strings represented by C-style char* in place. More... | |
static void | sort_strings (std::vector< const unsigned char * > &strings, size_t memory=0) |
Sort a set of strings represented by C-style uint8_t* in place. More... | |
static void | sort_strings (std::string *strings, size_t size, size_t memory=0) |
Sort a set of std::strings in place. More... | |
static void | sort_strings (std::vector< std::string > &strings, size_t memory=0) |
Sort a vector of std::strings in place. More... | |
static void | sort_strings_lcp (unsigned char **strings, size_t size, uint32_t *lcp, size_t memory=0) |
Sort a set of strings represented by C-style uint8_t* in place. More... | |
static void | sort_strings_lcp (char **strings, size_t size, uint32_t *lcp, size_t memory=0) |
Sort a set of strings represented by C-style char* in place. More... | |
static void | sort_strings_lcp (const unsigned char **strings, size_t size, uint32_t *lcp, size_t memory=0) |
Sort a set of strings represented by C-style uint8_t* in place. More... | |
static void | sort_strings_lcp (const char **strings, size_t size, uint32_t *lcp, size_t memory=0) |
Sort a set of strings represented by C-style char* in place. More... | |
static void | sort_strings_lcp (std::vector< char * > &strings, uint32_t *lcp, size_t memory=0) |
Sort a set of strings represented by C-style char* in place. More... | |
static void | sort_strings_lcp (std::vector< unsigned char * > &strings, uint32_t *lcp, size_t memory=0) |
Sort a set of strings represented by C-style uint8_t* in place. More... | |
static void | sort_strings_lcp (std::vector< const char * > &strings, uint32_t *lcp, size_t memory=0) |
Sort a set of strings represented by C-style char* in place. More... | |
static void | sort_strings_lcp (std::vector< const unsigned char * > &strings, uint32_t *lcp, size_t memory=0) |
Sort a set of strings represented by C-style uint8_t* in place. More... | |
static void | sort_strings_lcp (std::string *strings, size_t size, uint32_t *lcp, size_t memory=0) |
Sort a set of std::strings in place. More... | |
static void | sort_strings_lcp (std::vector< std::string > &strings, uint32_t *lcp, size_t memory=0) |
Sort a vector of std::strings in place. More... | |
static void | sort_strings_parallel (unsigned char **strings, size_t size, size_t memory=0) |
Sort a set of strings in parallel represented by C-style uint8_t* in place. More... | |
static void | sort_strings_parallel (char **strings, size_t size, size_t memory=0) |
Sort a set of strings in parallel represented by C-style char* in place. More... | |
static void | sort_strings_parallel (const unsigned char **strings, size_t size, size_t memory=0) |
Sort a set of strings in parallel represented by C-style uint8_t* in place. More... | |
static void | sort_strings_parallel (const char **strings, size_t size, size_t memory=0) |
Sort a set of strings in parallel represented by C-style char* in place. More... | |
static void | sort_strings_parallel (std::vector< char * > &strings, size_t memory=0) |
Sort a set of strings in parallel represented by C-style char* in place. More... | |
static void | sort_strings_parallel (std::vector< unsigned char * > &strings, size_t memory=0) |
Sort a set of strings in parallel represented by C-style uint8_t* in place. More... | |
static void | sort_strings_parallel (std::vector< const char * > &strings, size_t memory=0) |
Sort a set of strings in parallel represented by C-style char* in place. More... | |
static void | sort_strings_parallel (std::vector< const unsigned char * > &strings, size_t memory=0) |
Sort a set of strings in parallel represented by C-style uint8_t* in place. More... | |
static void | sort_strings_parallel (std::string *strings, size_t size, size_t memory=0) |
Sort a set of std::strings in place in parallel. More... | |
static void | sort_strings_parallel (std::vector< std::string > &strings, size_t memory=0) |
Sort a vector of std::strings in place in parallel. More... | |
static void | sort_strings_parallel_lcp (unsigned char **strings, size_t size, uint32_t *lcp, size_t memory=0) |
Sort a set of strings in parallel represented by C-style uint8_t* in place. More... | |
static void | sort_strings_parallel_lcp (char **strings, size_t size, uint32_t *lcp, size_t memory=0) |
Sort a set of strings in parallel represented by C-style char* in place. More... | |
static void | sort_strings_parallel_lcp (const unsigned char **strings, size_t size, uint32_t *lcp, size_t memory=0) |
Sort a set of strings in parallel represented by C-style uint8_t* in place. More... | |
static void | sort_strings_parallel_lcp (const char **strings, size_t size, uint32_t *lcp, size_t memory=0) |
Sort a set of strings in parallel represented by C-style char* in place. More... | |
static void | sort_strings_parallel_lcp (std::vector< char * > &strings, uint32_t *lcp, size_t memory=0) |
Sort a set of strings in parallel represented by C-style char* in place. More... | |
static void | sort_strings_parallel_lcp (std::vector< unsigned char * > &strings, uint32_t *lcp, size_t memory=0) |
Sort a set of strings in parallel represented by C-style uint8_t* in place. More... | |
static void | sort_strings_parallel_lcp (std::vector< const char * > &strings, uint32_t *lcp, size_t memory=0) |
Sort a set of strings in parallel represented by C-style char* in place. More... | |
static void | sort_strings_parallel_lcp (std::vector< const unsigned char * > &strings, uint32_t *lcp, size_t memory=0) |
Sort a set of strings in parallel represented by C-style uint8_t* in place. More... | |
static void | sort_strings_parallel_lcp (std::string *strings, size_t size, uint32_t *lcp, size_t memory=0) |
Sort a set of std::strings in place in parallel. More... | |
static void | sort_strings_parallel_lcp (std::vector< std::string > &strings, uint32_t *lcp, size_t memory=0) |
Sort a vector of std::strings in place in parallel. More... | |
Base64 Encoding and Decoding | |
std::string | base64_encode (const void *data, size_t size, size_t line_break=0) |
Encode the given binary data into base64 representation as described in RFC 2045 or RFC 3548. More... | |
std::string | base64_encode (const std::string &str, size_t line_break=0) |
Encode the given binary string into base64 representation as described in RFC 2045 or RFC 3548. More... | |
std::string | base64_decode (const void *data, size_t size, bool strict=true) |
Decode a string in base64 representation as described in RFC 2045 or RFC 3548 and return the original data. More... | |
std::string | base64_decode (const std::string &str, bool strict=true) |
Decode a string in base64 representation as described in RFC 2045 or RFC 3548 and return the original data. More... | |
Bitdump Methods | |
std::string | bitdump_8_msb (const void *const data, size_t size) |
Dump a (binary) string of 8-bit bytes as a sequence of '0' and '1' characters, with the most significant bits (msb) first. More... | |
std::string | bitdump_8_msb (const std::string &str) |
Dump a (binary) string of 8-bit bytes as a sequence of '0' and '1' characters, with the most significant bits (msb) first. More... | |
std::string | bitdump_le8 (const void *const data, size_t size) |
deprecated method: unclear naming and documentation. More... | |
std::string | bitdump_le8 (const std::string &str) |
deprecated method: unclear naming and documentation. More... | |
std::string | bitdump_8_lsb (const void *const data, size_t size) |
Dump a (binary) string of 8-bit bytes as a sequence of '0' and '1' characters, with the least significant bits (lsb) first. More... | |
std::string | bitdump_8_lsb (const std::string &str) |
Dump a (binary) string of 8-bit bytes as a sequence of '0' and '1' characters, with the least significant bits (lsb) first. More... | |
std::string | bitdump_be8 (const void *const data, size_t size) |
deprecated method: unclear naming and documentation. More... | |
std::string | bitdump_be8 (const std::string &str) |
deprecated method: unclear naming and documentation. More... | |
template<typename Type > | |
std::string | bitdump_8_msb_type (const Type &t) |
Dump a (binary) item of 8-bit bytes as a sequence of '0' and '1' characters, with the most significant bits (msb) first. More... | |
template<typename Type > | |
std::string | bitdump_le8_type (const Type &t) |
deprecated method: unclear naming and documentation. More... | |
template<typename Type > | |
std::string | bitdump_8_lsb_type (const Type &t) |
Dump a (binary) item of 8-bit bytes as a sequence of '0' and '1' characters, with the least significant bits (lsb) first. More... | |
template<typename Type > | |
std::string | bitdump_be8_type (const Type &t) |
deprecated method: unclear naming and documentation. More... | |
Hexdump Methods | |
std::string | hexdump (const void *const data, size_t size) |
Dump a (binary) string as a sequence of uppercase hexadecimal pairs. More... | |
std::string | hexdump (const std::string &str) |
Dump a (binary) string as a sequence of uppercase hexadecimal pairs. More... | |
std::string | hexdump (const std::vector< char > &data) |
Dump a char vector as a sequence of uppercase hexadecimal pairs. More... | |
std::string | hexdump (const std::vector< uint8_t > &data) |
Dump a uint8_t vector as a sequence of uppercase hexadecimal pairs. More... | |
std::string | hexdump_sourcecode (const std::string &str, const std::string &var_name="name") |
Dump a (binary) string into a C source code snippet. More... | |
std::string | hexdump_lc (const void *const data, size_t size) |
Dump a (binary) string as a sequence of lowercase hexadecimal pairs. More... | |
std::string | hexdump_lc (const std::string &str) |
Dump a (binary) string as a sequence of lowercase hexadecimal pairs. More... | |
std::string | hexdump_lc (const std::vector< char > &data) |
Dump a char vector as a sequence of lowercase hexadecimal pairs. More... | |
std::string | hexdump_lc (const std::vector< uint8_t > &data) |
Dump a uint8_t vector as a sequence of lowercase hexadecimal pairs. More... | |
std::string | parse_hexdump (const std::string &str) |
Read a string as a sequence of hexadecimal pairs. More... | |
template<typename Type > | |
std::string | hexdump_type (const Type &t) |
Dump a (binary) item as a sequence of uppercase hexadecimal pairs. More... | |
template<typename Type > | |
std::string | hexdump_lc_type (const Type &t) |
Dump a (binary) item as a sequence of lowercase hexadecimal pairs. More... | |
Split and Join | |
std::string | join (char glue, const std::vector< std::string > &parts) |
Join a vector of strings by some glue character between each pair from the sequence. More... | |
std::string | join (const char *glue, const std::vector< std::string > &parts) |
Join a vector of strings by some glue string between each pair from the sequence. More... | |
std::string | join (const std::string &glue, const std::vector< std::string > &parts) |
Join a vector of strings by some glue string between each pair from the sequence. More... | |
template<typename Glue , typename Iterator > | |
static std::string | join (Glue glue, Iterator first, Iterator last) |
Join a sequence of strings by some glue string between each pair from the sequence. More... | |
template<typename Container > | |
static std::string | join (char glue, const Container &parts) |
Join a Container of strings by some glue character between each pair from the sequence. More... | |
template<typename Container > | |
static std::string | join (const char *glue, const Container &parts) |
Join a Container of strings by some glue string between each pair from the sequence. More... | |
template<typename Container > | |
static std::string | join (const std::string &glue, const Container &parts) |
Join a Container of strings by some glue string between each pair from the sequence. More... | |
std::string | join_quoted (const std::vector< std::string > &str, char sep, char quote, char escape) |
Join a vector of strings using a separator character. More... | |
std::string | join_quoted (const std::vector< std::string > &str) |
Join a vector of strings using spaces as separator character. More... | |
std::vector< std::string > | split (char sep, const std::string &str, std::string::size_type limit=std::string::npos) |
Split the given string at each separator character into distinct substrings. More... | |
std::vector< std::string > | split (const char *sep, const std::string &str, std::string::size_type limit=std::string::npos) |
Split the given string at each separator string into distinct substrings. More... | |
std::vector< std::string > | split (const std::string &sep, const std::string &str, std::string::size_type limit=std::string::npos) |
Split the given string at each separator string into distinct substrings. More... | |
std::vector< std::string > | split (char sep, const std::string &str, std::string::size_type min_fields, std::string::size_type limit) |
Split the given string at each separator character into distinct substrings. More... | |
std::vector< std::string > | split (const char *sep, const std::string &str, std::string::size_type min_fields, std::string::size_type limit) |
Split the given string at each separator string into distinct substrings. More... | |
std::vector< std::string > | split (const std::string &sep, const std::string &str, std::string::size_type min_fields, std::string::size_type limit) |
Split the given string at each separator string into distinct substrings. More... | |
std::vector< std::string > & | split (std::vector< std::string > *into, char sep, const std::string &str, std::string::size_type limit=std::string::npos) |
Split the given string at each separator character into distinct substrings. More... | |
std::vector< std::string > & | split (std::vector< std::string > *into, const char *sep, const std::string &str, std::string::size_type limit=std::string::npos) |
Split the given string at each separator string into distinct substrings. More... | |
std::vector< std::string > & | split (std::vector< std::string > *into, const std::string &sep, const std::string &str, std::string::size_type limit=std::string::npos) |
Split the given string at each separator string into distinct substrings. More... | |
std::vector< std::string > & | split (std::vector< std::string > *into, char sep, const std::string &str, std::string::size_type min_fields, std::string::size_type limit) |
Split the given string at each separator character into distinct substrings. More... | |
std::vector< std::string > & | split (std::vector< std::string > *into, const char *sep, const std::string &str, std::string::size_type min_fields, std::string::size_type limit) |
Split the given string at each separator string into distinct substrings. More... | |
std::vector< std::string > & | split (std::vector< std::string > *into, const std::string &sep, const std::string &str, std::string::size_type min_fields, std::string::size_type limit) |
Split the given string at each separator string into distinct substrings. More... | |
std::vector< std::string > | split_quoted (const std::string &str, char sep, char quote, char escape) |
Split the given string at each separator character into distinct substrings. More... | |
std::vector< std::string > | split_quoted (const std::string &str) |
Split the given string at each space into distinct substrings. More... | |
template<typename Functor > | |
static void | split_view (char sep, const std::string &str, Functor &&callback, std::string::size_type limit=std::string::npos) |
Split the given string at each separator character into distinct substrings, and call the given callback with a StringView for each substring. More... | |
Search and Replace | |
std::string & | replace_first (std::string *str, const std::string &needle, const std::string &instead) |
Replace only the first occurrence of needle in str. More... | |
std::string & | replace_first (std::string *str, const std::string &needle, const char *instead) |
Replace only the first occurrence of needle in str. More... | |
std::string & | replace_first (std::string *str, const char *needle, const std::string &instead) |
Replace only the first occurrence of needle in str. More... | |
std::string & | replace_first (std::string *str, const char *needle, const char *instead) |
Replace only the first occurrence of needle in str. More... | |
std::string & | replace_first (std::string *str, char needle, char instead) |
Replace only the first occurrence of needle in str. More... | |
std::string | replace_first (const std::string &str, const std::string &needle, const std::string &instead) |
Replace only the first occurrence of needle in str. More... | |
std::string | replace_first (const std::string &str, const std::string &needle, const char *instead) |
Replace only the first occurrence of needle in str. More... | |
std::string | replace_first (const std::string &str, const char *needle, const std::string &instead) |
Replace only the first occurrence of needle in str. More... | |
std::string | replace_first (const std::string &str, const char *needle, const char *instead) |
Replace only the first occurrence of needle in str. More... | |
std::string | replace_first (const std::string &str, char needle, char instead) |
Replace only the first occurrence of needle in str. More... | |
std::string & | replace_all (std::string *str, const std::string &needle, const std::string &instead) |
Replace all occurrences of needle in str. More... | |
std::string & | replace_all (std::string *str, const std::string &needle, const char *instead) |
Replace all occurrences of needle in str. More... | |
std::string & | replace_all (std::string *str, const char *needle, const std::string &instead) |
Replace all occurrences of needle in str. More... | |
std::string & | replace_all (std::string *str, const char *needle, const char *instead) |
Replace all occurrences of needle in str. More... | |
std::string & | replace_all (std::string *str, char needle, char instead) |
Replace all occurrences of needle in str. More... | |
std::string | replace_all (const std::string &str, const std::string &needle, const std::string &instead) |
Replace all occurrences of needle in str. More... | |
std::string | replace_all (const std::string &str, const std::string &needle, const char *instead) |
Replace all occurrences of needle in str. More... | |
std::string | replace_all (const std::string &str, const char *needle, const std::string &instead) |
Replace all occurrences of needle in str. More... | |
std::string | replace_all (const std::string &str, const char *needle, const char *instead) |
Replace all occurrences of needle in str. More... | |
std::string | replace_all (const std::string &str, char needle, char instead) |
Replace all occurrences of needle in str. More... | |
Trim | |
std::string & | trim (std::string *str) |
Trims the given string in-place on the left and right. More... | |
std::string & | trim (std::string *str, const char *drop) |
Trims the given string in-place on the left and right. More... | |
std::string & | trim (std::string *str, const std::string &drop) |
Trims the given string in-place on the left and right. More... | |
std::string | trim (const std::string &str) |
Trims the given string in-place on the left and right. More... | |
std::string | trim (const std::string &str, const char *drop) |
Trims the given string in-place on the left and right. More... | |
std::string | trim (const std::string &str, const std::string &drop) |
Trims the given string in-place on the left and right. More... | |
std::string & | trim_right (std::string *str) |
Trims the given string in-place only on the right. More... | |
std::string & | trim_right (std::string *str, const char *drop) |
Trims the given string in-place only on the right. More... | |
std::string & | trim_right (std::string *str, const std::string &drop) |
Trims the given string in-place only on the right. More... | |
std::string | trim_right (const std::string &str) |
Trims the given string only on the right. More... | |
std::string | trim_right (const std::string &str, const char *drop) |
Trims the given string only on the right. More... | |
std::string | trim_right (const std::string &str, const std::string &drop) |
Trims the given string only on the right. More... | |
std::string & | trim_left (std::string *str) |
Trims the given string in-place only on the left. More... | |
std::string & | trim_left (std::string *str, const char *drop) |
Trims the given string in-place only on the left. More... | |
std::string & | trim_left (std::string *str, const std::string &drop) |
Trims the given string in-place only on the left. More... | |
std::string | trim_left (const std::string &str) |
Trims the given string only on the left. More... | |
std::string | trim_left (const std::string &str, const char *drop) |
Trims the given string only on the left. More... | |
std::string | trim_left (const std::string &str, const std::string &drop) |
Trims the given string only on the left. More... | |
Variables | |
bool | parallel_multiway_merge_force_sequential |
setting to force all parallel_multiway_merge() calls to run sequentially More... | |
bool | parallel_multiway_merge_force_parallel |
setting to force parallel_multiway_merge() calls to run with parallel code More... | |
size_t | parallel_multiway_merge_minimal_k |
minimal number of sequences for switching to parallel merging More... | |
size_t | parallel_multiway_merge_minimal_n |
minimal number of items for switching to parallel merging More... | |
size_t | parallel_multiway_merge_oversampling |
default oversampling factor for parallel_multiway_merge More... | |
static std::atomic< bool > | s_die_with_exception |
static DefaultLoggerOutputCOut | s_default_logger_cout |
default logger singletons More... | |
static DefaultLoggerOutputCErr | s_default_logger_cerr |
default logger singletons More... | |
static std::atomic< LoggerOutputHook * > | s_logger_output_hook |
global logger output hook More... | |
static std::atomic< LoggerPrefixHook * > | s_logger_prefix_hook |
global logger prefix hook More... | |
static std::mutex | s_timer_add_mutex |
using counting_ptr = CountingPtr<Type> |
make alias due to similarity with std::shared_ptr<T>
Definition at line 305 of file counting_ptr.hpp.
using CountingPtrNoDelete = CountingPtr<Type, CountingPtrNoOperationDeleter> |
make alias for dummy deleter
Definition at line 309 of file counting_ptr.hpp.
make template alias due to similarity with std::function
Definition at line 428 of file delegate.hpp.
using reference_counter = ReferenceCounter |
make alias due to CountingPtr's similarity with std::shared_ptr<T>
Definition at line 389 of file counting_ptr.hpp.
alias for STL-like code style
Definition at line 93 of file semaphore.hpp.
typedef uint32_t u32 |
Definition at line 32 of file sha256.cpp.
typedef uint64_t u64 |
Definition at line 33 of file sha256.cpp.
|
inline |
helper method to compare two values in die_unequal()
|
inline |
|
inline |
helper method to compare two values in die_unequal_eps()
|
inline |
void die_with_message | ( | const std::string & | msg | ) |
void die_with_message | ( | const char * | msg, |
const char * | file, | ||
size_t | line | ||
) |
void die_with_message | ( | const std::string & | msg, |
const char * | file, | ||
size_t | line | ||
) |
void enable_segv_backtrace | ( | ) |
Install SIGSEGV signal handler and output backtrace on segmentation fault.
Compile with -rdynamic
for more useful output.
Definition at line 178 of file backtrace.cpp.
bool tlx::ends_with_icase | ( | const char * | str, |
const char * | match | ||
) |
Definition at line 75 of file ends_with.cpp.
bool tlx::ends_with_icase | ( | const char * | str, |
const std::string & | match | ||
) |
Definition at line 91 of file ends_with.cpp.
|
inlinestatic |
Definition at line 19 of file extract_between.cpp.
struct tlx::has_ostream_operator<Type, decltype(std::declval< std::ostream & > | ( | ) |
Definition at line 29 of file wrap_unprintable.hpp.
bool tlx::is_space | ( | char | ch | ) |
Definition at line 17 of file word_wrap.cpp.
|
inlinestatic |
Definition at line 15 of file contains_word.cpp.
CountingPtr<Type> tlx::make_counting | ( | Args &&... | args | ) |
method analogous to std::make_shared and std::make_unique.
Definition at line 313 of file counting_ptr.hpp.
|
inlinenoexcept |
constructor for wrapping a class::method with object pointer.
constructor for wrapping a const class::method with object pointer.
Definition at line 433 of file delegate.hpp.
|
inlinenoexcept |
constructor for wrapping a class::method with object reference.
Definition at line 449 of file delegate.hpp.
|
inlinenoexcept |
constructor for wrapping a const class::method with object reference.
Definition at line 457 of file delegate.hpp.
std::ostream& tlx::operator<< | ( | std::ostream & | os, |
const CountingPtr< A, D > & | c | ||
) |
print pointer
Definition at line 326 of file counting_ptr.hpp.
void void print_cxx_backtrace | ( | FILE * | out = stderr , |
unsigned int | max_frames = 63 |
||
) |
Print a demangled stack backtrace of the caller function to FILE* out.
-rdynamic
for meaningful output. Definition at line 73 of file backtrace.cpp.
void print_raw_backtrace | ( | FILE * | out, |
unsigned int | max_frames, | ||
const char * | fmt, | ||
... | |||
) |
Print a plain hex stack backtrace of the called function to FILE* out, prefixed with the given printf formatted output.
Definition at line 30 of file backtrace.cpp.
void print_raw_backtrace | ( | FILE * | out, |
unsigned int | max_frames | ||
) |
Print a plain hex stack backtrace of the called function to FILE* out.
Definition at line 69 of file backtrace.cpp.
bool set_die_with_exception | ( | bool | b | ) |
LoggerOutputHook * set_logger_output_hook | ( | LoggerOutputHook * | hook | ) |
set new LoggerOutputHook instance to receive global log lines.
returns the old hook.
LoggerPrefixHook * set_logger_prefix_hook | ( | LoggerPrefixHook * | hook | ) |
Set new LoggerPrefixHook instance to prefix global log lines.
Returns the old hook.
LoggerOutputHook * set_logger_to_stderr | ( | ) |
|
inlinestatic |
Definition at line 240 of file siphash.hpp.
|
inlinestatic |
Definition at line 249 of file siphash.hpp.
|
inlinestatic |
Definition at line 257 of file siphash.hpp.
|
inlinestatic |
Definition at line 262 of file siphash.hpp.
|
inlinestatic |
Definition at line 268 of file siphash.hpp.
|
inlinestatic |
Definition at line 42 of file siphash.hpp.
|
inlinestatic |
String String tlx::ssnprintf_generic | ( | size_t | max_size, |
const char * | fmt, | ||
... | |||
) |
Definition at line 70 of file ssprintf_generic.hpp.
String String tlx::ssprintf_generic | ( | const char * | fmt, |
... | |||
) |
Definition at line 35 of file ssprintf_generic.hpp.
|
noexcept |
swap enclosed object with another counting pointer (no reference counts need change)
Definition at line 320 of file counting_ptr.hpp.
double timestamp | ( | ) |
Returns number of seconds since the epoch, currently microsecond resolution.
Definition at line 17 of file timestamp.cpp.
void tlx::unused | ( | Types && | ... | ) |
Definition at line 20 of file unused.hpp.
void tlx::vector_free | ( | std::vector< Type > & | v | ) |
Simple method to free the underlying memory in a vector, because .clear() need not do it.
Definition at line 21 of file vector_free.hpp.
enable_if<!has_ostream_operator<Type>::value, const char*>::type tlx::wrap_unp | ( | Type | , |
const char * | instead = "<unprintable>" |
||
) |
SFINAE magic to return "<unprintable>" instead if the value HAS NO ostream operator << available.
Shortened name of wrap_unprintable()
Definition at line 52 of file wrap_unprintable.hpp.
enable_if<has_ostream_operator<Type>::value, Type>::type tlx::wrap_unp | ( | Type | value, |
const char * | = nullptr |
||
) |
SFINAE magic to return the value if the value HAS a ostream operator << available.
Shortened name of wrap_unprintable()
Definition at line 60 of file wrap_unprintable.hpp.
enable_if<!has_ostream_operator<Type>::value, const char*>::type tlx::wrap_unprintable | ( | Type | , |
const char * | instead = "<unprintable>" |
||
) |
SFINAE magic to return "<unprintable>" instead if the value HAS NO ostream operator << available.
Identical to shorter wrap_unp().
Definition at line 36 of file wrap_unprintable.hpp.
enable_if<has_ostream_operator<Type>::value, Type>::type tlx::wrap_unprintable | ( | Type | value, |
const char * | = nullptr |
||
) |
SFINAE magic to return the value if the value HAS a ostream operator << available.
Identical to shorter wrap_unp().
Definition at line 44 of file wrap_unprintable.hpp.
|
static |
|
static |
|
static |
|
static |
|
static |
Definition at line 22 of file multi_timer.cpp.