Skip to content

tlx/tlx

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
tlx
 
 
 
 
 
 
 
 
 
 
 
 
 
 

tlx - Collection of C++ Data Structures, Algorithms, and Miscellaneous Helpers

tlx is a collection of C++ helpers and extensions universally needed, but not found in the STL.The most important design goals and conventions are:

  • high modularity with as little dependencies between modules as possible.
  • attempt to never break existing interfaces.
  • compile on all platforms with C++ – smartphones, supercomputers, windows, etc.
  • zero external dependencies: no additional libraries are required.
  • warning and bug-freeness on all compilers.
  • keep overhead down – small overall size such that is can be included without bloating applications.

--->> Doxygen Documentation <<---

Build Status Build status Coverage Status

List of the most commonly used components:

  • CountingPtr – an intrusive reference counting pointer
  • die() - Simple Invariant Testing : die(), die_unless(), die_if(), die_unequal().
  • logger.hpp : LOG, LOG1, LOGC, sLOG, wrap_unprintable().
  • Miscellaneous: timestamp(), unused(), vector_free().
  • Algorithms : merge_combine(), exclusive_scan(), multiway_merge(), parallel_multiway_merge(), multisequence_selection(), multisequence_partition().
  • Data Structures : RingBuffer, SimpleVector, StringView, B+ Trees, Loser Trees, RadixHeap, (Addressable) D-Ary Heap
  • Defines and Macros : TLX_LIKELY, TLX_UNLIKELY, TLX_ATTRIBUTE_PACKED, TLX_ATTRIBUTE_ALWAYS_INLINE, TLX_ATTRIBUTE_FORMAT_PRINTF, TLX_DEPRECATED_FUNC_DEF.
  • Message Digests : MD5, md5_hex(), SHA1, sha1_hex(), SHA256, sha256_hex(), SHA512, sha512_hex().
  • Math Functions : integer_log2_floor(), is_power_of_two(), round_up_to_power_of_two(), round_down_to_power_of_two(), ffs(), clz(), ctz(), abs_diff(), bswap32(), bswap64(), popcount(), power_to_the, Aggregate, PolynomialRegression.
  • String Algorithms : starts_with(), ends_with(), contains(), contains_word(), trim(), replace_all(), erase_all(), join(), split(), split_view(), split_words(), union_words(), split_quoted(), join_quoted(), to_lower(), hexdump(), bitdump_le8(), word_wrap(), escape_html(), parse_uri(), parse_uri_form_data(), parse_si_iec_units(), format_iec_units(), ssprintf(), expand_environment_variables(), levenshtein(), hash_djb2(), hash_sdbm().
  • Meta-Template Programming : call_foreach(), apply_tuple(), vmap_foreach(), Log2Floor, FunctionChain, FunctionStack, is_std_pair, is_std_tuple, is_std_vector, is_std_array, TLX_MAKE_HAS_MEMBER.
  • Sorting Algorithms : parallel_mergesort() (experimental parallel merge sort from MCSTL), sort_strings() (using radix sort and multikey quicksort), sort_strings_parallel() (using parallel super scalar string sample sort), sorting network for up to sixteen elements.
  • Backtrace Printing : print_cxx_backtrace().
  • Command Line Parsing : CmdlineParser.
  • Multi-Phase Timer: MultiTimer, ScopedMultiTimerSwitch, ScopedMultiTimer.
  • Fast Delegates : Delegate - a better std::function<> replacement.
  • SipHash : simple string hashing siphash()
  • StackAllocator : stack-local allocations
  • Threading : ThreadPool, Semaphore, ThreadBarrierMutex, ThreadBarrierSpin.

Bugs

Please report bugs via the github issue tracking system.

License

tlx is licensed under the Boost Software License - Version 1.0.

If you use tlx in an academic context or publication, please cite it as

@Misc{TLX,
  title = 	 {{TLX}: Collection of Sophisticated {C++} Data Structures, Algorithms, and Miscellaneous Helpers},
  author = 	 {Timo Bingmann},
  year = 	 2018,
  note = 	 {\url{https://panthema.net/tlx}, retrieved {Oct.} 7, 2020},
}