atria::funken Namespace Reference

Provides a experimental library for writing epocal and functional data-models. More...

Classes

class  inoutput
 Provides access to reading and writing values of type T. More...
 
class  input
 Provides access to reading values of type T. More...
 
struct  no_value_error
 Raised by the view when it produces no value yet. More...
 
class  output
 Provides access to writing values of type T. More...
 
class  sensor
 
class  state
 
struct  structure
 

Functions

template<typename... RootValueTs>
void commit (RootValueTs &&...roots)
 
template<typename T >
auto declval_ () -> typename std::add_rvalue_reference< T >::type
 
 ABL_CONCEPT_SPEC (In_value)
 Concept for objects that provide values via a getter. More...
 
 ABL_CONCEPT_SPEC (Out_value)
 Concept for objects that provide values via a setter. More...
 
 ABL_CONCEPT_SPEC (Inout_value)
 Concept for objects that meet boot In_value and Out_value. More...
 
 ABL_CONCEPT_SPEC (Root_value)
 Concept for values that can be commited. More...
 
template<typename InT >
auto in (InT &&object) -> estd::enable_if_t< (In_value< InT >()), detail::input_impl< detail::signal_type_t< InT > > >
 Creates an in from another in value. More...
 
template<typename InoutT >
auto inout (InoutT &&object) -> estd::enable_if_t< (Inout_value< InoutT >()), detail::inoutput_impl< detail::signal_type_t< InoutT > > >
 Creates an inout from another inout value. More...
 
template<typename OutT >
auto out (OutT &&object) -> estd::enable_if_t< (Out_value< OutT >()), detail::output_impl< detail::signal_type_t< OutT > > >
 Creates an out from another out value. More...
 
template<typename SensorFnT >
sensor< SensorFnT > make_sensor (SensorFnT fn)
 
template<typename T >
state< T > make_state (T value)
 
template<typename T >
bool operator== (const structure< T > &a, const structure< T > &b)
 
template<typename T >
bool operator< (const structure< T > &a, const structure< T > &b)
 
template<typename T >
auto operator<< (std::ostream &os, const T &x) -> estd::enable_if_t< std::is_convertible< T &, structure< T > & >::value, std::ostream & >
 
template<typename T >
auto modified (T &) -> estd::enable_if_t<!std::is_convertible< T &, structure< T > & >::value >
 Call this on an structure value to indicate that is has indeed changed, invalidating its cached values. More...
 
template<typename T >
void modified (structure< T > &x)
 
template<typename InputValueT , typename CallbackT >
auto watch (InputValueT &&value, CallbackT &&callback) -> decltype( detail::access::watchers(std::forward< InputValueT >(value)) .connect(std::forward< CallbackT >(callback)))
 
template<typename Xform , typename... InTs>
auto xformed (Xform &&xform, InTs &&...ins) -> estd::enable_if_t< meta::all(In_value< InTs >()...), detail::xformed_input< typename decltype( detail::make_xform_down_signal( xform, detail::access::signal(ins)...) )::element_type > >
 Returns a new in formed by applying a transducer xform on the successive values of the in. More...
 
template<typename Xform , typename Xform2 , typename... InoutTs>
auto xformed (Xform &&xform, Xform2 &&xform2, InoutTs &&...ins) -> estd::enable_if_t< (!In_value< Xform2 >()&&meta::all(Inout_value< InoutTs >()...)), detail::xformed_inoutput< typename decltype( detail::make_xform_up_down_signal( xform, xform2, detail::access::signal(ins)...) )::element_type > >
 
template<typename KeyT >
auto xat (KeyT &&key) -> xform::transducer_impl< detail::at_rf_gen, estd::decay_t< KeyT > >
 Transducer that projects the key key from containers with a standard-style at() method. More...
 
template<typename KeyT >
auto uat (KeyT &&key) -> detail::at_updater< estd::decay_t< KeyT > >
 Update function that updates the key in a container with a standard-style at() method. More...
 
template<typename KeyT , typename... Ins>
auto atted (KeyT &&k, Ins &&...ins) -> estd::enable_if_t< meta::all(In_value< Ins >()&&!Out_value< Ins >()...), decltype(xformed(xat(k), ins...)) >
 Returns xformed version of the ins using xat. More...
 
template<typename AttrPtrT >
auto get_attr (AttrPtrT p) -> detail::get_attr_fn< AttrPtrT >
 Returns a unary function that dereferences the given pointer to member to the applied objects. More...
 
template<typename AttrPtrT >
auto set_attr (AttrPtrT p) -> detail::set_attr_fn< AttrPtrT >
 Returns a update function that uses the given pointer to member. More...
 
