|  | 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 subsetis a subset ofset. | |
| template<typename Container , typename Set > | |
| bool M_EXPORT | m::intersect (const Container &first, const Set &second) | 
| Checks whether firstandsecondintersect. | |
| 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 permitsnullptr. | |
| 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 trueiffnis 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 doublethat is not NaN, such that ify = std::nextafter(x, INF)thensequence_number(y)=sequence_number(x) + 1. | |
| uint32_t | m::sequence_number (float x) | 
| This function assigns an integral sequence number to each floatthat is not NaN, such that ify = std::nextafter(x, INF)thensequence_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 leastndistinct 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) |