70 #ifndef MOBJECT_PLACEMENT_H 71 #define MOBJECT_PLACEMENT_H 86 namespace session{
class MObjectFactory; }
89 class ExplicitPlacement;
92 using std::static_pointer_cast;
114 template<
class MO,
class B =MObject>
125 ,
public HashIndexed<Placement<MObject>, lib::hash::LuidH >
130 typedef void (*Deleter)(
MObject*);
145 return _SmartPtr::operator->();
155 return 0 !=
dynamic_cast<Y*
> (
get());
165 REQUIRE (isCompatible<Y>());
166 target = static_pointer_cast<Y>(*this);
173 return static_cast<const void*
> (p1.get())
174 == static_cast<const void*> (p2.get());
178 operator string()
const ;
179 size_t use_count()
const {
return _SmartPtr::use_count(); }
180 bool isValid()
const {
return _SmartPtr::use_count(); }
211 : _SmartPtr (&subject, killer) { };
234 template<
class MO,
class B>
240 typedef typename _Parent::template
Id<MO> const& _Id;
241 typedef typename _Parent::Deleter Deleter;
242 typedef typename _Parent::_SmartPtr
_SmartPtr;
246 : _Parent (mo, killer)
255 return static_cast<MO*
> 256 (_SmartPtr::operator-> ());
262 return _Parent::template recastID<MO>();
277 format_PlacementID (PlacementMO
const&) ;
285 isSameDef (PlacementMO
const&, PlacementMO
const&);
A refcounting Handle to an MObject of type MO, used to constrain or explicitly specify the location w...
Hash based ID, typed to a specific subclass of BA.
A "processing pipe" represented as Asset.
#define INSTANCEOF(CLASS, EXPR)
shortcut for subclass test, intended for assertions only.
Special kind of Placement, where the location of the MObject has been nailed down to a fixed position...
A Mixin to add a private ID type to the target class, together with storage to hold an instance of th...
Positioning specification, possibly chained to further specifications.
Steam-Layer implementation namespace root.
Implementing the Placement mechanics.
Namespace of Session and user visible high-level objects.
Lumiera's internal time value datatype.
MObject is the interface class for all "Media Objects".
MObject * operator->() const
smart pointer: accessing the MObject, which is subject to placement.
bool isCompatible() const
run time diagnostics: is the pointee of this placement compatible to the given type?
Placement< MObject > PlacementMO
bool isSameDef(PlacementMO const &pl1, PlacementMO const &pl2)
compare the properties of placement
A template for generating hash based ID tags carrying compile-time type info.
Lumiera error handling (C++ interface).
Hash implementation based on a lumiera unique object id (LUID) When invoking the default ctor...
session::LocatingPin chain
interface for defining the kind of placement to employ, and for controlling any additional constraint...
void extendOwnershipTo(shared_ptr< Y > &target) const
extend shared ownership to the given smart-ptr
a family of time value like entities and their relationships.
string resolve(fsys::path iniSpec)
use the general mechanism for resolving a search path to get the absolute path of the setup...
friend bool isSharedPointee(Placement const &p1, Placement const &p2)
free function to detect two placements sharing a pointee