Lumiera 0.pre.04
»edit your freedom«
Loading...
Searching...
No Matches
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 72 of file output-designation.hpp.

Classes

class  TargetSpec
 

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.
 
PID resolve (PPipe origin)
 retrieve the direct destination this descriptor is actually pointing to.
 

Private Types

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

Private Attributes

SpecBuff spec_
 Storage to hold the Target Spec inline.
 

Constructor & Destructor Documentation

◆ OutputDesignation() [1/3]

OutputDesignation ( PID  explicitTarget)
explicit

create an output designation by directly specifying the target to connect

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

◆ OutputDesignation() [2/3]

OutputDesignation ( RefPlacement const &  indirectTarget)
explicit

create an output designation indirectly to be resolved by forwarding the resolution to the given reference scope / mediator.

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

◆ OutputDesignation() [3/3]

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 138 of file output-designation.cpp.

Member Typedef Documentation

◆ PID

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

◆ PPipe

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

◆ SpecBuff

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

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
private
Enumerator
VTABLE 
SPEC_SIZ 

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

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 96 of file output-designation.hpp.

References OutputDesignation::TargetSpec::resolve(), and OutputDesignation::spec_.

+ Here is the call graph for this function:

Member Data Documentation

◆ spec_

SpecBuff spec_
private

Storage to hold the Target Spec inline.

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

Referenced by OutputDesignation::resolve().

+ Collaboration diagram for OutputDesignation:

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