26#ifndef ASSET_STRUCT_FACTORY_IMPL_H
27#define ASSET_STRUCT_FACTORY_IMPL_H
64 using LERR_(CAPABILITY_QUERY);
76 using idi::StructTraits;
106 string nameID = query.
extractID (genericIdSymbol);
114 nameID =
_Fmt(
"%s.%d")
118 ENSURE (not isnil (nameID));
121 string seqID = query.
extractID (seqNrPredicate);
122 if (not isnil (seqID) and 1 < uNum(seqID))
135 if (not isnil (desiredID))
140 UNIMPLEMENTED (
"how to deal with 'stealing' a fork sub-tree to a new sequence??");
172 throw error::Config (
"The following Query could not be resolved: " + caps.asKey()
173 , LUMIERA_ERROR_CAPABILITY_QUERY );
182 inline const ProcPatt*
185 TODO (
"actually extract properties/capabilities from the query...");
194 string streamID = caps.
extractID (
"stream");
195 if (isnil (streamID)) streamID =
"default";
207 TODO (
"extract additional properties/capabilities from the query...");
209 string sequenceID = caps.
extractID (
"sequence");
210 Query<Sequence> desiredSequence (isnil (sequenceID)?
"" :
"id("+sequenceID+
")");
216 ENSURE (newTimeline);
217 return newTimeline.
get();
225 TODO (
"actually extract properties/capabilities from the query...");
227 Query<Fork> desiredFork (isnil (forkID)?
"" :
"id("+forkID+
")");
234 ENSURE (newSequence);
235 return newSequence.get();
static PTarget create()
factory for creating smart-ptr managed TAR instances, automatically registered with the element-track...
Token or Atom with distinct identity.
Generic interface to express a query for specifically typed result elements exposing some capabilitie...
string extractID(Symbol predicate) const
convenience shortcut to extract a desired name-ID.
Tree like classification of Assets.
structural asset corresponding to the part of the model forming a processing pipe for generating medi...
"Processing Pattern" is a structural Asset representing information how to build some part of the ren...
Implementation details, especially concerning how configuration queries are resolved and when to crea...
StructFactoryImpl(StructFactory &interface)
RFork getFork_forSequence(string const &desiredID)
either fetch or build a suitable fork root for a new sequence
const Asset::Ident createIdent(Query< STRU > const &query)
StructFactory & recursive_create_
used for issuing recursive create calls to top level
STRU * fabricate(Query< STRU > const &caps)
make a new structural asset instance.
Factory specialised for creating Structural Asset objects.
An active (smart-ptr like) external reference to a specifically placed MObject "instance" within the ...
MObject is the interface class for all "Media Objects".
static session::MObjectFactory create
Storage for the (single, static) MObject factory object.
The (current) Session holds all the user visible content to be edited and manipulated within the Lumi...
DefaultsAccess defaults
manages default configured objects
static session::SessManager & current
access point to the current Session
virtual MObjectRef getRoot()=0
_PickRes< PRED >::Result pick(PRED const &searchPredicate)
pick the first element from session satisfying a predicate.
A Fork serves as grouping device within the Session.
A Placement scope within the high-level-model.
static Scope containing(PlacementMO const &aPlacement)
discover the enclosing scope of a given Placement
A front-end for using printf-style formatting.
Interface for accessing rule based configuration.
Search and query services to discover contents of the session.
Lumiera error handling (C++ interface).
Core factory to generate media objects for use in the Session model.
string extractID(Symbol sym, const string &termString)
(preliminary) helper: instead of really parsing and evaluating the terms, just do a regular expressio...
LumieraError< LERR_(CONFIG), Invalid > Config
Symbol genericIdSymbol("id")
Symbol seqNrPredicate("ord")
The asset subsystem of the Steam-Layer.
function< bool(Placement< Fork > const &)> match_specificFork(string const &forkID)
yield a query predicate to pick a specific fork
Steam-Layer implementation namespace root.
uint uNum(CStr charPtr)
positive integral number from textual representation
bool contains(MAP &map, typename MAP::key_type const &key)
shortcut for containment test on a map
bool isnil(lib::time::Duration const &dur)
A "processing pipe" represented as Asset.
Definition of a structural asset to express patterns of wiring or processing Processing patterns can ...
Utilities to support working with predicate queries.
Basic and generic representation of an internal query.
Structural building block of the session: a sequence of clips.
Supporting queries for session contents.
Primary Interface to the current Session.
MObject in session to represent the top-level binding of a sequence.
Naming and labelling scheme for structural assets.
a POD comprised of all the information sufficiently identifying any given Asset.
static Symbol namePrefix()
Marker types to indicate a literal string and a Symbol.
Top level structural element within the session.
Tiny helper functions and shortcuts to be used everywhere Consider this header to be effectively incl...