86 #ifndef LIB_DIFF_TREE_MUTATOR_H 87 #define LIB_DIFF_TREE_MUTATOR_H 117 class TestMutationTarget;
270 static Builder<TreeMutator> build();
297 : PAR{forward<PAR> (par)}
300 template<
typename BIN,
typename...ARGS>
302 chainedBuilder (ARGS&&...args)
304 return Builder<BIN> (BIN{forward<ARGS>(args)..., move(*
this)});
332 template<
typename CLO>
333 auto change (
Symbol attributeID, CLO setterClosure);
351 template<
typename CLO>
352 auto mutateAttrib (
Symbol attributeID, CLO mutatorBuilderClosure);
358 template<
typename CLO>
359 auto mutateAttrib (
idi::BareEntryID const& rawID, CLO mutatorBuilderClosure);
406 template<
typename BIN>
407 auto attach (BIN&& collectionBindingSetup);
430 auto ignoreAllChanges();
442 template<
typename LIS>
443 auto onSeqChange (LIS changeListener);
450 template<
typename LIS>
451 auto onLocalChange (LIS changeListener);
457 inline Builder<TreeMutator>
type erased baseclass for building a combined hash and symbolic ID.
virtual bool matchSrc(GenNode const &)
ensure the next source element matches with given spec
Builder-DSL to create and configure a concrete TreeMutator.
virtual bool completeScope()
ensure the scope addressed by this TreeMutator was processed and exhausted without mismatch ...
Test adapter to watch and verify how the TreeMutator binds to custom tree data structures.
virtual bool acceptSrc(GenNode const &)
accept existing element, when matching the given spec
Types marked with this mix-in may be moved but not copied.
virtual bool findSrc(GenNode const &)
locate designated element and accept it at current position
virtual bool injectNew(GenNode const &)
establish new element at current position
A front-end for using printf-style formatting.
Special binding implementation for TreeMutator, allowing to map tree diff operations onto native obje...
Implementation namespace for support and library code.
static Builder< TreeMutator > build()
DSL: start building a custom adapted tree mutator, where the operations are tied by closures or wrapp...
Token or Atom with distinct identity.
Mix-Ins to allow or prohibit various degrees of copying and cloning.
A handle to allow for safe »remote implantation« of an unknown subclass into a given opaque InPlaceBu...
static const Ref END
symbolic ID ref "_END_"
Special supplement for TreeMutator, to attach listeners for notification on specific changes...
Marker types to indicate a literal string and a Symbol.
virtual void skipSrc(GenNode const &)
skip next src element and advance abstract source position.
Helper allowing type erasure while holding the actual object inline.
Generic building block for tree shaped (meta)data structures.
virtual bool assignElm(GenNode const &)
locate the designated target element (must be already accepted into the target sequence).
virtual bool accept_until(GenNode const &spec)
repeatedly accept, until after the designated location
Special binding implementation for TreeMutator, allowing to map tree diff operations onto an »Externa...
Helpers for type detection, type rewriting and metaprogramming.
Lumiera error handling (C++ interface).
Special binding implementation for TreeMutator, allowing to accept and ignore any tree diff without t...
static const Ref ATTRIBS
symbolic ID ref "_ATTRIBS_"
Special binding implementation for lib::diff::TreeMutator, allowing to map tree diff operations onto ...
Bare symbolic and hash ID used for accounting of asset like entries.
Preconfigured adapters for some STL container standard usage situations.
virtual bool mutateChild(GenNode const &, Handle)
locate the designated target element and build a suitable sub-mutator for this element into the provi...
generic data element node within a tree
virtual void init()
initialisation immediately before start of diff application
Customisable intermediary to abstract mutating operations on arbitrary, hierarchical object-like data...