|
| template<typename T = unsigned, typename ReturnT = BitFunctionReturnType<T>> |
| auto constexpr | bit_set (unsigned bit) noexcept -> ReturnT |
| | Set a bit in an integral type.
|
| |
| template<typename T , typename ReturnT = BitFunctionReturnType<T>> |
| auto constexpr | bit_set (T previous, unsigned bit) noexcept -> ReturnT |
| | Set a bit in an integral value.
|
| |
| template<typename T , typename ReturnT = BitFunctionReturnType<T>> |
| auto constexpr | bit_reset (T previous, unsigned bit) noexcept -> ReturnT |
| | Reset a bit in an integral value.
|
| |
| template<typename T , typename ReturnT = BitFunctionReturnType<T>> |
| auto constexpr | bit_flip (T previous, unsigned bit) noexcept -> ReturnT |
| | Flip a bit in an integral value.
|
| |
| template<typename T > |
| bool constexpr | bit_test (T bits, unsigned bit) noexcept |
| | Test a bit in an integral value.
|
| |
| constexpr bool | is_big_endian () |
| | Determine whether this platform uses big-endian (Motorola) order for storing multi-byte quantities in memory.
|
| |
| constexpr bool | is_little_endian () |
| | Determine whether this platform uses little-endian (Intel) order for storing multi-byte quantities in memory.
|
| |
| constexpr char | lowercase_ascii (char c) noexcept |
| | Return the ASCII lowercase equivalent of the given character (or the unchanged character, if it is not an ASCII letter).
|
| |
| GUL_EXPORT std::string | lowercase_ascii (std::string_view str) |
| | Return a copy of the given string in which all ASCII characters are replaced by their lowercase equivalents.
|
| |
| GUL_EXPORT std::string & | lowercase_ascii_inplace (std::string &str) noexcept |
| | Replace all ASCII characters in a string by their lowercase equivalents.
|
| |
| constexpr char | uppercase_ascii (char c) noexcept |
| | Return the ASCII uppercase equivalent of the given character (or the unchanged character, if it is not an ASCII letter).
|
| |
| GUL_EXPORT std::string | uppercase_ascii (std::string_view str) |
| | Return a copy of the given string in which all ASCII characters are replaced by their uppercase equivalents.
|
| |
| GUL_EXPORT std::string & | uppercase_ascii_inplace (std::string &str) noexcept |
| | Replace all ASCII characters in a string by their uppercase equivalents.
|
| |
| std::string | cat () |
| | Efficiently concatenate an arbitrary number of strings and numbers.
|
| |
| std::string | cat (const ConvertingStringView &s) |
| |
| GUL_EXPORT std::string | cat (const ConvertingStringView &s1, const ConvertingStringView &s2) |
| |
| GUL_EXPORT std::string | cat (const ConvertingStringView &s1, const ConvertingStringView &s2, const ConvertingStringView &s3) |
| |
| GUL_EXPORT std::string | cat (std::initializer_list< ConvertingStringView > pieces) |
| |
| template<typename... Args, typename = std::enable_if_t<(sizeof...(Args) > 3)>> |
| std::string | cat (const Args &... args) |
| |
| GUL_EXPORT std::string | escape (std::string_view in) |
| | Create a new string that looks like an ASCII-only C string literal of the input string.
|
| |
| GUL_EXPORT std::string | unescape (std::string_view in) |
| | Evaluate a string with escaped characters to get the original string back.
|
| |
| template<typename F > |
| FinalAction< typename std::decay_t< F > > | finally (F &&f) noexcept |
| | finally() - convenience function to generate a FinalAction
|
| |
| template<typename IntTypeA , typename IntTypeB > |
| constexpr auto | gcd (IntTypeA a, IntTypeB b) |
| | Calculate the greatest common divisor of two integers using the Euclidean algorithm.
|
| |
| template<typename IntTypeA , typename IntTypeB > |
| constexpr auto | lcm (IntTypeA a, IntTypeB b) |
| | Calculate the least common multiple of two integers.
|
| |
| template<typename IteratorT , typename = std::enable_if_t<detail::IsHexDumpIterator<IteratorT>::value>> |
| std::string | hexdump (IteratorT begin, IteratorT end, std::string_view prompt="") |
| | Generate a hexdump of a data range and return it as a string.
|
| |
| template<typename ContainerT , typename = std::enable_if_t<detail::IsHexDumpContainer<ContainerT>::value>> |
| std::string | hexdump (const ContainerT &cont, std::string_view prompt="") |
| | This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
| |
| template<typename IteratorT , typename = std::enable_if_t<detail::IsHexDumpIterator<IteratorT>::value>> |
| HexdumpParameterForward< const IteratorT > | hexdump_stream (const IteratorT &begin, const IteratorT &end, std::string prompt="") |
| | Generate a hexdump of a data range that can be efficiently written to a stream using operator<<.
|
| |
| template<typename ContainerT , typename = std::enable_if_t<detail::IsHexDumpContainer<ContainerT>::value>> |
| HexdumpParameterForward< const decltype(std::declval< ContainerT >().cbegin())> | hexdump_stream (const ContainerT &cont, std::string prompt="") |
| | This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
| |
| template<typename ContainerT , typename = std::enable_if_t<detail::IsHexDumpContainer<ContainerT>::value, decltype(HexdumpParameterForward<decltype(std::declval<ContainerT>().cbegin()), ContainerT> {}, 0)>> |
| HexdumpParameterForward< decltype(std::declval< ContainerT >().cbegin()), ContainerT > | hexdump_stream (ContainerT &&cont, std::string prompt="") |
| | This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
| |
| template<typename StringContainer = std::vector<std::string>, typename ContainerInsertFct = void (*)(StringContainer&, std::string_view)> |
| StringContainer | split (std::string_view text, std::string_view delimiter, ContainerInsertFct insert_fct=detail::emplace_back< StringContainer >) |
| | Separate a string at all occurrences of a delimiter, returning the strings between the delimiters in a container.
|
| |
| template<typename StringContainer = std::vector<std::string>, typename ContainerInsertFct = void (*)(StringContainer&, std::string_view)> |
| StringContainer | split (std::string_view text, const std::regex &delimiter, ContainerInsertFct insert_fct=detail::emplace_back< StringContainer >) |
| | Separate a string at all occurrences of a delimiter described by a regular expression, returning the strings between the delimiters in a container.
|
| |
| template<typename StringContainer = std::vector<std::string_view>, typename ContainerInsertFct = void (*)(StringContainer&, std::string_view)> |
| StringContainer | split_sv (std::string_view text, std::string_view delimiter, ContainerInsertFct insert_fct=detail::emplace_back< StringContainer >) |
| | Separate a string at all occurrences of a delimiter, returning the strings between the delimiters in a vector.
|
| |
| template<typename Iterator > |
| std::string | join (Iterator begin, Iterator end, std::string_view glue) |
| | Concatenate all strings (or string-like elements) in a range, placing a delimiter between them.
|
| |
| template<typename StringContainer > |
| std::string | join (const StringContainer &parts, std::string_view glue) |
| | Concatenate all strings (or string-like elements) in a range, placing a delimiter between them.
|
| |
| template<typename Iterator , typename ConversionFct > |
| std::string | join (Iterator begin, Iterator end, std::string_view glue, ConversionFct to_string, std::size_t prealloc=0) |
| | Concatenate the strings resulting from calling the given function on each element in a range, placing a delimiter between them.
|
| |
| template<typename Container , typename ConversionFct > |
| std::string | join (const Container &container, std::string_view glue, ConversionFct to_string, std::size_t prealloc=0) |
| | Concatenate the strings resulting from calling the given function on each element in a range, placing a delimiter between them.
|
| |
| template<typename ValueT > |
| constexpr auto | abs (ValueT n) noexcept -> std::enable_if_t< std::is_unsigned< ValueT >::value, ValueT > |
| | Compute the absolute value of a number.
|
| |
| template<typename NumT , typename OrderT , typename = std::enable_if_t< std::is_arithmetic<NumT>::value and std::is_arithmetic<OrderT>::value >> |
| bool | within_orders (const NumT a, const NumT b, const OrderT orders) noexcept(false) |
| | Determine if two numbers are almost equal, comparing only some significant digits.
|
| |
| template<typename NumT > |
| bool | within_abs (NumT a, NumT b, NumT tol) noexcept |
| | Determine if two numbers are almost equal, allowing for an absolute difference.
|
| |
| template<typename NumT , typename = std::enable_if_t<std::is_floating_point<NumT>::value>> |
| bool | within_ulp (NumT a, NumT b, unsigned int ulp) |
| | Determine if two numbers are almost equal, allowing for a difference of a given number of units-in-the-last-place (ULPs).
|
| |
| template<class NumT > |
| constexpr const NumT & | clamp (const NumT &v, const NumT &lo, const NumT &hi) |
| | Coerce a value to be within a given range.
|
| |
| template<class NumT , class Compare > |
| constexpr const NumT & | clamp (const NumT &v, const NumT &lo, const NumT &hi, Compare comp) |
| | This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
| |
|
template<typename... Fcts> |
| | OverloadSet (Fcts...) -> OverloadSet< Fcts... > |
| |
| GUL_EXPORT std::string | replace (std::string_view haystack, std::string_view needle, std::string_view hammer) |
| | Replace all occurrences of a string within another string, returning the result as a std::string.
|
| |
| GUL_EXPORT std::string & | replace_inplace (std::string &haystack, std::string_view needle, std::string_view hammer) |
| | Replace all occurrences of a string within another string in-place.
|
| |
| template<typename ElementT , size_t in_capacity> |
| void | swap (SmallVector< ElementT, in_capacity > &a, SmallVector< ElementT, in_capacity > &b) |
| | Exchange the contents of one SmallVector with those of another one.
|
| |
| template<typename ElementType , std::size_t Extent> |
| span< const unsigned char,((Extent==dynamic_extent) ? dynamic_extent :sizeof(ElementType) *Extent)> | as_bytes (span< ElementType, Extent > s) noexcept |
| | Return a constant view to the byte representation of the elements of a given span.
|
| |
| template<class ElementType , size_t Extent, typename std::enable_if<!std::is_const< ElementType >::value, int >::type = 0> |
| span< unsigned char,((Extent==dynamic_extent) ? dynamic_extent :sizeof(ElementType) *Extent)> | as_writable_bytes (span< ElementType, Extent > s) noexcept |
| | Return a writable view to the byte representation of the elements of a given span.
|
| |
| template<std::size_t N, typename E , std::size_t S> |
| constexpr auto | get (span< E, S > s) -> decltype(s[N]) |
| | Return a reference to the Nth element of a given span.
|
| |
| template<typename ElementT > |
| auto | ElementAccessor () |
| | Return a mock element accessor for containers.
|
| |
| template<typename ResultT = statistics_result_type, typename ContainerT , typename ElementT = typename ContainerT::value_type, typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&), typename DataT = typename std::decay_t<std::result_of_t<Accessor(ElementT)>>, typename = std::enable_if_t<IsContainerLike<ContainerT>::value>> |
| auto | mean (ContainerT const &container, Accessor accessor=ElementAccessor< ElementT >()) -> ResultT |
| | Calculate the arithmetic mean value of all elements in a container.
|
| |
| template<typename ResultT = statistics_result_type, typename ContainerT , typename ElementT = typename ContainerT::value_type, typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&), typename DataT = typename std::decay_t<std::result_of_t<Accessor(ElementT)>>, typename = std::enable_if_t<IsContainerLike<ContainerT>::value>> |
| auto | rms (ContainerT const &container, Accessor accessor=ElementAccessor< ElementT >()) -> ResultT |
| | Calculate the root mean square of all elements in a container.
|
| |
| template<typename ResultT = statistics_result_type, typename ContainerT , typename ElementT = typename ContainerT::value_type, typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&), typename DataT = typename std::decay_t<std::result_of_t<Accessor(ElementT)>>, typename = std::enable_if_t<IsContainerLike<ContainerT>::value>> |
| auto | median (ContainerT const &container, Accessor accessor=ElementAccessor< ElementT >()) -> ResultT |
| | Find the median of all elements in a container.
|
| |
| template<typename ContainerT , typename ElementT = typename ContainerT::value_type, typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&), typename DataT = typename std::decay_t<std::result_of_t<Accessor(ElementT)>>, typename = std::enable_if_t<IsContainerLike<ContainerT>::value>> |
| auto | maximum (ContainerT const &container, Accessor accessor=ElementAccessor< ElementT >()) -> DataT |
| | Return the maximum element value in a container.
|
| |
| template<typename ContainerT , typename ElementT = typename ContainerT::value_type, typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&), typename DataT = typename std::decay_t<std::result_of_t<Accessor(ElementT)>>, typename = std::enable_if_t<IsContainerLike<ContainerT>::value>> |
| auto | minimum (ContainerT const &container, Accessor accessor=ElementAccessor< ElementT >()) -> DataT |
| | Return the minimum element value in a container.
|
| |
| template<typename ContainerT , typename ElementT = typename ContainerT::value_type, typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&), typename DataT = typename std::decay_t<std::result_of_t<Accessor(ElementT)>>, typename = std::enable_if_t<IsContainerLike<ContainerT>::value>> |
| auto | min_max (ContainerT const &container, Accessor accessor=ElementAccessor< ElementT >()) -> MinMax< DataT > |
| | Find the minimum and maximum element values in a container.
|
| |
| template<typename ContainerT , typename ElementT = typename ContainerT::value_type, typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&), typename DataT = typename std::decay_t<std::result_of_t<Accessor(ElementT)>>, typename = std::enable_if_t<IsContainerLike<ContainerT>::value>> |
| auto | remove_outliers (ContainerT &&cont, std::size_t outliers, Accessor accessor=ElementAccessor< ElementT >()) -> ContainerT & |
| | Remove elements that are far away from other elements.
|
| |
| template<typename ContainerT , typename ElementT = typename ContainerT::value_type, typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&), typename DataT = typename std::decay_t<std::result_of_t<Accessor(ElementT)>>, typename = std::enable_if_t<IsContainerLike<ContainerT>::value>> |
| auto | remove_outliers (ContainerT const &cont, std::size_t outliers, Accessor accessor=ElementAccessor< ElementT >()) -> std::vector< ElementT > |
| | This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.The original container is not modified.
|
| |
| template<typename ResultT = statistics_result_type, typename ContainerT , typename ElementT = typename ContainerT::value_type, typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&), typename DataT = typename std::decay_t<std::result_of_t<Accessor(ElementT)>>, typename = std::enable_if_t<IsContainerLike<ContainerT>::value>> |
| auto | standard_deviation (ContainerT const &container, Accessor accessor=ElementAccessor< ElementT >()) -> StandardDeviationMean< ResultT > |
| | Calculate the standard deviation of all elements in a container.
|
| |
| template<typename ResultT = statistics_result_type, typename ContainerT , typename ElementT = typename ContainerT::value_type, typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&), typename DataT = typename std::decay_t<std::result_of_t<Accessor(ElementT)>>, typename OpClosure , typename = std::enable_if_t<IsContainerLike<ContainerT>::value>> |
| auto | accumulate (ContainerT const &container, OpClosure op, Accessor accessor=ElementAccessor< ElementT >()) -> ResultT |
| | Calculate some aggregate value from all elements of a container.
|
| |
| template<typename ResultT = statistics_result_type, typename IteratorT , typename ElementT = std::decay_t<decltype(*std::declval<IteratorT>())>, typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&), typename DataT = std::decay_t<std::result_of_t<Accessor(ElementT)>>> |
| auto | mean (IteratorT const &begin, IteratorT const &end, Accessor accessor=ElementAccessor< ElementT >()) -> ResultT |
| | This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
| |
| template<typename ResultT = statistics_result_type, typename IteratorT , typename ElementT = std::decay_t<decltype(*std::declval<IteratorT>())>, typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&), typename DataT = std::decay_t<std::result_of_t<Accessor(ElementT)>>> |
| auto | rms (IteratorT const &begin, IteratorT const &end, Accessor accessor=ElementAccessor< ElementT >()) -> ResultT |
| | This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
| |
| template<typename ResultT = statistics_result_type, typename IteratorT , typename ElementT = std::decay_t<decltype(*std::declval<IteratorT>())>, typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&), typename DataT = std::decay_t<std::result_of_t<Accessor(ElementT)>>> |
| auto | median (IteratorT const &begin, IteratorT const &end, Accessor accessor=ElementAccessor< ElementT >()) -> ResultT |
| | This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
| |
| template<typename IteratorT , typename ElementT = std::decay_t<decltype(*std::declval<IteratorT>())>, typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&), typename DataT = std::decay_t<std::result_of_t<Accessor(ElementT)>>> |
| auto | maximum (IteratorT const &begin, IteratorT const &end, Accessor accessor=ElementAccessor< ElementT >()) -> DataT |
| | This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
| |
| template<typename IteratorT , typename ElementT = std::decay_t<decltype(*std::declval<IteratorT>())>, typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&), typename DataT = std::decay_t<std::result_of_t<Accessor(ElementT)>>> |
| auto | minimum (IteratorT const &begin, IteratorT const &end, Accessor accessor=ElementAccessor< ElementT >()) -> DataT |
| | This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
| |
| template<typename IteratorT , typename ElementT = std::decay_t<decltype(*std::declval<IteratorT>())>, typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&), typename DataT = std::decay_t<std::result_of_t<Accessor(ElementT)>>> |
| auto | min_max (IteratorT const &begin, IteratorT const &end, Accessor accessor=ElementAccessor< ElementT >()) -> MinMax< DataT > |
| | This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
| |
| template<typename IteratorT , typename ElementT = std::decay_t<decltype(*std::declval<IteratorT>())>, typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&), typename DataT = std::decay_t<std::result_of_t<Accessor(ElementT)>>> |
| auto | remove_outliers (IteratorT const &begin, IteratorT const &end, std::size_t outliers, Accessor accessor=ElementAccessor< ElementT >()) -> std::vector< ElementT > |
| | This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.The original container is not modified.
|
| |
| template<typename ResultT = statistics_result_type, typename IteratorT , typename ElementT = std::decay_t<decltype(*std::declval<IteratorT>())>, typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&), typename DataT = std::decay_t<std::result_of_t<Accessor(ElementT)>>> |
| auto | standard_deviation (IteratorT const &begin, IteratorT const &end, Accessor accessor=ElementAccessor< ElementT >()) -> StandardDeviationMean< ResultT > |
| | This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
| |
| template<typename ResultT = statistics_result_type, typename IteratorT , typename ElementT = std::decay_t<decltype(*std::declval<IteratorT>())>, typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&), typename DataT = std::decay_t<std::result_of_t<Accessor(ElementT)>>, typename OpClosure > |
| auto | accumulate (IteratorT const &begin, IteratorT const &end, OpClosure op, Accessor accessor=ElementAccessor< ElementT >()) -> ResultT |
| | This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
| |
| template<typename Integer , std::enable_if_t< std::is_integral< Integer >::value, bool > = true> |
| std::string | hex_string (Integer v) |
| | Return the hexadecimal ASCII representation of an integer value.
|
| |
| template<typename Iterator > |
| std::string | hex_string (Iterator begin, Iterator end, std::string_view separator="") |
| | Return the hexadecimal ASCII representation of a range of integer values.
|
| |
| template<typename Integer , size_t num_elements, std::enable_if_t< std::is_integral< Integer >::value, bool > = true> |
| std::string | hex_string (const Integer(&array)[num_elements], std::string_view separator="") |
| | Return the hexadecimal ASCII representation of an array with integer values.
|
| |
| template<typename Container , std::enable_if_t< IsContainerLike< Container >::value, bool > = true> |
| std::string | hex_string (const Container &container, std::string_view separator="") |
| | Return the hexadecimal ASCII representation of a container with integer values.
|
| |
| GUL_EXPORT std::string | null_safe_string (const char *char_ptr) |
| | Safely construct a std::string from a C string or a null pointer.
|
| |
| GUL_EXPORT std::string_view | null_safe_string_view (const char *char_ptr) |
| | Safely construct a string_view from a char pointer.
|
| |
| GUL_EXPORT std::string | repeat (std::string_view str, std::size_t n) |
| | Repeat a string N times.
|
| |
| GUL_EXPORT std::string | safe_string (const char *char_ptr, std::size_t length) |
| | Safely construct a std::string from a char pointer and a length.
|
| |
| GUL_EXPORT std::string_view | safe_string_view (const char *char_ptr, std::size_t length) |
| | Safely construct a string_view from a char pointer and a length.
|
| |
| constexpr bool | contains (std::string_view haystack, std::string_view needle) noexcept |
| | Determine whether a string contains another string.
|
| |
| constexpr bool | contains (std::string_view haystack, char needle) noexcept |
| | Determine whether a string contains a certain character.
|
| |
| constexpr bool | ends_with (std::string_view str, std::string_view suffix) noexcept |
| | Determine whether a string ends with another string.
|
| |
| constexpr bool | ends_with (std::string_view str, char c) noexcept |
| | Determine whether a string ends with a certain character.
|
| |
| constexpr bool | starts_with (std::string_view str, std::string_view prefix) noexcept |
| | Determine whether a string starts with another string.
|
| |
| constexpr bool | starts_with (std::string_view str, char c) noexcept |
| | Determine whether a string starts with a certain character.
|
| |
| constexpr bool | equals_nocase (std::string_view str1, std::string_view str2) noexcept |
| | Determine whether a string is equal to another one, making no distinction between upper and lower case ASCII characters.
|
| |
| constexpr bool | contains_nocase (std::string_view haystack, std::string_view needle) noexcept |
| | Determine whether a string contains another string.
|
| |
| constexpr bool | contains_nocase (std::string_view haystack, char needle) noexcept |
| | Determine whether a string contains a certain character.
|
| |
| constexpr bool | ends_with_nocase (std::string_view str, std::string_view suffix) noexcept |
| | Determine whether a string ends with another string.
|
| |
| constexpr bool | ends_with_nocase (std::string_view str, char c) noexcept |
| | Determine whether a string ends with a certain character.
|
| |
| constexpr bool | starts_with_nocase (std::string_view str, std::string_view prefix) noexcept |
| | Determine whether a string starts with another string.
|
| |
| constexpr bool | starts_with_nocase (std::string_view str, char c) noexcept |
| | Determine whether a string starts with a certain character.
|
| |
| std::shared_ptr< ThreadPool > | make_thread_pool (std::size_t num_threads, std::size_t capacity=ThreadPool::default_capacity) |
| | Create a thread pool with the desired number of threads and the specified capacity for queuing tasks.
|
| |
| std::chrono::steady_clock::time_point | tic () |
| | Return the current time as a std::chrono time_point.
|
| |
| template<class TimeUnitType = std::chrono::duration<double>> |
| auto | toc (std::chrono::steady_clock::time_point t0) |
| | Return the elapsed time in seconds (or a different unit) since the given time point.
|
| |
| template<class Rep , class Period > |
| bool | sleep (const std::chrono::duration< Rep, Period > &duration, const Trigger &trg) |
| | Sleep for at least the given time span, with the option of being woken up from another thread.
|
| |
| bool | sleep (double seconds, const Trigger &trg) |
| | Sleep for a given number of seconds, with the option of being woken up from another thread.
|
| |
| template<class Rep , class Period > |
| bool | sleep (const std::chrono::duration< Rep, Period > &duration) |
| | Sleep for a given time span.
|
| |
| bool | sleep (double seconds) |
| | Sleep for a given number of seconds.
|
| |
| template<typename NumberType > |
| constexpr std::enable_if_t< std::is_integral< NumberType >::value and std::is_unsigned< NumberType >::value, std::optional< NumberType > > | to_number (std::string_view str) noexcept |
| | Convert an ASCII std::string_view into a number.
|
| |
|
template<typename NumberType > |
| constexpr std::enable_if_t< std::is_integral< NumberType >::value and std::is_signed< NumberType >::value, std::optional< NumberType > > | to_number (std::string_view str) noexcept |
| |
|
template<typename NumberType > |
| constexpr std::enable_if_t< std::is_floating_point< NumberType >::value, std::optional< NumberType > > | to_number (std::string_view str) noexcept |
| |
|
template<> |
| constexpr std::optional< bool > | to_number< bool > (std::string_view str) noexcept |
| |
| template<typename StringContainer = std::vector<std::string>, typename ContainerInsertFct = void (*)(StringContainer&, std::string_view)> |
| StringContainer | tokenize (std::string_view str, std::string_view delimiters=default_whitespace_characters, ContainerInsertFct insert_fct=detail::emplace_back< StringContainer >) |
| | Split the given string into a vector of substrings (tokens) delimited by any of the characters in the delimiters string.
|
| |
| template<typename StringContainer = std::vector<std::string_view>, typename ContainerInsertFct = void (*)(StringContainer&, std::string_view)> |
| StringContainer | tokenize_sv (std::string_view str, std::string_view delimiters=default_whitespace_characters, ContainerInsertFct insert_fct=detail::emplace_back< StringContainer >) |
| | Split the given string into a vector of substrings (tokens) delimited by any of the characters in the delimiters string.
|
| |
| GUL_EXPORT std::string | trim (std::string_view str, std::string_view ws_chars=default_whitespace_characters) |
| | Trim leading and trailing whitespace (or a custom set of characters) from a string, returning a new std::string.
|
| |
| GUL_EXPORT std::string_view | trim_sv (std::string_view str, std::string_view ws_chars=default_whitespace_characters) |
| | Trim leading and trailing whitespace (or a custom set of characters) from a string, returning a view into the original string.
|
| |
| GUL_EXPORT std::string | trim_left (std::string_view str, std::string_view ws_chars=default_whitespace_characters) |
| | Trim leading whitespace (or a custom set of characters) from a string, returning a new std::string.
|
| |
| GUL_EXPORT std::string_view | trim_left_sv (std::string_view str, std::string_view ws_chars=default_whitespace_characters) |
| | Trim leading whitespace (or a custom set of characters) from a string, returning a view into the original string.
|
| |
| GUL_EXPORT std::string | trim_right (std::string_view str, std::string_view ws_chars=default_whitespace_characters) |
| | Trim trailing whitespace (or a custom set of characters) from a string, returning a new std::string.
|
| |
| GUL_EXPORT std::string_view | trim_right_sv (std::string_view str, std::string_view ws_chars=default_whitespace_characters) |
| | Trim trailing whitespace (or a custom set of characters) from a string, returning a view into the original string.
|
| |
| template<class T > |
| constexpr std::string_view | type_name () |
| | Generate a human readable string describing a type.
|
| |