35 #ifndef ASSET_STRUCT_FACTORY_IMPL_H 36 #define ASSET_STRUCT_FACTORY_IMPL_H 73 using LERR_(CAPABILITY_QUERY);
85 using idi::StructTraits;
90 Symbol genericIdSymbol (
"id");
91 Symbol seqNrPredicate (
"ord");
115 string nameID = query.
extractID (genericIdSymbol);
123 nameID =
_Fmt(
"%s.%d")
127 ENSURE (!isnil (nameID));
130 string seqID = query.
extractID (seqNrPredicate);
131 if (!isnil (seqID) && 1 < uNum(seqID))
144 if (!isnil (desiredID))
149 UNIMPLEMENTED (
"how to deal with 'stealing' a fork sub-tree to a new sequence??");
169 : recursive_create_(interface)
181 throw error::Config (
"The following Query could not be resolved: " + caps.asKey()
182 , LUMIERA_ERROR_CAPABILITY_QUERY );
194 TODO (
"actually extract properties/capabilities from the query...");
203 string streamID = caps.
extractID (
"stream");
204 if (isnil (streamID)) streamID =
"default";
216 TODO (
"extract additional properties/capabilities from the query...");
218 string sequenceID = caps.
extractID (
"sequence");
219 Query<Sequence> desiredSequence (isnil (sequenceID)?
"" :
"id("+sequenceID+
")");
225 ENSURE (newTimeline);
226 return newTimeline.get();
234 TODO (
"actually extract properties/capabilities from the query...");
236 Query<Fork> desiredFork (isnil (forkID)?
"" :
"id("+forkID+
")");
243 ENSURE (newSequence);
244 return newSequence.get();
_PickRes< PRED >::Result pick(PRED const &searchPredicate)
pick the first element from session satisfying a predicate.
RFork getFork_forSequence(string const &desiredID)
either fetch or build a suitable fork root for a new sequence
Utilities to support working with predicate queries.
Definition of a structural asset to express patterns of wiring or processing Processing patterns can ...
A "processing pipe" represented as Asset.
An active (smart-ptr like) external reference to a specifically placed MObject "instance" within the ...
"Processing Pattern" is a structural Asset representing information how to build some part of the ren...
StructFactory & recursive_create_
used for issuing recursive create calls to top level
Basic and generic representation of an internal query.
Tree like classification of Assets.
MORef< MOX > attach(Placement< MOX > const &newPlacement)
attach a child element to the model
function< bool(Placement< Fork > const &)> match_specificFork(string const &forkID)
yield a query predicate to pick a specific fork
static session::SessManager & current
access point to the current Session
static Scope containing(PlacementMO const &aPlacement)
discover the enclosing scope of a given Placement
Steam-Layer implementation namespace root.
A front-end for using printf-style formatting.
DefaultsAccess defaults
manages default configured objects
STRU * fabricate(Query< STRU > const &caps)
make a new structural asset instance.
structural asset corresponding to the part of the model forming a processing pipe for generating medi...
A Placement scope within the high-level-model.
MObject is the interface class for all "Media Objects".
Implementation details, especially concerning how configuration queries are resolved and when to crea...
Derived specific exceptions within Lumiera's exception hierarchy.
string extractID(Symbol sym, const string &termString)
(preliminary) helper: instead of really parsing and evaluating the terms, just do a regular expressio...
The (current) Session holds all the user visible content to be edited and manipulated within the Lumi...
Structural building block of the session: a sequence of clips.
Token or Atom with distinct identity.
static PTarget create()
factory for creating smart-ptr managed TAR instances, automatically registered with the element-track...
a POD comprised of all the information sufficiently identifying any given Asset.
MObject in session to represent the top-level binding of a sequence.
Marker types to indicate a literal string and a Symbol.
const Asset::Ident createIdent(Query< STRU > const &query)
Tiny helper functions and shortcuts to be used everywhere Consider this header to be effectively incl...
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.
A Fork serves as grouping device within the Session.
Interface for accessing rule based configuration.
Primary Interface to the current Session.
Supporting queries for session contents.
static session::MObjectFactory create
Storage for the (single, static) MObject factory object.
The asset subsystem of the Steam-Layer.
Generic interface to express a query for specifically typed result elements exposing some capabilitie...
Naming and labelling scheme for structural assets.
string extractID(Symbol predicate) const
convenience shortcut to extract a desired name-ID.
bool contains(SEQ const &cont, typename SEQ::const_reference val)
shortcut for brute-force containment test in any sequential container
Top level structural element within the session.
Factory specialised for creating Structural Asset objects.