gimo v0.1.0
Loading...
Searching...
No Matches
gimo::BasicAlgorithm< Traits, Action > Class Template Reference

The basic building block for every monadic operation. More...

#include <BasicAlgorithm.hpp>

+ Inheritance diagram for gimo::BasicAlgorithm< Traits, Action >:

Public Types

using traits_type = Traits
 
using action_type = Action
 

Public Member Functions

template<typename... Args>
requires std::constructible_from<Action, Args&&...>
constexpr BasicAlgorithm (Args &&... args) noexcept(std::is_nothrow_constructible_v< Action, Args &&... >)
 
template<typename Nullable, typename... Steps>
constexpr auto operator() (Nullable &&opt, Steps &&... steps) &
 
template<typename Nullable, typename... Steps>
constexpr auto operator() (Nullable &&opt, Steps &&... steps) const &
 
template<typename Nullable, typename... Steps>
constexpr auto operator() (Nullable &&opt, Steps &&... steps) &&
 
template<typename Nullable, typename... Steps>
constexpr auto operator() (Nullable &&opt, Steps &&... steps) const &&
 
template<typename Nullable, typename... Steps>
constexpr auto on_value (Nullable &&opt, Steps &&... steps) &
 
template<typename Nullable, typename... Steps>
constexpr auto on_value (Nullable &&opt, Steps &&... steps) const &
 
template<typename Nullable, typename... Steps>
constexpr auto on_value (Nullable &&opt, Steps &&... steps) &&
 
template<typename Nullable, typename... Steps>
constexpr auto on_value (Nullable &&opt, Steps &&... steps) const &&
 
template<typename Nullable, typename... Steps>
constexpr auto on_null (Nullable &&opt, Steps &&... steps) &
 
template<typename Nullable, typename... Steps>
constexpr auto on_null (Nullable &&opt, Steps &&... steps) const &
 
template<typename Nullable, typename... Steps>
constexpr auto on_null (Nullable &&opt, Steps &&... steps) &&
 
template<typename Nullable, typename... Steps>
constexpr auto on_null (Nullable &&opt, Steps &&... steps) const &&
 

Detailed Description

template<detail::unqualified Traits, detail::unqualified Action>
class gimo::BasicAlgorithm< Traits, Action >

The basic building block for every monadic operation.

Template Parameters
TraitsThe policy struct defining certain behavior.
ActionThe user-provided callable (e.g., lambda, function pointer).

This class wraps a user-provided callable (Action) and associates it with specific behavior traits that dictate how the action is applied to a Nullable input.

Member Typedef Documentation

◆ action_type

template<detail::unqualified Traits, detail::unqualified Action>
using gimo::BasicAlgorithm< Traits, Action >::action_type = Action

◆ traits_type

template<detail::unqualified Traits, detail::unqualified Action>
using gimo::BasicAlgorithm< Traits, Action >::traits_type = Traits

Constructor & Destructor Documentation

◆ BasicAlgorithm()

template<detail::unqualified Traits, detail::unqualified Action>
template<typename... Args>
requires std::constructible_from<Action, Args&&...>
gimo::BasicAlgorithm< Traits, Action >::BasicAlgorithm ( Args &&... args)
inlineexplicitnodiscardconstexprnoexcept

Member Function Documentation

◆ on_null() [1/4]

template<detail::unqualified Traits, detail::unqualified Action>
template<typename Nullable, typename... Steps>
auto gimo::BasicAlgorithm< Traits, Action >::on_null ( Nullable && opt,
Steps &&... steps ) &
inlinenodiscardconstexpr

◆ on_null() [2/4]

template<detail::unqualified Traits, detail::unqualified Action>
template<typename Nullable, typename... Steps>
auto gimo::BasicAlgorithm< Traits, Action >::on_null ( Nullable && opt,
Steps &&... steps ) &&
inlinenodiscardconstexpr

◆ on_null() [3/4]

template<detail::unqualified Traits, detail::unqualified Action>
template<typename Nullable, typename... Steps>
auto gimo::BasicAlgorithm< Traits, Action >::on_null ( Nullable && opt,
Steps &&... steps ) const &
inlinenodiscardconstexpr

◆ on_null() [4/4]

template<detail::unqualified Traits, detail::unqualified Action>
template<typename Nullable, typename... Steps>
auto gimo::BasicAlgorithm< Traits, Action >::on_null ( Nullable && opt,
Steps &&... steps ) const &&
inlinenodiscardconstexpr

◆ on_value() [1/4]

template<detail::unqualified Traits, detail::unqualified Action>
template<typename Nullable, typename... Steps>
auto gimo::BasicAlgorithm< Traits, Action >::on_value ( Nullable && opt,
Steps &&... steps ) &
inlinenodiscardconstexpr

◆ on_value() [2/4]

template<detail::unqualified Traits, detail::unqualified Action>
template<typename Nullable, typename... Steps>
auto gimo::BasicAlgorithm< Traits, Action >::on_value ( Nullable && opt,
Steps &&... steps ) &&
inlinenodiscardconstexpr

◆ on_value() [3/4]

template<detail::unqualified Traits, detail::unqualified Action>
template<typename Nullable, typename... Steps>
auto gimo::BasicAlgorithm< Traits, Action >::on_value ( Nullable && opt,
Steps &&... steps ) const &
inlinenodiscardconstexpr

◆ on_value() [4/4]

template<detail::unqualified Traits, detail::unqualified Action>
template<typename Nullable, typename... Steps>
auto gimo::BasicAlgorithm< Traits, Action >::on_value ( Nullable && opt,
Steps &&... steps ) const &&
inlinenodiscardconstexpr

◆ operator()() [1/4]

template<detail::unqualified Traits, detail::unqualified Action>
template<typename Nullable, typename... Steps>
auto gimo::BasicAlgorithm< Traits, Action >::operator() ( Nullable && opt,
Steps &&... steps ) &
inlinenodiscardconstexpr

◆ operator()() [2/4]

template<detail::unqualified Traits, detail::unqualified Action>
template<typename Nullable, typename... Steps>
auto gimo::BasicAlgorithm< Traits, Action >::operator() ( Nullable && opt,
Steps &&... steps ) &&
inlinenodiscardconstexpr

◆ operator()() [3/4]

template<detail::unqualified Traits, detail::unqualified Action>
template<typename Nullable, typename... Steps>
auto gimo::BasicAlgorithm< Traits, Action >::operator() ( Nullable && opt,
Steps &&... steps ) const &
inlinenodiscardconstexpr

◆ operator()() [4/4]

template<detail::unqualified Traits, detail::unqualified Action>
template<typename Nullable, typename... Steps>
auto gimo::BasicAlgorithm< Traits, Action >::operator() ( Nullable && opt,
Steps &&... steps ) const &&
inlinenodiscardconstexpr

The documentation for this class was generated from the following file: