43 #ifndef MOBJECT_BUILDER_TOOL_H 44 #define MOBJECT_BUILDER_TOOL_H 73 virtual RET onUnknown (
Buildable& target) = 0;
103 template<
template<
class>
class WRA,
class TAR>
104 void rememberWrapper (WRA<TAR>* ptr_toWrappedTarget)
106 currentWrapper_ = ptr_toWrappedTarget;
108 template<
template<
class,
class>
class Placement,
class TAR,
class B>
111 currentWrapper_ = ptr_toWrappedTarget;
114 void forgetWrapper ()
116 currentWrapper_.reset();
127 ENSURE (pPlacement,
"wrong target type when invoking %s", __PRETTY_FUNCTION__);
132 getExplicitPlacement ()
134 return getPlacement<MObject>().
resolve();
142 ENSURE (pP,
"wrong target type when invoking %s", __PRETTY_FUNCTION__);
188 template<
typename WRA>
189 inline Buildable::ReturnType
192 tool.rememberWrapper(&wrappedTargetObj);
193 wrappedTargetObj->apply (tool);
194 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...