Lumiera  0.pre.03
»edit your freedom«
struct.hpp File Reference

Go to the source code of this file.

Description

Asset representation of structural elements within the model.

Structural parts of the Session (e.g. "tracks", i.e. Fork objects) can be reflected into the "bookkeeping view" as a specific Kind of Asset. For the different kinds of Assets, we use sub-interfaces inheriting from the general Asset interface, each of which expose a distinguishing feature. In the case of structural assets, the key point is the ability to retrieve an instance based on a capabilities query; structural assets are typically created on demand, just by referral. Thus, the collection of these assets provides a map for exploring the current session's structure and allow for tweaking of the default behaviour.

  • Timeline and Sequence are facades, part of the session API
  • Pipe is an attachment point for wiring connections and defines a StreamType
  • "tracks" are implemented as Fork represented as entryID within the asset view.
  • ProcPatt is used as a blueprint in the build process, a standard connection pattern

access and creation

asset::Struct instances are created on demand; the interface is to invoke the StructFactory with a (typed) Query describing properties or capabilities. In case this query succeeds, an existing asset will be returned, otherwise a suitable new instance is created automatically. Typically, structural assets aren't deleted. Doing so would require a dedicated function which not only drops an asset instance from AssetManager, but also ensures removal of all properties within the model which could cause automatic re-creation of this asset. E.g. purging a track asset (=unique trackID) would necessitate to remove or disconnect all placements located within the scope of the referred Fork; this could be sub forks, clips, effects, automation or labels. Obviously, this is way beyond the realm of asset management.

See also
asset.hpp for explanation regarding Asset Management IDs
StructFactory creating concrete asset::Struct instances

Definition in file struct.hpp.

#include "lib/symbol.hpp"
#include "steam/asset.hpp"
#include "common/query.hpp"
#include "lib/nocopy.hpp"
#include <memory>
#include <string>

Classes

class  ID< Struct >
 
class  Struct
 key abstraction: structural asset Created automatically as a sideeffect of building the structure of the high-level-model (session contents), thus providing IDs for later referral, search and attachment of metadata. More...
 
class  StructFactory
 Factory specialised for creating Structural Asset objects. More...
 

Namespaces

 steam
 Steam-Layer implementation namespace root.
 
 steam::asset
 The asset subsystem of the Steam-Layer.