Lumiera  0.pre.03
»edit your freedom«
session-interface-modules.hpp File Reference

Go to the source code of this file.

Description

Self-contained sub-elements on the Session API.

Part of the Session interface is exposed as self-contained interface modules – both for notational convenience at the usage site, and for keeping session implementation code manageable. Clients access these modules as nested parts of the public Session interface through references exposing just the respective interfaces, while the actual implementation is located in-place (within the SesssionImpl object), packaged into a non-public baseclass.

  • the DefsManager acts as frontend to the system of default configurations and config rules, allowing to retrieve the default version of various kinds of objects
  • the top-level Timeline (structural assets) act as facade and entry point to the high-level-model (session contents). There is an table of timelines, managed automatically and kept in sync with the session::Binding elements located directly below model root.
  • likewise there is an table of all Sequence (structural assets), which correspond to the fork roots (roots of "track" trees), attached below model root.
  • the ElementQuery interface allows to retrieve specific object instances by applying a filter predicate.
maintaining the link between session, timelines and sequences

Timeline and Sequence are implemented as asset::Struct, causing them to be maintained by the AssetManager, which in turn is attached to the session::Root (WIP 3/2010: yet to be implemented). Creation and destruction of timelines and sequences is closely connected to some structural changes within the model

  • Timeline is related to session::Binding, where the timelines are leading and the binding elements are dependent on both a timeline and a sequence
  • Sequence is related to a Placement<session::Fork> – but only if attached immediately below model root; here the forks are leading and the sequences are completely dependent. In any case, ctor and dtor of Timeline and Sequence have to care for proper registration into the SessionInterfaceModules for timelines and sequences respectively. This is accomplished by using kind-of a backdoor, a SessionServices (???) (steam internal API) definition, allowing direct communication on implementation level, without the need to expose this access point on the public session API. The lib::ElementTracker configured in ( ??? ) receives these calls to maintain a list of asset smart-ptrs
See also
SessionImpl
session-services.hpp

Definition in file session-interface-modules.hpp.

Classes

struct  SessionInterfaceModules
 Collection of implementation components, providing self-contained sub-elements exposed on the public Session API. More...
 

Typedefs

typedef lib::ElementTracker< asset::SequenceSequenceTracker
 
typedef lib::ElementTracker< asset::TimelineTimelineTracker
 

Namespaces

 steam
 Steam-Layer implementation namespace root.
 
 steam::mobject
 Media-Objects, edit operations and high-level session.
 
 steam::mobject::session
 Namespace of Session and user visible high-level objects.