97 #ifndef STEAM_MOBJECT_PLACEMENT_INDEX_H 98 #define STEAM_MOBJECT_PLACEMENT_INDEX_H 108 #include <unordered_map> 119 operator() (steam::mobject::PlacementMO::ID
const& val)
const noexcept
121 return hash_value(val);
141 using std::unique_ptr;
148 template<
typename PLA>
152 template<
typename MO,
typename BMO>
155 typedef PlacementMO::Id<MO> Type;
178 unique_ptr<Table> pTab_;
181 using _PID = PlacementMO::ID;
182 using ScopeIter = std::unordered_multimap<_PID,_PID>::const_iterator;
190 using ID = PlacementMO::ID
const&;
215 bool contains (ID)
const;
217 bool isValid()
const;
224 ID insert (
PlacementMO const& newObj, ID targetScope);
236 void clear (ID targetScope);
257 if (!questionable.isCompatible<MOX>())
259 "while the actual type of the pointee (MObject) " 260 "registered within the index isn't compatible with the " 261 "requested specific MObject subclass" 262 , LERR_(PLACEMENT_TYPE));
270 , LERR_(BOTTOM_PLACEMENTREF));
271 if (!idx.contains (
id))
273 , LERR_(NOT_IN_SESSION));
282 PlacementIndex::find (PlacementMO::Id<MO>
id)
const 286 ___check_compatibleType<MO> (result);
295 PlacementMO::Id<MO> id (pRef);
301 PlacementIndex::getScope (
PlacementMO const& p)
const 303 return getScope(p.
getID());
308 PlacementIndex::contains (
PlacementMO const& p)
const 310 return contains (p.
getID());
322 PlacementIndex::insert (PLA
const& newObj, ID targetScope)
327 return find (insert (genericPlacement, targetScope))
328 .template recastID<TargetMO>();
335 return remove (p.
getID());
A refcounting Handle to an MObject of type MO, used to constrain or explicitly specify the location w...
Core abstraction: placement of a media object into session context.
Any copy and copy construction prohibited.
Primary class template for std::hash.
#define LUMIERA_ERROR_DECLARE(err)
Forward declare an error constant.
Steam-Layer implementation namespace root.
Namespace of Session and user visible high-level objects.
Derived specific exceptions within Lumiera's exception hierarchy.
Mix-Ins to allow or prohibit various degrees of copying and cloning.
Marker types to indicate a literal string and a Symbol.
Tiny helper functions and shortcuts to be used everywhere Consider this header to be effectively incl...
A generic reference mechanism for Placements, as added to the current session.
Structured compound of Placement instances with lookup capabilities.
Lumiera error handling (C++ interface).
PlacementIndex self-verification code Executes all built-in checks automatically on object creation...
Lumiera public interface.
Helper for building Placement-ID types.
Accessing a STL element range through a Lumiera forward iterator, An instance of this iterator adapte...
Storage and implementation backing the PlacementIndex.