Lumiera 0.pre.04~rc.1
»edit your freedom«
Loading...
Searching...
No Matches
ChangeOperation< PAR, CLO > Class Template Reference

#include "lib/diff/tree-mutator-attribute-binding.hpp"

Description

template<class PAR, class CLO>
class lib::diff::anonymous_namespace{tree-mutator-attribute-binding.hpp}::ChangeOperation< PAR, CLO >

Definition at line 236 of file tree-mutator-attribute-binding.hpp.

Public Member Functions

 ChangeOperation (Symbol attribKey, CLO clo, PAR &&chain)
 
virtual bool injectNew (GenNode const &spec) override
 while, strictly speaking, one can not "insert" fields into a given class definition, this binding can tolerate an INS verb whenever this means to touch a field which is actually known and present in the class definition underlying this binding.
 
virtual bool assignElm (GenNode const &spec) override
 invoke the setter lambda, when this binding layer is in charge
 
- Public Member Functions inherited from AttributeBindingBase< PAR >
virtual bool matchSrc (GenNode const &spec) override
 ensure the given spec is deemed appropriate at that point.
 
virtual bool acceptSrc (GenNode const &spec) override
 accept status quo, after verifying the spec from the diff verb
 
virtual void skipSrc (GenNode const &refSpec) override
 any reordering or deletion of object fields is prohibited
 
virtual bool findSrc (GenNode const &refSpec) override
 
virtual bool accept_until (GenNode const &spec) override
 there is no real support for navigating to a 'position', since attribute / data field binding has no notion of ordering.
 

Private Types

using CloArgs = lib::meta::_Fun< CLO >::Args
 
using ValueType = lib::meta::Pick< CloArgs, 0 >::Type
 
using ID = idi::EntryID< ValueType >
 

Private Attributes

CLO setter_
 

Additional Inherited Members

- Protected Member Functions inherited from AttributeBindingBase< PAR >
 AttributeBindingBase (BareEntryID attribID, PAR &&chain)
 
bool isApplicable (GenNode const &spec)
 hard wired "selector predicate" for this binding layer.
 
void __ifApplicable_refuse_to (Literal oper, GenNode const &spec)
 

Constructor & Destructor Documentation

◆ ChangeOperation()

template<class PAR , class CLO >
ChangeOperation ( Symbol  attribKey,
CLO  clo,
PAR &&  chain 
)
inline

Definition at line 247 of file tree-mutator-attribute-binding.hpp.

Member Typedef Documentation

◆ CloArgs

template<class PAR , class CLO >
using CloArgs = lib::meta::_Fun<CLO>::Args
private

Definition at line 239 of file tree-mutator-attribute-binding.hpp.

◆ ValueType

template<class PAR , class CLO >
using ValueType = lib::meta::Pick<CloArgs, 0>::Type
private

Definition at line 240 of file tree-mutator-attribute-binding.hpp.

◆ ID

template<class PAR , class CLO >
using ID = idi::EntryID<ValueType>
private

Definition at line 241 of file tree-mutator-attribute-binding.hpp.

Member Function Documentation

◆ injectNew()

template<class PAR , class CLO >
virtual bool injectNew ( GenNode const &  spec)
inlineoverridevirtual

while, strictly speaking, one can not "insert" fields into a given class definition, this binding can tolerate an INS verb whenever this means to touch a field which is actually known and present in the class definition underlying this binding.

In such a case, we just assign the given value. This implementation leeway is deliberate to support classes with optional / defaultable properties.

Definition at line 263 of file tree-mutator-attribute-binding.hpp.

References GenNode::data, and DataCap::get().

+ Here is the call graph for this function:

◆ assignElm()

template<class PAR , class CLO >
virtual bool assignElm ( GenNode const &  spec)
inlineoverridevirtual

invoke the setter lambda, when this binding layer is in charge

Definition at line 274 of file tree-mutator-attribute-binding.hpp.

References GenNode::data, and DataCap::get().

+ Here is the call graph for this function:

Member Data Documentation

◆ setter_

template<class PAR , class CLO >
CLO setter_
private

Definition at line 244 of file tree-mutator-attribute-binding.hpp.

+ Inheritance diagram for ChangeOperation< PAR, CLO >:
+ Collaboration diagram for ChangeOperation< PAR, CLO >:

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