52 #ifndef MOBJECT_BUILDER_TOOL_H 53 #define MOBJECT_BUILDER_TOOL_H 82 virtual RET onUnknown (
Buildable& target) = 0;
112 template<
template<
class>
class WRA,
class TAR>
113 void rememberWrapper (WRA<TAR>* ptr_toWrappedTarget)
115 currentWrapper_ = ptr_toWrappedTarget;
117 template<
template<
class,
class>
class Placement,
class TAR,
class B>
120 currentWrapper_ = ptr_toWrappedTarget;
123 void forgetWrapper ()
125 currentWrapper_.reset();
136 ENSURE (pPlacement,
"wrong target type when invoking %s", __PRETTY_FUNCTION__);
141 getExplicitPlacement ()
143 return getPlacement<MObject>().
resolve();
151 ENSURE (pP,
"wrong target type when invoking %s", __PRETTY_FUNCTION__);
197 template<
typename WRA>
198 inline Buildable::ReturnType
201 tool.rememberWrapper(&wrappedTargetObj);
202 wrappedTargetObj->apply (tool);
203 tool.forgetWrapper();
Wrapper to treat several flavours of smart-pointers uniformly.
A refcounting Handle to an MObject of type MO, used to constrain or explicitly specify the location w...
Marker Interface for classes visitable by Builder tools.
Marker template to declare that some "visiting tool" wants to treat a set of concrete Visitable class...
Marker interface or base class for all "Visitables".
Core abstraction: completely resolved placement of an MObject Within the session model, all media objects are attached with the help of mobject::Placement elements.
Core abstraction: placement of a media object into session context.
Special kind of Placement, where the location of the MObject has been nailed down to a fixed position...
declare the concrete types a BuilderTool may receive and treat.
Customised refcounting smart pointer.
Steam-Layer implementation namespace root.
TAR get()
retrieve current content of the variant, trying to cast or convert it to the given type...
Policy invoking an catch-all function for processing an unknown tool / target pair, effectively enforcing the implementation of a catch-all function onUnknown(BASE&)
A library implementation of the Visitor Pattern tailored specifically to Lumiera's needs within the S...
Buildable::ReturnType apply(BuilderTool &tool, WRA &wrappedTargetObj)
to be picked up by ADL: redirect tool invocation for double dispatch.
string resolve(fsys::path iniSpec)
use the general mechanism for resolving a search path to get the absolute path of the setup...