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

Go to the source code of this file.

Description

Special binding implementation for TreeMutator, allowing to accept and ignore any tree diff without tangible effect.

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. This header defines a special /dev/null building block, which behaves as if successfully consuming the given diff without actually doing anything. Obviously, such a "black hole layer" need to be below any other diff binding, and may be used to absorb any diff verbs not matched and consumed by a more specific binding. Contrast this to the TreeMutator default implementation, which likewise absorbs diff verbs, but in a way to trigger a lumiera::error::LUMIERA_ERROR_DIFF_CONFLICT.

Note
the header tree-mutator-noop-binding.hpp was split off for sake of readability and is included automatically from bottom of tree-mutator.hpp
See also
tree-mutator-test.cpp
TreeMutator::build()

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

#include "lib/error.hpp"
#include "lib/diff/gen-node.hpp"
#include "lib/diff/tree-mutator.hpp"
#include <type_traits>

Classes

class  BlackHoleMutation
 Diff binding for black holes, happily accepting anything. More...
 

Namespaces

 lib
 Implementation namespace for support and library code.