38#ifndef LIB_DIFF_TREE_MUTATOR_LISTENER_BINDING_H
39#define LIB_DIFF_TREE_MUTATOR_LISTENER_BINDING_H
74 template<
class PAR,
typename LIS,
bool assign =false>
79 bool triggered_ =
false;
90 : PAR(
std::forward<PAR>(chain))
91 , changeListener_{functor}
110 bool injectNew (
Elm elm)
override { trigger();
return PAR::injectNew (elm); }
111 bool findSrc (
Elm elm)
override { trigger();
return PAR::findSrc (elm); }
112 void skipSrc (
Elm elm)
override { trigger(); PAR::skipSrc (elm); }
113 bool assignElm (
Elm elm)
override { trigger(assign);
return PAR::assignElm (elm); }
121 template<
typename LIS>
127 return chainedBuilder<Detector4StructuralChanges<PAR,LIS>> (changeListener);
134 template<
typename LIS>
140 return chainedBuilder<Detector4StructuralChanges<PAR,LIS, true>> (changeListener);
Decorator for TreeMutator bindings, to fire a listener function when the applied diff describes a rel...
bool injectNew(Elm elm) override
Detector4StructuralChanges(Detector4StructuralChanges &&)=default
void trigger(bool relevant=true)
Detector4StructuralChanges(LIS functor, PAR &&chain)
void skipSrc(Elm elm) override
~Detector4StructuralChanges()
once the diff for this level is completely applied, the TreeMutator will be discarded,...
bool assignElm(Elm elm) override
bool findSrc(Elm elm) override
Lumiera error handling (C++ interface).
#define ASSERT_VALID_SIGNATURE(_FUN_, _SIG_)
Macro for a compile-time check to verify the given generic functors or lambdas expose some expected s...
Generic building block for tree shaped (meta)data structures.
Implementation namespace for support and library code.
generic data element node within a tree
Builder-DSL to create and configure a concrete TreeMutator.
Customisable intermediary to abstract generic tree mutation operations.