37#ifndef CONTROL_COMMAND_IMPL_CLONE_BUILDER_H
38#define CONTROL_COMMAND_IMPL_CLONE_BUILDER_H
80 template<
typename ARG>
86 return static_cast<ARG&
> (*newClosure_);
92 template<
typename ARG>
137 template<
typename ARG>
Buffer to place and maintain an object instance privately within another object.
Foundation for a custom allocation manager, tracking the created objects by smart-ptrs.
Visitor to support creating a CommandImpl clone.
InPlaceBuffer< impl::CloneContext, sizeof(impl::ClonedContext)> ContextHolder
TypedAllocationManager & allocator_
UndoMutation const & clonedUndoMutation()
after visitation: use pre-built bits to provide a cloned UndoFunctor
ContextHolder newContext_
CommandImplCloneBuilder(TypedAllocationManager &allo)
void buildCloneContext(ARG const &origArgHolder)
to be executed from within the specifically typed context of a concrete command StorageHolder; alloca...
PClo const & clonedClosuere()
after visitation: provide cloned StorageHolder, but already stripped down to the generic usage type
Specialised version of the command Mutation functor, used to implement the UNDO functionality.
virtual UndoMutation const & getUndoFunc()
ClonedContext(ARG const &origArgHolder, TypedAllocationManager &allocator)
UndoMutation newUndoFunctor_
ARG & downcast()
helper for accessing the new cloned closure through the specific concrete type.
virtual PClo const & getClosure()
Any copy and copy construction prohibited.
Core of a Steam-Layer command: functor containing the operation to be executed.
std::shared_ptr< CmdClosure > PClo
Steam-Layer implementation namespace root.
Mix-Ins to allow or prohibit various degrees of copying and cloning.
Helper allowing type erasure while holding the actual object inline.
< Interface and empty state
virtual UndoMutation const & getUndoFunc()
virtual PClo const & getClosure()
Abstract foundation for building custom allocation managers.
#define INSTANCEOF(CLASS, EXPR)
shortcut for subclass test, intended for assertions only.