41 #ifndef LIB_DIFF_TREE_DIFF_TRAITS_H 42 #define LIB_DIFF_TREE_DIFF_TRAITS_H 87 template<
class TAR,
typename SEL =
void>
105 return static_cast<T*
> (
nullptr);
111 enum { value = 0 < treeMutatorSize (getSelector<T>()) };
118 enum { siz = treeMutatorSize (getSelector<TAR>()) };
130 using std::is_base_of;
143 enum{ value = HasFunSig_buildMutator<T>::value
144 and not is_base_of<DiffMutable, T>::value};
151 template<
class TAR,
typename SEL =
void>
155 static_assert (!
sizeof(TAR),
"TreeDiffTraits: Unable to access or build a TreeMutator for this target data.");
180 subject_.buildMutator (handle);
207 return Wrapper(subject);
Abstraction or descriptor interface for a data structure exposing the ability for mutation by receivi...
virtual void buildMutator(TreeMutator::Handle handle)
implement the TreeMutator interface, by forwarding to a known implementation function on the wrapped ...
Heuristics to guide the allocation for nested TreeMutator.
#define META_DETECT_FUNCTION(_RET_TYPE_, _FUN_NAME_, _ARGS_)
Detector for a specific member function.
Singleton-style holder for NIL or default values.
Implementation namespace for support and library code.
A handle to allow for safe »remote implantation« of an unknown subclass into a given opaque InPlaceBu...
Tiny helper functions and shortcuts to be used everywhere Consider this header to be effectively incl...
helper to detect presence of a TreeMutator builder function
Customisable intermediary to abstract generic tree mutation operations.
TreeDiffTraits< TAR >::Ret mutatorBinding(TAR &subject)
public access point to this configuration machinery
Marker or capability interface: an otherwise not further disclosed data structure, which can be transformed through "tree diff messages".