Lumiera
0.pre.03
»edit your freedom«
|
Go to the source code of this file.
Internal and organisational metadata.
Some internally created data elements rather serve the purpose of controlling the way the application behaves, as opposed to organising the structure of the data the user works with. Lumiera exposes this self-referential control and customisation aspects as a special kind of Asset. Examples being types, scales and quantisation grids, decision rules, control data stores (automation data), annotations attached to labels, inventory entities etc.
For the different Kinds of Assets, we use sub-interfaces inheriting from the general Asset interface. To be able to get asset::Meta instances directly from the AssetManager, we define a specialisation of the Asset ID.
The usage pattern of asset::Meta entities differs from the other assets, insofar they aren't created as individual entries, rather added as part of a larger scale configuration activity, or they are derived from category. The latter fits in with a prototype-like approach; initially, the individual entry just serves to keep track of a categorisation, while at some point, such a link into a describing category may evolve into a local differentiation of some settings (copy on modification).
To cope with this special usage, the meta assets are defined to be immutable. They are created from a descriptor, which stands for a category or sub-category and can be another already existing asset::Meta (inheriting from meta::Descriptor) Generally this yields a Builder object, which can be used for outfitting the new or changed metadata entry, finally committing this builder to yield a new asset::Meta (which, in case of a mutation, might supersede an existing one).
Definition in file asset/meta.hpp.
#include "steam/asset.hpp"
#include "steam/asset/struct-scheme.hpp"
#include "lib/idi/entry-id.hpp"
#include "lib/nocopy.hpp"
Classes | |
struct | Builder< MA > |
Building and configuring a meta asset. More... | |
class | Descriptor |
Interface: the unspecific, reflective base of meta assets. More... | |
class | ID< Meta > |
class | Meta |
key abstraction: metadata, parametrisation, customisation and similar organisational traits. More... | |
class | MetaFactory |
Factory specialised for creating Metadata Asset objects. More... | |
Typedefs | |
typedef lib::P< Meta > | PMeta |
Namespaces | |
steam | |
Steam-Layer implementation namespace root. | |
steam::asset | |
The asset subsystem of the Steam-Layer. | |