Kiwaku 0.1-beta
Containers Well Made
 
Loading...
Searching...
No Matches
kwk Namespace Reference

Main KIWAKU namespace. More...

Detailed Description

Main KIWAKU namespace.

KIWAKU - Containers Well Made Copyright : KIWAKU Project Contributors SPDX-License-Identifier: BSL-1.0

Namespaces

namespace  __
 
namespace  tags
 

Classes

struct  any_allocator
 Opaque allocator type. More...
 
struct  heap_allocator
 Malloc based allocator. More...
 
struct  is_dynamic_extent
 Checks if the Nth extent of a shape descriptor is only known at runtime. More...
 
struct  is_joker
 Checks a type is equivalent to kwk::joker. More...
 
struct  is_static_extent
 Checks if the Nth extent of a shape descriptor is known at compile-time. More...
 
struct  joker
 Type of the kwk::_ object. More...
 
struct  shape
 Fixed order shape with mixed size capability. More...
 
struct  stride
 Fixed order stride with mixed size capability. More...
 
struct  table
 Owning, contiguous multi-dimensional container. More...
 
struct  unsupported_call
 Overloading error reporting helper. More...
 
struct  view
 Non-owning, contiguous multi-dimensional container. More...
 

Concepts

concept  callable
 KWK callable
 
concept  deferred_callable
 KWK deferred callable
 
concept  tag_invocable
 Type supporting the tag_invoke protocol.
 

Typedefs

template<typename... Settings>
using make_table_t = table< __::builder< rbr::settings(table_, Settings{}...)> >
 Type helper.
 
template<typename... Settings>
using make_view_t = view< __::builder< rbr::settings(view_, Settings{}...)> >
 Type helper.
 
template<typename Tag , typename... Args>
using tag_invoke_result = std::invoke_result_t< decltype(kwk::tag_invoke), Tag, Args... >
 Compute the return type of a kwk::tag_invoke call.
 
template<auto & Func>
using tag_of = std::decay_t< decltype(Func)>
 Compute the type of an instance of an KIWAKU Callable Object.
 

Functions

auto allocate (any_allocator &a, std::size_t n)
 Allocates data from an opaque allocator instance.
 
void * allocate (heap_allocator const &, std::size_t n) noexcept
 Allocates data on the heap.
 
template<auto... D>
constexpr auto as_stride (shape< D... > s) noexcept
 
template<std::int32_t N, auto... D>
constexpr auto compress (shape< D... > const &) noexcept
 Compress a kwk::shape to a given order.
 
template<std::int32_t N, auto... D>
requires (N>0 && N<=sizeof...(D))
constexpr auto compress (shape< D... > const &s) noexcept
 Compress a kwk::shape to a given order.
 
template<std::integral Idx, auto... Desc>
constexpr auto coordinates (Idx idx, shape< Desc... > const shp) noexcept
 Computes a tuple of coordinates from a linear index and a shape.
 
void deallocate (any_allocator &a, void *ptr)
 Deallocates data from an opaque allocator instance.
 
void deallocate (heap_allocator const &, void *ptr) noexcept
 Deallocates data on the heap.
 
template<typename O , typename R >
 end_t (O, R) -> end_t< O, R >
 Deduction guide.
 
template<typename Func , concepts::container C0, concepts::container... Cs>
constexpr auto for_each (Func &&f, C0 &&c0, Cs &&... cs)
 Simple walkthrough over all elements of a container.
 
template<typename Func , auto... S>
constexpr auto for_each (Func &&f, shape< S... > const &shp)
 Simple walkthrough over all possible indexes.
 
template<typename Context , typename Func , concepts::container Container>
constexpr auto for_each_index (Context &ctx, Func &&f, Container &&c)
 Simple walkthrough over all elements of a container and their coordinates.
 
template<auto... S, kwk::concepts::range Indexes>
requires ( !kumi::sized_product_type<Indexes,shape<S...>::static_order> )
constexpr auto linear_index (shape< S... > const &sh, Indexes const &indexes) noexcept
 Computes a linear index from a range of N indexes.
 
template<auto... S, std::integral... Index>
constexpr auto linear_index (shape< S... > sh, Index... idx) noexcept
 Computes a linear index from a order N list of indexes.
 
template<auto... S, kumi::sized_product_type< shape< S... >::static_order > Indexes>
constexpr auto linear_index (shape< S... > sh, Indexes idx) noexcept
 Computes a linear index from a tuple of N indexes.
 
template<int... , concepts::extent... D>
constexpr auto of_size (D... d)
 Generates a kwk::shape from a list of Extent.
 
template<std::integral SizeType, int... , concepts::extent... D>
constexpr auto of_size (D... d)
 Generates a kwk::shape from a list of Extent.
 
template<int... , kumi::product_type T>
constexpr auto of_size (T const &t)
 Generates a kwk::shape from a tuple of Extent.
 
