Lumiera  0.pre.03
»edit your freedom«
OutputDesignation Class Reference

#include "steam/mobject/output-designation.hpp"

Description

Descriptor to denote the desired target of produced media data.

OutputDesignation is always an internal and relative specification and boils down to referring an asset::Pipe by ID. In order to become actually effective, some object within the model additionally needs to claim this pipe-ID, meaning that this object states to root and represent this pipe. When the builder encounters a pair of (OutputDesignation, OutputClaim), an actual stream connection will be wired in the processing node network.

Todo:
couldn't the inline buffer be "downgraded" to InPlaceBuffer or PolymorphicValue?? Seemingly we never-ever need to re-discover the erased type of the embedded spec. Thus for this to work, we'd just need to add an "empty" spec ///////////////////TICKET #723
See also
OutputMapping_test

Definition at line 80 of file output-designation.hpp.

Public Types

using PID = asset::ID< asset::Pipe >
 
using PPipe = asset::PPipe
 

Public Member Functions

 OutputDesignation (PID explicitTarget)
 create an output designation by directly specifying the target to connect
 
 OutputDesignation (RefPlacement const &indirectTarget)
 create an output designation indirectly to be resolved by forwarding the resolution to the given reference scope / mediator.
 
 OutputDesignation (uint relative_busNr=0)
 create an output designation by relative specification, to be resolved based on the stream type and the actual default target object at hand when resolving. More...
 
PID resolve (PPipe origin)
 retrieve the direct destination this descriptor is actually pointing to. More...
 

Classes

class  TargetSpec
 

Private Types

enum  {
  VTABLE = sizeof(size_t),
  SPEC_SIZ
}
 
typedef lib::OpaqueHolder< TargetSpec, SPEC_SIZ > SpecBuff
 

Private Attributes

SpecBuff spec_
 Storage to hold the Target Spec inline.
 

Constructor & Destructor Documentation

◆ OutputDesignation()

OutputDesignation ( uint  relative_busNr = 0)
explicit

create an output designation by relative specification, to be resolved based on the stream type and the actual default target object at hand when resolving.

Parameters
relative_busNrwithin the collection of target pipes available for the actual stream type to connect
Note
as the relative bus/pipe number defaults to 0, effectively this becomes a default ctor, denoting "connect me to the first bus suitable for my stream type"

Definition at line 147 of file output-designation.cpp.

Member Function Documentation

◆ resolve()

PID resolve ( PPipe  origin)
inline

retrieve the direct destination this descriptor is actually pointing to.

In case of a target pipe not explicitly specified this might involve a resolution step and take the current context into account.

Parameters
originstarting point for figuring out connections
Returns
a pipe-ID, which should be used as next connection. This might not be the final designation, but the directly visible next pipe to connect to

Definition at line 104 of file output-designation.hpp.

References OutputDesignation::spec_.

+ Collaboration diagram for OutputDesignation:

The documentation for this class was generated from the following files: