50 #ifndef LIB_DIFF_TREE_DIFF_TRAITS_H 51 #define LIB_DIFF_TREE_DIFF_TRAITS_H 96 template<
class TAR,
typename SEL =
void>
104 treeMutatorSize (...)
114 return static_cast<T*
> (
nullptr);
120 enum { value = 0 < treeMutatorSize (getSelector<T>()) };
127 enum { siz = treeMutatorSize (getSelector<TAR>()) };
139 using std::is_base_of;
152 enum{ value = HasFunSig_buildMutator<T>::value
153 and not is_base_of<DiffMutable, T>::value};
160 template<
class TAR,
typename SEL =
void>
164 static_assert (!
sizeof(TAR),
"TreeDiffTraits: Unable to access or build a TreeMutator for this target data.");
189 subject_.buildMutator (handle);
216 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".