template<typename SizeType , int... , kumi::product_type T>
constexpr auto of_size (T const &t)
 Generates a kwk::shape from a tuple of Extent.
 
template<char... c>
constexpr auto operator""_c () noexcept
 User-defined literal suffix for compile-time constant.
 
template<concepts::extent... T>
 shape (T...) -> shape< to_descriptor(T{})... >
 Deduction guide for kwk::shape.
 
template<concepts::extent... T>
 stride (T...) -> stride< to_descriptor(T{})... >
 Deduction guide for kwk::stride.
 
template<concepts::extent... D>
constexpr auto with_strides (D... d) noexcept
 Generates a kwk::stride from a list of stride value or joker.
 
Deduction guides
template<rbr::concepts::option... O>
 table (O const &...) -> table< __::builder< rbr::settings(table_, O{}...)> >
 This deduction guide is provided for kwk::table to allow deduction from a list of options.
 
template<rbr::concepts::option... O>
 table (rbr::settings< O... > const &) -> table< __::builder< rbr::settings(table_, O{}...)> >
 This deduction guide is provided for kwk::table to allow deduction from another table's settings.
 
template<concepts::container C>
 table (C const &) -> table< __::builder< C::archetype(table_)> >
 This deduction guide is provided for kwk::table to allow deduction from another container.
 
template<rbr::concepts::option... O>
 view (O const &...) -> view< __::builder< rbr::settings(view_, O{}...)> >
 This deduction guide is provided for kwk::view to allow deduction from a list of options.
 
template<rbr::concepts::option... O>
 view (rbr::settings< O... > const &) -> view< __::builder< rbr::settings(view_, O{}...)> >
 This deduction guide is provided for kwk::view to allow deduction from another view's settings.
 
template<concepts::container C>
 view (C const &) -> view< __::builder< C::archetype(view_)> >
 This deduction guide is provided for kwk::view to allow deduction from another container.
 

Variables

constexpr joker _ = {}
 Joker value.
 
constexpr __::allocator_ allocator = {}
 Allocator setting for kwk::table.
 
template<std::int32_t N>
constexpr __::axis_< N > along = {}
 Axis specifier for indexed axis.
 
template<typename T >
constexpr type< T > as {}
 Type setting for kwk::table.
 
template<rbr::literals::str ID>
constexpr __::axis_< ID > axis = {}
 Axis specifier for named axis.
 
constexpr __::category_ category = {}
 Category setting discriminating KIWAKU containers.
 
constexpr auto channel = axis<"channel">
 Predefined axis for channel.
 
constexpr auto depth = axis<"depth">
 Predefined axis for depth.
 
constexpr end_t end = {fixed<0>, ratio{fixed<1>,fixed<1>}}
 Object representing a whole dimension in slicing.
 
template<auto N>
constexpr auto fixed = constant<N>{}
 Provides a short-cut to define a std::integral_constant value from a literal integer.
 
constexpr __::floor_ floor = {}
 Round-to-floor interpolation strategy.
 
constexpr auto height = axis<"height">
 Predefined axis for height.
 
constexpr auto int16 = as<std::int16_t>
 Pre-defined type settings for std::int16_t.
 
constexpr auto int32 = as<std::int32_t>
 Pre-defined type settings for std::int32_t.
 
constexpr auto int64 = as<std::int64_t>
 Pre-defined type settings for std::int64_t.
 
constexpr auto int8 = as<std::int8_t>
 Pre-defined type settings for std::int8_t.
 
constexpr __::label_ label = {}
 Label setting for kwk::table and kwk::view.
 
constexpr __::linear_ linear = {}
 Linear interpolation strategy.
 
constexpr auto real32 = as<float>
 Pre-defined type settings for float.
 
constexpr auto real64 = as<double>
 Pre-defined type settings for double.
 
constexpr __::size_ size = {}
 Size setting for kwk::table and kwk::view.
 
constexpr __::source_ source = {}
 Data source setting for kwk::table and kwk::view.
 
constexpr __::strides_ strides = {}
 Stride setting for kwk::table and kwk::view.
 
constexpr __::table_ table_ = {}
 kwk::table category setting
 
constexpr auto uint16 = as<std::uint16_t>
 Pre-defined type settings for std::uint16_t.
 
constexpr auto uint32 = as<std::uint32_t>
 Pre-defined type settings for std::uint32_t.
 
constexpr auto uint64 = as<std::uint64_t>
 Pre-defined type settings for std::uint64_t.
 
constexpr auto uint8 = as<std::uint8_t>
 Pre-defined type settings for std::uint8_t.
 
constexpr auto unreachable = rbr::flag(__::unreachable_{})
 Data reachability option.
 
constexpr __::view_ view_ = {}
 kwk::view category setting
 
constexpr auto width = axis<"width">
 Predefined axis for width.