Lumiera  0.pre.03
»edit your freedom«
tree-mutator-diffmutable-binding.hpp File Reference

Go to the source code of this file.

Description

Special supplement for TreeMutator and the STL collection binding, to provide a shortcut and default wiring for a collection holding DiffMutable objects – either directly or by smart-ptr.

TreeMutator is a customisable intermediary, which enables otherwise opaque implementation data structures to receive and respond to generic structural change messages ("tree diff").

Each concrete TreeMutator instance will be configured differently, and this adaptation is done by combining various building blocks. One of the most relevant binding cases is to attach to a collection of child objects, which are themselves recursively diff mutable. This header here is based on the generic STL collection binding and provides the most common default implementation for a »Matcher« and for building a recursive TreeMutator for the child elements by means of delegating to their DiffMutable::buildMutator() function. An additional requirement for this standard setup to be used is that the objects in the collection must expose a getID() function to determine the object identity.

Note
the header tree-mutator-diffmutable-binding.hpp was split off for sake of readability and is included automatically from the bottom of diff-mutable.hpp – no need to include it explicitly
See also
tree-mutator-test.cpp
_DefaultBinding
TreeMutator::build()

Definition in file tree-mutator-diffmutable-binding.hpp.

Classes

struct  _AccessID< TAR, SEL >
 Metaprogramming helper to retrieve the object identity, whenever the target object for the diff defines a getID() function. More...
 
struct  _AccessID< ELM, enable_if< Can_access_ID< ELM > > >
 
struct  _DefaultBinding< ELM, enable_if< can_recursively_bind_DiffMutable< ELM > > >
 Entry Point: Specialisation of the collection binding to work on a collection of DiffMutable objects, either embedded directly, or attached via smart-ptr. More...
 
struct  Can_access_ID< T >
 
struct  can_recursively_bind_DiffMutable< T >
 
class  Can_retrieve_and_compare_ID< TY >
 Metaprogramming helper to detect if the given target class allows us to build a default »Matcher« automatically. More...
 
struct  Is_DiffMutable< T >
 < Metafunction: does the target implement the DiffMutable interface? More...
 
struct  Is_wrapped_DiffMutable< T >
 < Metafunction: is this a DiffMutable wrapped into a smart-ptr? More...
 
struct  Can_retrieve_and_compare_ID< TY >::Probe< X, SEL >
 

Namespaces

 lib
 Implementation namespace for support and library code.
 

Class Documentation

◆ lib::diff::anonymous_namespace{tree-mutator-diffmutable-binding.hpp}::Can_retrieve_and_compare_ID::Probe

struct lib::diff::anonymous_namespace{tree-mutator-diffmutable-binding.hpp}::Can_retrieve_and_compare_ID::Probe
+ Collaboration diagram for Can_retrieve_and_compare_ID< TY >::Probe< X, SEL >: