Lumiera 0.pre.04~rc.1
»edit your freedom«
Loading...
Searching...
No Matches
MediaWeavingPattern< INVO > Struct Template Reference

#include "steam/engine/media-weaving-pattern.hpp"

Description

template<class INVO>
struct steam::engine::MediaWeavingPattern< INVO >

Standard implementation for a Weaving Pattern to connect the input and output data feeds (buffers) into a processing function.

Template Parameters
INVOa configuration / policy base class to adapt for invocation
Note
assumptions made regarding the overall structure
  • INVO::Feed defines an invocation adapter for the processing function
  • INVO::buildFeed() is a functor to (repeatedly) build Feed instances
  • the invocation adapter in turn embeds a FeedManifold<FUN> to hold
    • a setup of output buffer pointers (single, tuple or array)
    • (optionally) a similar setup for input buffer pointers
    • (optionally) a parameter or parameter tuple
    • storage to configure BuffHandle entries for each «slot»
    • storage to hold the actual processing functor

Definition at line 177 of file media-weaving-pattern.hpp.

Public Types

using Feed = INVO::Feed
 

Public Attributes

Several< PortRefleadPort_
 
Several< BuffDescroutTypes_
 
uint resultSlot_ {0}
 
INVO prototype_
 

Public Member Functions

template<typename... ARGS>
 MediaWeavingPattern (Several< PortRef > &&pr, Several< BuffDescr > &&dr, uint resultIdx, ARGS &&...args)
 forwarding-ctor to provide the detailed input/output connections
 
Feed mount (TurnoutSystem &turnoutSys)
 
void pull (Feed &feed, TurnoutSystem &turnoutSys)
 
void shed (Feed &feed, TurnoutSystem &, OptionalBuff outBuff)
 
void weft (Feed &feed, TurnoutSystem &)
 
BuffHandle fix (Feed &feed, TurnoutSystem &)
 

Friends

auto _accessInternal (MediaWeavingPattern &patt)
 

Additional Inherited Members

- Protected Member Functions inherited from NonCopyable
 ~NonCopyable ()=default
 
 NonCopyable ()=default
 
 NonCopyable (NonCopyable const &)=delete
 
NonCopyableoperator= (NonCopyable const &)=delete
 

Constructor & Destructor Documentation

◆ MediaWeavingPattern()

template<class INVO >
template<typename... ARGS>
MediaWeavingPattern ( Several< PortRef > &&  pr,
Several< BuffDescr > &&  dr,
uint  resultIdx,
ARGS &&...  args 
)
inline

forwarding-ctor to provide the detailed input/output connections

Definition at line 193 of file media-weaving-pattern.hpp.

Member Typedef Documentation

◆ Feed

template<class INVO >
using Feed = INVO::Feed

Definition at line 180 of file media-weaving-pattern.hpp.

Member Function Documentation

◆ mount()

template<class INVO >
Feed mount ( TurnoutSystem turnoutSys)
inline

◆ pull()

template<class INVO >
void pull ( Feed feed,
TurnoutSystem turnoutSys 
)
inline

Definition at line 213 of file media-weaving-pattern.hpp.

References MediaWeavingPattern< INVO >::leadPort_.

◆ shed()

template<class INVO >
void shed ( Feed feed,
TurnoutSystem ,
OptionalBuff  outBuff 
)
inline

◆ weft()

template<class INVO >
void weft ( Feed feed,
TurnoutSystem  
)
inline

Definition at line 237 of file media-weaving-pattern.hpp.

◆ fix()

template<class INVO >
BuffHandle fix ( Feed feed,
TurnoutSystem  
)
inline

Definition at line 243 of file media-weaving-pattern.hpp.

References MediaWeavingPattern< INVO >::leadPort_, MediaWeavingPattern< INVO >::outTypes_, BuffHandle::release(), and MediaWeavingPattern< INVO >::resultSlot_.

+ Here is the call graph for this function:

Member Data Documentation

◆ leadPort_

◆ outTypes_

◆ resultSlot_

template<class INVO >
uint resultSlot_ {0}

◆ prototype_

template<class INVO >
INVO prototype_

Definition at line 189 of file media-weaving-pattern.hpp.

Referenced by MediaWeavingPattern< INVO >::mount().

Friends And Related Symbol Documentation

◆ _accessInternal

template<class INVO >
auto _accessInternal ( MediaWeavingPattern< INVO > &  patt)
friend

expose data not dependent on the template params

Definition at line 263 of file media-weaving-pattern.hpp.

+ Inheritance diagram for MediaWeavingPattern< INVO >:
+ Collaboration diagram for MediaWeavingPattern< INVO >:

The documentation for this struct was generated from the following file: