![]() |
mutable
A Database System for Research and Fast Prototyping
|
#include <algorithm>#include <cctype>#include <chrono>#include <cmath>#include <cstring>#include <ctime>#include <filesystem>#include <initializer_list>#include <iomanip>#include <iostream>#include <limits>#include <memory>#include <mutable/mutable-config.hpp>#include <mutable/util/concepts.hpp>#include <mutable/util/exception.hpp>#include <mutable/util/macro.hpp>#include <regex>#include <sstream>#include <type_traits>#include <typeinfo>#include <unistd.h>#include <variant>Go to the source code of this file.
Data Structures | |
| struct | m::StrHash |
| Computes the FNV-1a 64-bit hash of a cstring. More... | |
| struct | m::StrEqual |
| Compares two cstrings for equality. More... | |
| struct | m::StrEqualWithNull |
| Compares two cstrings for equality. More... | |
| struct | m::PairHash< T1, T2, H1, H2 > |
| Computes the XOR-hash for a pair. More... | |
| struct | m::overloaded< Ts > |
| struct | m::put_tm |
| struct | m::get_tm |
| struct | m::put_timepoint< Clock, Duration > |
| struct | m::Concat< std::variant< Args0... >, Args1... > |
| struct | m::is_streamable< S, T, typename > |
| struct | m::is_streamable< S, T, std::void_t< decltype(std::declval< S & >()<< std::declval< T >())> > |
| struct | m::lazy_construct< Factory > |
Namespaces | |
| namespace | m |
| |
Functions | |
| bool | m::streq (const char *first, const char *second) |
| bool | m::strneq (const char *first, const char *second, std::size_t n) |
| std::string | m::replace_all (std::string str, const std::string &from, const std::string &to) |
| uint64_t | m::FNV1a (const char *c_str) |
| uint64_t | m::FNV1a (const char *c_str, std::size_t len) |
| template<typename T > requires unsigned_integral<T> | |
| M_EXPORT constexpr bool | m::is_pow_2 (T n) |
| template<typename T , typename... Us> | |
| T & | m::get_as (std::variant< Us... > &v) |
| template<typename T , typename... Us> | |
| const T & | m::get_as (const std::variant< Us... > &v) |
| std::string | m::escape (char c) |
| std::string M_EXPORT | m::escape (const std::string &str, char esc='\\', char quote='"') |
| std::string M_EXPORT | m::unescape (const std::string &str, char esc='\\', char quote='"') |
| std::string | m::quote (const std::string &str) |
| std::string | m::unquote (const std::string &str, char quote='"') |
| std::string | m::interpret (const std::string &str, char esc='\\', char quote='"') |
| std::string M_EXPORT | m::html_escape (std::string str) |
| Escapes special characters in a string to be printable in HTML documents. | |
| std::regex | m::pattern_to_regex (const char *pattern, const bool optimize=false, const char escape_char='\\') |
| Transforms a SQL-style LIKE pattern into a std::regex. | |
| bool M_EXPORT | m::like (const std::string &str, const std::string &pattern, const char escape_char='\\') |
Compares a SQL-style LIKE pattern with the given std::string. | |
| template<typename H , typename N > | |
| bool M_EXPORT | m::contains (const H &haystack, const N &needle) |
| Checks whether haystack contains needle. | |
| template<typename T , typename U > | |
| bool M_EXPORT | m::equal (const T &first, const U &second) |
| Checks whether first and second are equal considering permutations. | |
| template<typename Container , typename Set > | |
| bool M_EXPORT | m::subset (const Container &subset, const Set &set) |
Checks whether subset is a subset of set. | |
| template<typename Container , typename Set > | |
| bool M_EXPORT | m::intersect (const Container &first, const Set &second) |
Checks whether first and second intersect. | |
| template<integral T, unsigned_integral U> | |
| T M_EXPORT | m::powi (const T base, const U exp) |
| Power function for integral types. | |
| template<typename T > | |
| void M_EXPORT | m::setbit (T *bytes, bool value, uint32_t n) |
| template<typename T , typename... Args> | |
| std::ostream &M_EXPORT | m::operator<< (std::ostream &out, const std::variant< T, Args... > value) |
| template<class... Ts> | |
| m::overloaded (Ts...) -> overloaded< Ts... > | |
| uint64_t | m::murmur3_64 (uint64_t v) |
| This function implements the 64-bit finalizer of Murmur3_x64 by Austin Appleby, available at https://github.com/aappleby/smhasher/blob/master/src/MurmurHash3.cpp . | |
| bool | m::is_oct (int c) |
| bool | m::is_dec (int c) |
| bool | m::is_hex (int c) |
| bool | m::is_lower (int c) |
| bool | m::is_upper (int c) |
| bool | m::is_alpha (int c) |
| bool | m::is_alnum (int c) |
| std::filesystem::path | m::get_home_path () |
| Returns path of the user's home directory. | |
| bool | m::isspace (const char *s, std::size_t len) |
| Returns true iff the character sequence only consists of white spaces. | |
| bool | m::isspace (const char *s) |
| void M_EXPORT | m::exec (const char *executable, std::initializer_list< const char * > args) |
| template<typename T , typename U > | |
| auto M_EXPORT | m::add_wo_overflow (T left, U right) |
| template<typename N0 , typename N1 > | |
| auto M_EXPORT | m::sum_wo_overflow (N0 n0, N1 n1) |
| template<typename N0 , typename N1 , typename... Numbers> | |
| auto M_EXPORT | m::sum_wo_overflow (N0 n0, N1 n1, Numbers... numbers) |
| Returns the sum of the given parameters. | |
| template<typename T , typename U > | |
| auto M_EXPORT | m::mul_wo_overflow (T left, U right) |
| template<typename N0 , typename N1 > | |
| auto M_EXPORT | m::prod_wo_overflow (N0 n0, N1 n1) |
| template<typename N0 , typename N1 , typename... Numbers> | |
| auto M_EXPORT | m::prod_wo_overflow (N0 n0, N1 n1, Numbers... numbers) |
| Returns the product of the given parameters. | |
| const char * | m::strdupn (const char *str) |
A wrapper around strdup() that permits nullptr. | |
| std::size_t M_EXPORT | m::get_pagesize () |
| Returns the page size of the system. | |
| std::size_t | m::Is_Page_Aligned (std::size_t n) |
Returns true iff n is a integral multiple of the page size (in bytes). | |
| std::size_t | m::Ceil_To_Next_Page (std::size_t n) |
Returns the smallest integral multiple of the page size (in bytes) greater than or equals to n. | |
| uint64_t | m::sequence_number (double x) |
This function assigns an integral sequence number to each double that is not NaN, such that if y = std::nextafter(x, INF) then sequence_number(y) = sequence_number(x) + 1. | |
| uint32_t | m::sequence_number (float x) |
This function assigns an integral sequence number to each float that is not NaN, such that if y = std::nextafter(x, INF) then sequence_number(y) = sequence_number(x) + 1. | |
| template<typename T > | |
| constexpr bool M_EXPORT | m::is_range_wide_enough (T a, T b, std::size_t n) |
Checks whether the range [a, b] contains at least n distinct values. | |
| template<typename T > | |
| std::enable_if_t< std::is_integral_v< T >, unsigned long long > M_EXPORT | m::n_choose_k_approx (T n, T k) |
| Approximates n! using the gamma function. | |
| float | m::fast_reciprocal_sqrtf (const float n) |
| Fast reciprocal square root, that became famous in Quake 3. | |
| float | m::fast_reciprocal_sqrt (const float n) |
| double | m::fast_reciprocal_sqrtd (const double n) |
| Fast reciprocal square root, that became famous in Quake 3. | |
| double | m::fast_reciprocal_sqrt (const double n) |
| float | m::fast_sqrtf (float n) |
| float | m::fast_sqrt (float n) |
| double | m::fast_sqrtd (double n) |
| double | m::fast_sqrt (double n) |