KUMI v3.1.0
Exquisite Epidote
Loading...
Searching...
No Matches
Helper Types and Functions

Tools for interacting with kumi::product_type. More...

Classes

class  kumi::boolean_and
 A type representing the logical and monoid and it's associated identity. The identity of the boolean_and is true. More...
class  kumi::boolean_or
 A type representing the logical or monoid and it's associated identity. The identity of boolean_or is false. More...
class  kumi::boolean_xor
 A type representing the logical xor monoid and it's associated identity. The identity of boolean_xor is false. More...
class  kumi::builder< T >
 Helper structure to build the correct output product type based on the given template parameter. If the provided product type is a not a record_type the builder will output a tuple otherwise a record. One can specialize the builder for it's own type matching the product type semantic. More...
class  kumi::numeric_add
 A type representing the addition monoid with it's associated identity. The identity of the addition is 0. More...
class  kumi::numeric_prod
 A type representing the multiplication monoid with it's associated identity. The identity of the multiplication is 1. More...
class  kumi::projection_map< V >
 A stateless, compile-time schema for product type transformation. More...

Functions

auto as_streamable (auto e)
 Provides an extension point as_streamable in order to output types with no stream operator defined.
template<kumi_implementation_defined auto Name, typename T>
decltype(auto) constexpr capture_field (T &&t) noexcept
 Creates a field from a given value keeping the qualifiers.
template<typename U, typename T>
decltype(auto) constexpr field_cast (T &&t) noexcept
 Casts the provided value to the target type using static_cast.
template<typename T>
constexpr decltype(auto) kumi::field_value_of (T &&t) noexcept
 Extracts the value from a kumi::concepts::field or returns the parameter.
template<concepts::identifier Id, concepts::product_type T>
consteval auto kumi::get_index_of_field ()
 Helper to retrive the index of a type in a product type by it s identifier.
template<typename U, concepts::product_type T>
consteval auto kumi::get_index_of_type ()
 Helper to retrive the index of a type in a product type by it s type.
template<typename T>
consteval auto kumi::identifier_of () noexcept
 Extracts the identifiers from a kumi::concepts::field or returns the parameter.
template<concepts::identifier... Ts>
consteval auto kumi::identifiers (Ts... ts) noexcept
 Creates a kumi::projection_map object, deducing the target type from the types of arguments.
template<concepts::index... Ts>
consteval auto kumi::indexes (Ts... ts) noexcept
 Creates a kumi::projection_map object, deducing the target type from the types of arguments.
template<typename C, typename... Ts>
requires (std::is_invocable<C, Ts...>::value)
constexpr decltype(auto) kumi::invoke (C &&c, Ts &&... ts) noexcept(std::is_nothrow_invocable< C, Ts... >::value)
 Invoke the Callable object c with a pack of arguments.
template<typename R, typename C, typename... Ts>
requires (std::is_invocable_r<R, C, Ts...>::value)
constexpr R kumi::invoke_r (C &&c, Ts &&... ts) noexcept(std::is_nothrow_invocable_r< R, C, Ts... >::value)
 Invoke the Callable object c with a pack of arguments with return type R.
template<typename T>
consteval str kumi::label_of () noexcept
 Extracts the label from a kumi::concepts::field or returns the parameter.
template<std::convertible_to< std::size_t > auto... vs>
consteval auto kumi::make_indexes () noexcept
 Creates a kumi::projection_map object, deducing the target type from the types of arguments.
template<concepts::product_type T>
constexpr auto kumi::members_of (as< T >) noexcept
 Extracts the identifiers of the fields of a product type.
template<char... c>
constexpr auto kumi::operator""_c () noexcept
 Forms a integral constant literal of the desired value.
template<kumi::str ID>
constexpr auto kumi::operator""_id () noexcept
 Forms a constant string literal of the desired value.
template<kumi::str ID>
constexpr auto kumi::operator""_l () noexcept
 Forms a constant string literal of the desired value.
template<template< class > class Pred>
constexpr auto kumi::predicate () noexcept
 Convert a unary template meta-program in a running predicate.
template<concepts::projection... Ts>
KUMI_CUDA kumi::projection_map (Ts...) -> projection_map< Ts... >
 kumi::indexes_t deduction guide
kumi::str constexpr to_str (auto e)
 Provides an extension point to_str in order to output types with no textual representation defined.
template<concepts::product_type T>
constexpr auto kumi::values_of (T &&t) noexcept
 Extracts the values of the fields of a product type.

Friends

template<typename CharT, typename Traits>
std::basic_ostream< CharT, Traits > & operator<< (std::basic_ostream< CharT, Traits > &os, field const &w) noexcept
 Inserts a kumi::field in an output stream.
template<typename CharT, typename Traits>
std::basic_ostream< CharT, Traits > & operator<< (std::basic_ostream< CharT, Traits > &os, field const &w) noexcept
 Inserts a kumi::field in an output stream.

Variables

constexpr boolean_and kumi::function::bit_and {}
 Forms a binary monoid callable that can be used in kumi::algoritm. It represents the logical and operation.
constexpr boolean_or kumi::function::bit_or {}
 Forms a binary monoid callable that can be used in kumi::algoritm. It represents the logical or operation.
constexpr boolean_xor kumi::function::bit_xor {}
 Forms a binary monoid callable that can be used in kumi::algoritm. It represents the logical xor operation.
template<template< class > typename Traits>
constexpr traits_check< Traits > kumi::if_ = {}
 Option specifying a traits that type should verify for being used as a identifier value.
template<std::size_t N>
constexpr index_t< N > const kumi::index = {}
 Inline integral constant value for kumi::index_t.
template<str Label>
constexpr label_t< Label > const kumi::label = {}
 Inline literal constant value for kumi::label_t.
constexpr numeric_prod kumi::function::multiplies {}
 Forms a binary monoid callable that can be used in kumi::algoritm. It represents the multiplication.
constexpr unit kumi::none = {}
 Inline constant representing a kumi::unit.
template<typename T>
constexpr only_t< T > kumi::only = {}
 Option specifying the single type a identifier will accept.
constexpr numeric_add kumi::function::plus {}
 Forms a binary monoid callable that can be used in kumi::algoritm. It represents the addition.