template<typename AttrPtrT , typename... Ins>
auto attred (AttrPtrT attr, Ins &&...ins) -> estd::enable_if_t< meta::all(In_value< Ins >()&&!Out_value< Ins >()...), decltype(xformed(xform::map(get_attr(attr)), ins...)) >
 Given a pointer to member, returns a xformed version of the ins accessed through the member. More...
 

Detailed Description

Provides a experimental library for writing epocal and functional data-models.

Function Documentation

atria::funken::ABL_CONCEPT_SPEC ( In_value  )

Concept for objects that provide values via a getter.

Definition at line 48 of file concepts.hpp.

atria::funken::ABL_CONCEPT_SPEC ( Out_value  )

Concept for objects that provide values via a setter.

Definition at line 61 of file concepts.hpp.

atria::funken::ABL_CONCEPT_SPEC ( Inout_value  )

Concept for objects that meet boot In_value and Out_value.

See also
In_value
Out_value

Definition at line 76 of file concepts.hpp.

atria::funken::ABL_CONCEPT_SPEC ( Root_value  )

Concept for values that can be commited.

Definition at line 88 of file concepts.hpp.

auto atted ( KeyT &&  k,
Ins &&...  ins 
) -> estd::enable_if_t< meta::all(In_value<Ins>() && !Out_value<Ins>()...), decltype(xformed(xat(k), ins...)) >

Returns xformed version of the ins using xat.

If the ins are also outs, it is updated with uat.

See also
xat
uat

Definition at line 190 of file xformed.hpp.

auto attred ( AttrPtrT  attr,
Ins &&...  ins 
) -> estd::enable_if_t< meta::all(In_value<Ins>() && !Out_value<Ins>()...), decltype(xformed(xform::map(get_attr(attr)), ins...)) >

Given a pointer to member, returns a xformed version of the ins accessed through the member.

If the ins are also outs, the xformed version is an inout.

Definition at line 260 of file xformed.hpp.

auto atria::funken::get_attr ( AttrPtrT  p) -> detail::get_attr_fn<AttrPtrT>

Returns a unary function that dereferences the given pointer to member to the applied objects.

Definition at line 245 of file xformed.hpp.

auto atria::funken::in ( InT &&  object) -> estd::enable_if_t< (In_value<InT>()), detail::input_impl<detail::signal_type_t<InT> > >

Creates an in from another in value.

See also
input<T>

Definition at line 103 of file in.hpp.

auto atria::funken::inout ( InoutT &&  object) -> estd::enable_if_t< (Inout_value<InoutT>()), detail::inoutput_impl<detail::signal_type_t<InoutT> > >

Creates an inout from another inout value.

See also
inoutput<T>

Definition at line 107 of file inout.hpp.

auto atria::funken::modified ( T &  ) -> estd::enable_if_t<!std::is_convertible<T&, structure<T>& >::value>

Call this on an structure value to indicate that is has indeed changed, invalidating its cached values.

Definition at line 160 of file structure.hpp.

auto atria::funken::out ( OutT &&  object) -> estd::enable_if_t< (Out_value<OutT>()), detail::output_impl<detail::signal_type_t<OutT> > >

Creates an out from another out value.

See also
output<T>

Definition at line 102 of file out.hpp.

auto atria::funken::set_attr ( AttrPtrT  p) -> detail::set_attr_fn<AttrPtrT>

Returns a update function that uses the given pointer to member.

See also
update

Definition at line 252 of file xformed.hpp.

auto atria::funken::uat ( KeyT &&  key) -> detail::at_updater<estd::decay_t<KeyT> >

Update function that updates the key in a container with a standard-style at() method.

Does not update the container if the key was not already present.

See also
update

Definition at line 177 of file xformed.hpp.

auto atria::funken::xat ( KeyT &&  key) -> xform::transducer_impl<detail::at_rf_gen, estd::decay_t<KeyT> >

Transducer that projects the key key from containers with a standard-style at() method.

It filters out ins without the given key.

Definition at line 164 of file xformed.hpp.

auto atria::funken::xformed ( Xform &&  xform,
InTs &&...  ins 
) -> estd::enable_if_t< meta::all(In_value<InTs>()...), detail::xformed_input< typename decltype( detail::make_xform_down_signal( xform, detail::access::signal(ins)...) )::element_type > >

Returns a new in formed by applying a transducer xform on the successive values of the in.

If two xform parameters are given and the ins are also outs, values can be set back using the second xform to go back into the original domain.

Definition at line 70 of file xformed.hpp.

Fork me on GitHub