libkazv
Loading...
Searching...
No Matches
immer-utils.hpp File Reference
#include "libkazv-config.hpp"
#include <tuple>
#include <optional>
Include dependency graph for immer-utils.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  Kazv
 

Functions

template<class T >
auto Kazv::getIn (T &&item)
 
template<class ImmerT , class K , class ... Keys>
auto Kazv::getIn (ImmerT &&container, K &&key, Keys &&...keys)
 
template<class T >
auto Kazv::setIn (T, T newVal)
 
template<class ImmerT , class K >
auto Kazv::setIn (ImmerT container, std::decay_t< decltype(getIn(std::declval< ImmerT >(), std::declval< K >()))> newVal, K &&key) -> std::decay_t< ImmerT >
 
template<class ImmerT , class K , class ... Keys>
auto Kazv::setIn (ImmerT container, std::decay_t< decltype(getIn(std::declval< ImmerT >(), std::declval< K >(), std::declval< Keys >()...))> newVal, K &&key, Keys &&...keys) -> std::decay_t< ImmerT >
 
template<class T , class Func >
auto Kazv::updateIn (T oldVal, Func func) -> T
 
template<class ImmerT , class Func , class ... Keys>
auto Kazv::updateIn (ImmerT container, Func func, Keys &&...keys) -> ImmerT
 
template<class ImmerT , class Func , class ValueT = typename ImmerT::value_type>
auto Kazv::withBox (ImmerT &box, Func &&func) -> std::decay_t< std::invoke_result_t< Func &&, ValueT & > >
 Do something with the box, updating its value, then return the return value of the function.
 
template<class ImmerT , class Key , class Func , class BoxT = typename ImmerT::mapped_type, class ValueT = typename BoxT::value_type>
auto Kazv::withMapBox (ImmerT &map, Key &&k, Func &&func) -> std::decay_t< std::invoke_result_t< Func &&, ValueT & > >