95 #ifndef LIB_DIFF_TREE_MUTATOR_H 96 #define LIB_DIFF_TREE_MUTATOR_H 126 class TestMutationTarget;
279 static Builder<TreeMutator> build();
306 : PAR{forward<PAR> (par)}
309 template<
typename BIN,
typename...ARGS>
311 chainedBuilder (ARGS&&...args)
313 return Builder<BIN> (BIN{forward<ARGS>(args)..., move(*
this)});
341 template<
typename CLO>
342 auto change (
Symbol attributeID, CLO setterClosure);
360 template<
typename CLO>
361 auto mutateAttrib (
Symbol attributeID, CLO mutatorBuilderClosure);
367 template<
typename CLO>
368 auto mutateAttrib (
idi::BareEntryID const& rawID, CLO mutatorBuilderClosure);
415 template<
typename BIN>
416 auto attach (BIN&& collectionBindingSetup);
439 auto ignoreAllChanges();
451 template<
typename LIS>
452 auto onSeqChange (LIS changeListener);
459 template<
typename LIS>
460 auto onLocalChange (LIS changeListener);
466 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...