Lumiera  0.pre.03
»edit your freedom«
ChangeOperation< PAR, CLO > Class Template Reference

Description

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

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

Public Member Functions

 ChangeOperation (Symbol attribKey, CLO clo, PAR &&chain)
 
virtual bool assignElm (GenNode const &spec) override
 invoke the setter lambda, when this binding layer is in charge
 
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. More...
 
- Public Member Functions inherited from AttributeBindingBase< PAR >
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. More...
 
virtual bool acceptSrc (GenNode const &spec) override
 accept status quo, after verifying the spec from the diff verb
 
virtual bool findSrc (GenNode const &refSpec) override
 
virtual bool matchSrc (GenNode const &spec) override
 ensure the given spec is deemed appropriate at that point. More...
 
virtual void skipSrc (GenNode const &refSpec) override
 any reordering or deletion of object fields is prohibited More...
 

Private Types

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

Private Attributes

CLO setter_
 

Additional Inherited Members

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

Member Function Documentation

◆ injectNew()

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 271 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: