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

#include "steam/asset/struct-factory-impl.hpp"

Description

Implementation details, especially concerning how configuration queries are resolved and when to create new objects automatically.

Todo:

better use a general struct traits class, esp.for creating the Ident

shouldn't some of the generic factory logic be moved over into the struct baseclass? ////////////////TICKET #565

Definition at line 104 of file struct-factory-impl.hpp.

Public Member Functions

 StructFactoryImpl (StructFactory &interface)
 
template<class STRU >
STRU * fabricate (Query< STRU > const &caps)
 make a new structural asset instance. More...
 
template<>
const ProcPattfabricate (Query< const ProcPatt > const &caps)
 
template<>
Pipefabricate (Query< Pipe > const &caps)
 
template<>
Timelinefabricate (Query< Timeline > const &caps)
 
template<>
Sequencefabricate (Query< Sequence > const &caps)
 

Private Member Functions

template<class STRU >
const Asset::Ident createIdent (Query< STRU > const &query)
 
RFork getFork_forSequence (string const &desiredID)
 either fetch or build a suitable fork root for a new sequence
 

Private Attributes

StructFactoryrecursive_create_
 used for issuing recursive create calls to top level
 

Member Function Documentation

◆ createIdent()

const Asset::Ident createIdent ( Query< STRU > const &  query)
inlineprivate

derive a sensible asset ident tuple when creating structural asset instances based on a capability query

Definition at line 112 of file struct-factory-impl.hpp.

References Query< RES >::extractID().

+ Here is the call graph for this function:

◆ fabricate()

STRU* fabricate ( Query< STRU > const &  caps)
inline

make a new structural asset instance.

Warning
default/fallback implementation just throws.
Todo:
a real implementation using a resolution engine.

Definition at line 179 of file struct-factory-impl.hpp.

+ Collaboration diagram for StructFactoryImpl:

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