diff --git a/doc/devel/uml/class160645.html b/doc/devel/uml/class160645.html index b2d4551c9..9d9290d87 100644 --- a/doc/devel/uml/class160645.html +++ b/doc/devel/uml/class160645.html @@ -16,5 +16,7 @@ -

Declaration :

+

Declaration :

+
+ diff --git a/doc/devel/uml/class160773.html b/doc/devel/uml/class160773.html index 492b8f15f..fe53c7376 100644 --- a/doc/devel/uml/class160773.html +++ b/doc/devel/uml/class160773.html @@ -17,7 +17,8 @@

Declaration :

-
+ +
Relation <unidirectional association>

Declaration :

All public operations : enable , getDependant , getParents , isActive

diff --git a/doc/devel/uml/class162053.html b/doc/devel/uml/class162053.html new file mode 100644 index 000000000..d3ca6a886 --- /dev/null +++ b/doc/devel/uml/class162053.html @@ -0,0 +1,20 @@ + + + + + + +Class TypedID + + + + + +
Class TypedID
+

+ + + + +

Declaration :

+ diff --git a/doc/devel/uml/class162181.html b/doc/devel/uml/class162181.html new file mode 100644 index 000000000..ba9fd766d --- /dev/null +++ b/doc/devel/uml/class162181.html @@ -0,0 +1,23 @@ + + + + + + +Class TypedID::Table + + + + + +
Class TypedID::Table
+

+ + + + +

Declaration :

+ +
Relation <directional composition>

Declaration :

+ + diff --git a/doc/devel/uml/class162309.html b/doc/devel/uml/class162309.html new file mode 100644 index 000000000..900f75e4b --- /dev/null +++ b/doc/devel/uml/class162309.html @@ -0,0 +1,23 @@ + + + + + + +Class Group + + + + + +
Class Group
+

+ + + + +

Declaration :

+ +
Relation <directional composition>

Declaration :

+ + diff --git a/doc/devel/uml/class162437.html b/doc/devel/uml/class162437.html new file mode 100644 index 000000000..c0cf3b34b --- /dev/null +++ b/doc/devel/uml/class162437.html @@ -0,0 +1,21 @@ + + + + + + +Class BareEntryID + + + + + +
Class BareEntryID
+

+ + + + +

Declaration :

Directly inherited by : EntryID RegEntry

+ + diff --git a/doc/devel/uml/class162565.html b/doc/devel/uml/class162565.html new file mode 100644 index 000000000..0673ce924 --- /dev/null +++ b/doc/devel/uml/class162565.html @@ -0,0 +1,22 @@ + + + + + + +Class RegEntry + + + + + +
Class RegEntry
+

+ + + + +

Declaration :

+
+ + diff --git a/doc/devel/uml/class162693.html b/doc/devel/uml/class162693.html new file mode 100644 index 000000000..c3f11c71c --- /dev/null +++ b/doc/devel/uml/class162693.html @@ -0,0 +1,20 @@ + + + + + + +Class TypedID::Index + + + + + +
Class TypedID::Index
+

+ + + + +

Declaration :

+ diff --git a/doc/devel/uml/class162821.html b/doc/devel/uml/class162821.html new file mode 100644 index 000000000..f4ad81843 --- /dev/null +++ b/doc/devel/uml/class162821.html @@ -0,0 +1,24 @@ + + + + + + +Class TypedID::Link + + + + + +
Class TypedID::Link
+

+ + + + +

Declaration :

+ +
Operation registerInstance

Declaration :

+

All public operations : registerInstance

+ + diff --git a/doc/devel/uml/classdiagrams.html b/doc/devel/uml/classdiagrams.html index f76cda8f3..ed532bb62 100644 --- a/doc/devel/uml/classdiagrams.html +++ b/doc/devel/uml/classdiagrams.html @@ -42,6 +42,7 @@ Stream Type Framework Struct-Asset Relations TimelineSequences +TypedLookup diff --git a/doc/devel/uml/classes.html b/doc/devel/uml/classes.html index da2c30b21..ed22c27b6 100644 --- a/doc/devel/uml/classes.html +++ b/doc/devel/uml/classes.html @@ -27,6 +27,7 @@ AssetManagerboundaryFacade for the Asset subsystem AutoAutomation data for some parameter (i.e. a time varying function) BackendCache +BareEntryID Binding BuffHandle BuffTable @@ -85,6 +86,7 @@ FrameReference GLBuf Goalinterface +Group Handle HandlingPatterninterface Id @@ -151,6 +153,7 @@ QueryResolverinterface ReadSource RedoLast +RegEntry RelativeLocation RelTypeenumthe possible kinds of RelativePlacements RenderEngine @@ -200,6 +203,10 @@ ToolFactory Track Trafo +TypedID +TypedID::Index +TypedID::Link +TypedID::Table TypeHandlerinterface TypeHandler<Pipe> UndoMutationfunc diff --git a/doc/devel/uml/classes_list.html b/doc/devel/uml/classes_list.html index b78832adf..916725182 100644 --- a/doc/devel/uml/classes_list.html +++ b/doc/devel/uml/classes_list.html @@ -28,6 +28,7 @@ AssetManager
Auto
BackendCache
+BareEntryID
Binding
BuffHandle
BuffTable
@@ -86,6 +87,7 @@ FrameReference
GLBuf
Goal
+Group
Handle
HandlingPattern
Id
@@ -152,6 +154,7 @@ QueryResolver
ReadSource
RedoLast
+RegEntry
RelativeLocation
RelType
RenderEngine
@@ -201,6 +204,10 @@ ToolFactory
Track
Trafo
+TypedID
+TypedID::Index
+TypedID::Link
+TypedID::Table
TypeHandler
TypeHandler<Pipe>
UndoMutation
diff --git a/doc/devel/uml/fig138885.png b/doc/devel/uml/fig138885.png index 161e146c8..866c236b6 100644 Binary files a/doc/devel/uml/fig138885.png and b/doc/devel/uml/fig138885.png differ diff --git a/doc/devel/uml/fig140293.png b/doc/devel/uml/fig140293.png new file mode 100644 index 000000000..2c8e7da01 Binary files /dev/null and b/doc/devel/uml/fig140293.png differ diff --git a/doc/devel/uml/index.html b/doc/devel/uml/index.html index c70d7b296..490baddde 100644 --- a/doc/devel/uml/index.html +++ b/doc/devel/uml/index.html @@ -147,7 +147,7 @@ Documentation
Artifact Lumiera

the main executable to be built

Depends on common

Depends on gui

Depends on proc

Depends on backend

Stereotype: executable

-

executable associated with : link, parameter, renderengine, glbuf, procnode, stateproxy, edl, fixture, glpipe, main, conmanager, clip, vrender, placement, sessionimpl, builderfacade, aframe, assembler, trafo, allocation, vframe, toolfactory, hub, buildable, abstractmo, exitnode, pathmanager, track, meta, fixedlocation, relativelocation, controllerfacade, rendergraph, pluginadapter, explicitplacement, auto, glrender, arender, renderstate, label, nodecreatertool, projector, interpolator, paramprovider, mask, mobject, source, frame, effect, buildertool, segmentationtool

+

executable associated with : arender, renderstate, label, nodecreatertool, projector, interpolator, paramprovider, mask, mobject, source, frame, effect, buildertool, segmentationtool, link, parameter, renderengine, glbuf, procnode, stateproxy, edl, fixture, glpipe, main, conmanager, clip, vrender, placement, sessionimpl, builderfacade, aframe, assembler, trafo, allocation, vframe, toolfactory, hub, buildable, abstractmo, exitnode, pathmanager, track, meta, fixedlocation, relativelocation, controllerfacade, rendergraph, pluginadapter, explicitplacement, auto, glrender

Artifact main

Stereotype: source

@@ -779,7 +779,17 @@ Documentation

2.1.2 Class View Types

+
Class EntryID
+ +

+

TypedLookup



+
Class TypedID
+
+
Class Group
+
Class RegEntry
+
+
diff --git a/doc/devel/uml/index_60.html b/doc/devel/uml/index_60.html index f34d521d4..c84f0a7d2 100644 --- a/doc/devel/uml/index_60.html +++ b/doc/devel/uml/index_60.html @@ -28,8 +28,8 @@ <flow>transition <flow>transition <flow>transition -<flow>transition <flow>transition +<flow>transition <flow>transition <flow>transition <flow>transition @@ -37,28 +37,28 @@ <flow>transition <flow>transition <flow>transition -<transition>transition <transition>transition +<transition>transition <transition>transition <transition>transition -<transition>transition <transition>transition +<transition>transition <transition>transition <transition>transition -<transition>transition -<transition>transition -<transition>transition -<transition>transition -<transition>transition -<transition>transition -<transition>transition -<transition>transition <transition>transition +<transition>transition <transition>transition +<transition>transition +<transition>transition +<transition>transition <transition>transition +<transition>transition +<transition>transition +<transition>transition +<transition>transition <transition>transition -<transition>transition <transition>transition +<transition>transition diff --git a/doc/devel/uml/index_65.html b/doc/devel/uml/index_65.html index 1b805be3d..77e461db5 100644 --- a/doc/devel/uml/index_65.html +++ b/doc/devel/uml/index_65.html @@ -60,9 +60,9 @@ aud_Aclass instance aud_aclass instance audioclass instance +audio1class instance audio1class instance audio1class instance -audio1class instance autoartifactMedia Object holding automation data AutoclassAutomation data for some parameter (i.e. a time varying function) Automation Entitiesclass diagram diff --git a/doc/devel/uml/index_66.html b/doc/devel/uml/index_66.html index 36ad84a5e..329844354 100644 --- a/doc/devel/uml/index_66.html +++ b/doc/devel/uml/index_66.html @@ -23,6 +23,7 @@ backend-componentscomponent diagram BackendCacheclass BackendLayerpackage +BareEntryIDclass Bindingclass BuffHandleclass BuffTableclass @@ -38,8 +39,8 @@ buildableartifactmarker interface denoting any MObject able to be treated by Tools buildEngineoperationMain Operation of the Builder: create a render engine for a given part of the timeline Buildercomponent -builderpackagesourcecode package

The Builder creating the Render Engine,
located within the MObject Subsystem Builderpackage +builderpackagesourcecode package

The Builder creating the Render Engine,
located within the MObject Subsystem Builder Entitiesclass diagram Builder Tool (Visitor)class diagram Builder Workingsclass view diff --git a/doc/devel/uml/index_67.html b/doc/devel/uml/index_67.html index 54a9de861..e1ddf1116 100644 --- a/doc/devel/uml/index_67.html +++ b/doc/devel/uml/index_67.html @@ -29,55 +29,55 @@ Categoryclasstree like classification of Assets categoryartifacttree like classification of Assets causeattributea copy of the first exception encountered in this exception chain -chainrelationChain of additional Placements further constraining the position of this MObject chainoperationcreate and add another Placement for this media object, thus increasingly constraining the (possible) position of this object. +chainrelationChain of additional Placements further constraining the position of this MObject channelsrelationelementary media assets comprising this compound checked_inrelationchecked_in objects are subject of cache aging and must be not in use checked_outrelationthis list keeps all mappings which are in use, and thus prevents them from Cache aging choice pseudo statechoice pseudo state -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance +class instanceclass instance +class instanceclass instance class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance class instanceclass instance +class instanceclass instance class instanceclass instance class instanceclass instance -class instanceclass instance -class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance class instanceclass instance -class instanceclass instance -class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance clearoperationclear current session contents
without resetting overall session config.
Afterwards, the session will contain only one
empty EDL, while all Assets are retained.
client codecomponent clipartifacta Media Clip diff --git a/doc/devel/uml/index_68.html b/doc/devel/uml/index_68.html index 0af5dabf9..9866cde59 100644 --- a/doc/devel/uml/index_68.html +++ b/doc/devel/uml/index_68.html @@ -33,8 +33,8 @@ designpackage designpackageAll things concering the big picture.
Not a real code package, rather a container for design drafts, specifications, decisions. detect Channelsuse case -determine Render Paramsexpansion region determine Render Paramsopaque activity action +determine Render Paramsexpansion region devnullclass instance Dispatchercomponent dispatchOpoperation diff --git a/doc/devel/uml/index_71.html b/doc/devel/uml/index_71.html index 93915463a..7a7e73ee2 100644 --- a/doc/devel/uml/index_71.html +++ b/doc/devel/uml/index_71.html @@ -52,6 +52,7 @@ glrenderartifactRepresentation of a OpenGL accellerated Video render process Goalclass graphnode +Groupclass groupsattributeadditional classification, selections or departments this asset belongs to. Groups are optional, non-exclusive and may be overlapping. guipackagesourcecode package

User Interface classes go here GUIpackageGUI is here just a container to hold any entities considered to be User Interface related, which is not in focus for this Design draft diff --git a/doc/devel/uml/index_73.html b/doc/devel/uml/index_73.html index 60618f2bc..d6bd98c73 100644 --- a/doc/devel/uml/index_73.html +++ b/doc/devel/uml/index_73.html @@ -25,9 +25,9 @@ ImplFacadeclass In Memory Databaseclass diagram inFixtureactivity action pin -inputclass instance inputclass instance inputclass instance +inputclass instance instanceoperation InstanceHandleclass instructionsrelation diff --git a/doc/devel/uml/index_77.html b/doc/devel/uml/index_77.html index fd63eeb6b..bf5ec70f2 100644 --- a/doc/devel/uml/index_77.html +++ b/doc/devel/uml/index_77.html @@ -34,8 +34,8 @@ MediaKindclass merge activity nodemerge activity node Metaclasskey abstraction: metadata and organisational asset -metaartifactabstract base class of all MObjects representing meta data or processing instructions metaartifactkey abstraction: metadata and organisational asset +metaartifactabstract base class of all MObjects representing meta data or processing instructions Metaclass Meta-Asset Relationsclass diagram mobjectartifactKey Abstraction: A Media Object in the Session diff --git a/doc/devel/uml/index_79.html b/doc/devel/uml/index_79.html index c557cd0be..8b2bac9de 100644 --- a/doc/devel/uml/index_79.html +++ b/doc/devel/uml/index_79.html @@ -21,9 +21,9 @@ offsetattributeOffset the actual position by this (time) value relative to the anchor point. TODO: Representation? OperationBaseclass orgattributeorigin or authorship id. Can be a project abbreviation, a package id or just the authors nickname or UID. This allows for the compnent name to be more generic (e.g. "blur"). Default for all assets provided by the core Lumiera codebase is "lumi". -ouputclass instance ouputclass instance ouputclass instance +ouputclass instance outPortrelationthe Port this MObject wants to be conected to Overviewcomponent diagramThis drawing shows the top level compoents and relations Overview Render Enginedeployment diagram diff --git a/doc/devel/uml/index_82.html b/doc/devel/uml/index_82.html index c00a2cf07..69336106c 100644 --- a/doc/devel/uml/index_82.html +++ b/doc/devel/uml/index_82.html @@ -21,6 +21,8 @@ RedoLastclass refPointclass instance regoperationregisters an asset object in the internal DB, providing its unique key +RegEntryclass +registerInstanceoperation registryrelation@internal Table or DB holding all registered asset instances. relativelocationartifactPlacement implemnetaion providing various ways of attaching a MObject to another one RelativeLocationclass diff --git a/doc/devel/uml/index_83.html b/doc/devel/uml/index_83.html index ad18077c0..1397452cc 100644 --- a/doc/devel/uml/index_83.html +++ b/doc/devel/uml/index_83.html @@ -43,8 +43,8 @@ ServiceImplclass Sessioncomponent sessionartifactInterface: the session edited by the user -Sessionpackage sessionpackagesourcecode package

Everything concerning the EDL and Session, within the MObject Subsystem +Sessionpackage SessionclassPrimary Interface for all editing tasks.
The session contains defaults, all the assets being edited, and a set of EDL with the individual MObjects to be manipulated and rendered. Session backboneclass diagram Session partsclass view @@ -71,15 +71,15 @@ Statenode Stateclass staterelation -state actionstate action -state actionstate action +state actionstate actiontry to fetch existing definition state actionstate action -state actionstate action +state actionstate action +state actionstate action state actionstate action state actionstate action -state actionstate actiontry to fetch existing definition +state actionstate action state actionstate action -state actionstate action +state actionstate action StateAdapterclass StateAdapter compositionclass diagram StateProxyclass diff --git a/doc/devel/uml/index_84.html b/doc/devel/uml/index_84.html index 299cb526b..64ca32fb8 100644 --- a/doc/devel/uml/index_84.html +++ b/doc/devel/uml/index_84.html @@ -35,8 +35,8 @@ toolfactoryartifactsupply of Tool implementations for the Builder trackattribute trackrelation -trackartifactstructural asset holding the configuration of a track in the EDL trackartifactA grouping device within the EDL. The corresponding Placement
by which this Track object is refered defines fallback placing
properties to be used by all objects placed on this track in
case they don't specify more concrete placements.
Typically, tracks are used do make default Port connections,
define a layer or pan for sound and for for disabling groups
of clips. Note tracks are grouped in a tree like fashion.
+trackartifactstructural asset holding the configuration of a track in the EDL trackrelation Trackclass trackTreerelation @@ -44,13 +44,18 @@ trafoartifacttransforming processing Node treatoperation treatoperationThis operation is to be overloaded for the specific MObject subclasses to be treated. -treatoperation -treatoperation treatoperation +treatoperation +treatoperation treatoperation -treatoperation treatoperation +treatoperation treatoperation +TypedIDclass +TypedID::Indexclass +TypedID::Linkclass +TypedID::Tableclass +TypedLookupclass diagram TypeHandlerclass TypeHandler<Pipe>class Typesclass view diff --git a/doc/devel/uml/index_86.html b/doc/devel/uml/index_86.html index 4f864b5c0..91b807e2d 100644 --- a/doc/devel/uml/index_86.html +++ b/doc/devel/uml/index_86.html @@ -23,19 +23,19 @@ vid1class instance vid_Aclass instance vid_aclass instance +vid_Aclass instance vid_Aclass instance vid_aclass instance -vid_Aclass instance videoclass instance +videoclass instance videoclass instance videoclass instance -videoclass instance -video1class instance +video1class instance +video1class instance +video1class instance video1class instance video1class instance -video1class instance -video1class instance -video1class instance +video1class instance VirtualMediaclass Visitableclass visitorpackagesub-namespace for visitor library implementation diff --git a/doc/devel/uml/public_operations.html b/doc/devel/uml/public_operations.html index 4b969b1fe..649a88f03 100644 --- a/doc/devel/uml/public_operations.html +++ b/doc/devel/uml/public_operations.html @@ -62,6 +62,7 @@ playRenderEngineTODO: will probably be handled differently (see Cehteh) processProcNode pullProcNode +registerInstanceTypedID::Link releaseBufferState removeAssetManagerremove the given asset <i>together with all its dependants</i> from the internal DB resetSessManagerreset all session config and
start with a pristine default session. @@ -77,9 +78,9 @@ treatNodeCreatorTool treatNodeCreatorTool treatNodeCreatorTool +treatSegmentationTool treatSegmentationTool treatSegmentationTool -treatSegmentationTool useFileFileProviderAnnounces that the application intends to use this file with mode (READ|WRITE|READWRITE) useTemporaryStorageFileProviderProvides a pool for interminate frames whatError diff --git a/src/common/configrules.cpp b/src/common/configrules.cpp index 248d71461..10271ab0b 100644 --- a/src/common/configrules.cpp +++ b/src/common/configrules.cpp @@ -1,3 +1,4 @@ + /* ConfigRules - interface for rule based configuration @@ -21,51 +22,44 @@ * *****************************************************/ +#include "lib/error.hpp" #include "common/configrules.hpp" #include "common/query/fake-configrules.hpp" -//#include "lib/util.hpp" -#include "include/logging.h" -namespace lumiera - { - - namespace query - { +namespace lumiera { + namespace query { LUMIERA_ERROR_DEFINE (CAPABILITY_QUERY, "unresolvable capability query"); - - + } // namespace query - - namespace { + namespace { + /** type of the actual ConfigRules implementation to use */ lib::singleton::UseSubclass typeinfo; } - + /** Singleton factory instance, parametrised to actual impl. type. */ - lib::SingletonSub ConfigRules::instance (typeinfo); - - + lib::SingletonSub ConfigRules::instance (typeinfo); - - namespace query - { - namespace // local definitions: implementing a backdoor for tests - { - string fakeBypass; - } + + + + namespace query { + namespace { // local definitions: implementing a backdoor for tests + string fakeBypass; + } void setFakeBypass(string const& q) { fakeBypass = q; } bool isFakeBypass (string const& q) { return q == fakeBypass; } } // namespace query - - + + } // namespace lumiera diff --git a/src/common/configrules.hpp b/src/common/configrules.hpp index 1b23b1875..a1146283e 100644 --- a/src/common/configrules.hpp +++ b/src/common/configrules.hpp @@ -65,14 +65,14 @@ -namespace lumiera { +namespace lumiera { ///////TODO: shouldn't that be namespace lib? or proc? using std::string; using lumiera::P; - - + + namespace query { // The intention is to support the following style of Prolog code @@ -110,9 +110,7 @@ namespace lumiera { typename SIG = bool(string) // Signature > class Pred - { - - }; + { }; /** * the "back side" interface towards the classes participating @@ -163,7 +161,7 @@ namespace lumiera { */ virtual bool resolve (P& solution, const Query& q) = 0; }; - + // TODO: the Idea is to provide specialisations for the concrete types // we want to participate in the ConfigRules system.... // Thus we get the possibility to create a specific return type, @@ -197,7 +195,7 @@ namespace lumiera { // TODO: find out what operations we need to support here for the »real solution« (using Prolog) }; - + LUMIERA_ERROR_DECLARE (CAPABILITY_QUERY); ///< unresolvable capability query. @@ -238,12 +236,11 @@ namespace lumiera { - - namespace query - { + + namespace query { /** backdoor for tests: the next config query with this query string - * will magically suceed with every candidate object provided. This + * will magically succeed with every candidate object provided. This * is currently necessary to get objects into the defaults manager, * as the query system is not able to do real query resolution */ void setFakeBypass(string const& q); diff --git a/src/lib/element-tracker.hpp b/src/lib/element-tracker.hpp index f74c00084..78c0bf413 100644 --- a/src/lib/element-tracker.hpp +++ b/src/lib/element-tracker.hpp @@ -149,7 +149,7 @@ namespace lib { try { elm->detach(); } catch(...) { - WARN (common,"ignoring problems while clearing ElementTracker"); + WARN (common,"problems while clearing ElementTracker, ignored."); } } }; diff --git a/src/lib/query.hpp b/src/lib/query.hpp index 52430e0c6..65eba3869 100644 --- a/src/lib/query.hpp +++ b/src/lib/query.hpp @@ -39,12 +39,12 @@ namespace lumiera { using lib::Literal; using std::string; using boost::format; - + /* ==== common definitions for rule based queries ==== */ - - - /** + + + /** * Generic query interface for retrieving objects matching * some capability query */ @@ -62,8 +62,8 @@ namespace lumiera { operator string& () { return *this; } // TODO: needed temporarily by fake-configrules }; // for calling removeTerm on the string-ref.... - - + + namespace query { /** ensure standard format for a given id string. @@ -72,7 +72,7 @@ namespace lumiera { */ void normaliseID (string& id); - + /** count the top-level predicates in the query string. * usable for ordering queries, as more predicates usually * mean more conditions, i.e. more constriction @@ -83,7 +83,7 @@ namespace lumiera { const string extractID (Symbol, const string& termString); const string removeTerm (Symbol, string& termString); - + }} // namespace lumiera::query #endif diff --git a/src/proc/asset/entry-id.hpp b/src/proc/asset/entry-id.hpp index cdceb797a..451000931 100644 --- a/src/proc/asset/entry-id.hpp +++ b/src/proc/asset/entry-id.hpp @@ -95,7 +95,7 @@ namespace asset { template - class EntryID; + struct EntryID; /** diff --git a/src/proc/asset/inventory.hpp b/src/proc/asset/inventory.hpp new file mode 100644 index 000000000..7286f3324 --- /dev/null +++ b/src/proc/asset/inventory.hpp @@ -0,0 +1,47 @@ +/* + INVENTORY.hpp - viewing an Typed-ID registration group as meta asset + + Copyright (C) Lumiera.org + 2010, Hermann Vosseler + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef ASSET_INVENTORY_H +#define ASSET_INVENTORY_H + +#include "proc/asset/meta.hpp" + + + +namespace asset { + + + /** + * TypedID registration group exposed as meta asset + * + * @todo WIP-WIP unimplemented + */ + class Inventory : public Meta + {}; + + + typedef lumiera::P PInv; + + +} // namespace asset +#endif diff --git a/src/proc/asset/meta.hpp b/src/proc/asset/meta.hpp index da12b2bd7..d3f543ab4 100644 --- a/src/proc/asset/meta.hpp +++ b/src/proc/asset/meta.hpp @@ -22,13 +22,15 @@ /** @file meta.hpp - ** Some Metatdata elements (e.g. Automation Datasets) can be treated as - ** specific Kind of Asset. - ** For the different Kinds of Assets, we use sub-intefaces inheriting + ** Internal and organisational metadata. Some internally created data elements, + ** like automation data sets, inventory of session contents, can be exposed and + ** treated as specific Kind of Asset. + ** + ** 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 specialization of the Asset ID. - ** - ** @see asset.hpp for explanation + ** directly from the AssetManager, we define a specialisation of the Asset ID. + ** + ** @see asset.hpp explanation of assets in general ** @see MetaFactory creating concrete asset::Meta instances ** */ @@ -43,8 +45,7 @@ -namespace asset - { +namespace asset { class Meta; class MetaFactory; @@ -57,12 +58,12 @@ namespace asset ID (size_t id); ID (const Meta&); }; - - - + + + /** * key abstraction: metadata and organisational asset - * @todo just a stub, have to figure out what a asset::Proc is + * @todo just a stub, still have to figure out the distinctive properties of asset::Meta */ class Meta : public Asset { @@ -82,10 +83,11 @@ namespace asset // definition of ID ctors is possible now, // after providing full definition of class Proc - + inline ID::ID(size_t id) : ID (id) {}; inline ID::ID(const Meta& meta) : ID (meta.getID()) {}; + typedef P PMeta; @@ -98,11 +100,11 @@ namespace asset typedef P PType; PType operator() (Asset::Ident& key); ////////////TODO define actual operation - + }; - - - - + + + + } // namespace asset #endif diff --git a/src/proc/asset/typed-id.hpp b/src/proc/asset/typed-id.hpp new file mode 100644 index 000000000..c86215878 --- /dev/null +++ b/src/proc/asset/typed-id.hpp @@ -0,0 +1,136 @@ +/* + TYPED-ID.hpp - registration service for ID to type association + + Copyright (C) Lumiera.org + 2010, Hermann Vosseler + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +/** @file typed-id.hpp + ** Frontend for a registration service to associate object identities, symbolic identifiers and types. + ** For maintaining persistent objects, generally an unique object ID is desirable. Within Lumiera, we employ + ** 128 hash-IDs \c LUID. But hash-IDs arn't self explanatory for human readers and expressive when used for + ** testing, configuration and rules. A symbolic ID reads much better for this purpose. This registration + ** service is used to bridge this gap, allowing for symbolic lookup of objects with known type and for + ** enumeration of all objects of a specific type. + ** + ** @note as of 4/2010 this is an experimental setup and implemented just enough to work out + ** the interfaces. Ichthyo expects this registration service to play a crucial role + ** when it comes to integrating a real resolution engine (prolog). For now, the + ** only interesting point is how to handle the automatic registration. + ** + ** @see configrules.hpp + ** @see typed-lookup.cpp corresponding implementation + ** @see typed-id-test.cpp + ** + */ + + +#ifndef ASSET_TYPED_ID_H +#define ASSET_TYPED_ID_H + + +#include "lib/error.hpp" +//#include "proc/asset.hpp" +//#include "proc/asset/struct-scheme.hpp" +//#include "lib/hash-indexed.hpp" +//#include "lib/util.hpp" +#include "lib/symbol.hpp" + +//#include +#include +//#include +//#include + +namespace lumiera{ ///////TODO: shouldn't that be namespace lib? or proc? +namespace query { + + /** + * Adapter for using this type as a \em primary type + * within Lumiera's Proc-Layer. Any such type is expected + * to provide a specialisation, filling in the actual details + * necessary to deal with objects of this type. + * + * @todo design draft as of 4/2010. + * This interface should eventually be merged with + * the TypeHandler defined in configrules.hpp + */ + template + class TypeHandlerXX; + +}} + +namespace asset { + +// using std::string; +// using std::ostream; + using lib::Symbol; + +// using lumiera::error::LUMIERA_ERROR_WRONG_TYPE; + + LUMIERA_ERROR_DECLARE (MISSING_INSTANCE); ///< Existing ID registration without associated instance + + namespace { + + } + + + + /** + */ + class TypedID + { + + public: + + template + class Link; + }; + + + /** + * Mixin for automatic TypedID registration + * + * @todo unfinished design; especially: have to care for correct copying ////////////////////TICKET #593 + */ + template + class TypedID::Link + { + protected: + Link (Symbol id =0) + { + TODO ("actually do a registration with TypedID"); + } + + ~Link () + { + TODO ("clean up any TypedID registration for this instance"); + } + + public: + void + registerInstance (std::tr1::weak_ptr smart_ptr_instance) + { + TODO ("actually attach the smart-ptr to the existing TypedID registration"); + } + }; + + + +} // namespace asset +#endif diff --git a/src/proc/asset/dataset.cpp b/src/proc/asset/typed-lookup.cpp similarity index 70% rename from src/proc/asset/dataset.cpp rename to src/proc/asset/typed-lookup.cpp index f82460fed..fdfeafd57 100644 --- a/src/proc/asset/dataset.cpp +++ b/src/proc/asset/typed-lookup.cpp @@ -1,8 +1,8 @@ /* - Dataset - meta asset describing a collection of control data + TypedLookup - implementing a registration service for ID to type association Copyright (C) Lumiera.org - 2008, Hermann Vosseler + 2010, Hermann Vosseler This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -21,11 +21,16 @@ * *****************************************************/ -#include "proc/asset/dataset.hpp" - -namespace asset - { +#include "proc/asset/typed-id.hpp" +namespace asset { + + LUMIERA_ERROR_DEFINE (MISSING_INSTANCE, "Existing ID registration without associated instance"); + + /* ohlolololohaha */ + + + } // namespace asset diff --git a/tests/41asset.tests b/tests/41asset.tests index 1c5736fb9..332de28aa 100644 --- a/tests/41asset.tests +++ b/tests/41asset.tests @@ -46,6 +46,11 @@ return: 0 END +PLANNED "ID to type association" TypedID_test < + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "lib/test/run.hpp" +#include "lib/test/test-helper.hpp" + +#include "proc/asset/typed-id.hpp" +#include "proc/asset/entry-id.hpp" +#include "lib/p.hpp" +#include "proc/assetmanager.hpp" +#include "proc/asset/inventory.hpp" +//#include "proc/mobject/session/clip.hpp" +//#include "proc/mobject/session/track.hpp" +//#include "lib/meta/trait-special.hpp" +#include "lib/util-foreach.hpp" +#include "lib/symbol.hpp" + +//#include +#include +//#include + +//using lib::test::showSizeof; +//using lib::test::randStr; +//using util::isSameObject; +//using util::and_all; +using util::for_each; +using util::isnil; +//using lib::Literal; +using lib::Symbol; +using lumiera::P; +//using std::string; +using std::cout; +using std::endl; + + + +namespace mobject { +namespace session { +namespace test { + + struct DummyEntity { }; + + typedef lumiera::P PDum; + +}}} + +namespace lumiera{ ///////TODO: shouldn't that be namespace lib? or proc? +namespace query { + + /** + * Adapter for using mobject::session::test::DummyEntity as a + * \em primary type with the TypedID registration service. + * Of course this is a test/dummy/demonstration. + */ + template<> + struct TypeHandlerXX + { + static Symbol getID() { return "typed-id-test-dummy"; } + + }; + + }} + + + +namespace asset{ +namespace test { + + using mobject::session::test::DummyEntity; + using mobject::session::test::PDum; + + typedef EntryID DummyID; + + namespace { // Test definitions... + + } + + + + /*************************************************************************** + * @test outline of an instance registration and accounting service. + * The service is self-contained and supports automatic registration + * and deregistration. The instance access is configurable on a + * per-type base. + * - create instances of an auto-registered type + * - verify the registration entries + * - re-access the instances just by symbolic ID + * - verify the registration is cleaned up automatically. + * + * @todo partially unimplemented and thus commented out ////////////////////TICKET #599 + * + * @see typed-id.hpp interface covered here + * @see typed-lookup.cpp implementation + */ + class TypedID_test : public Test + { + + virtual void + run (Arg) + { + verifyRegistration(); + verifyAssetFrontend(); + verifyInstanceAccess(); + verifyAutomaticCleanup(); + } + + + void + verifyRegistration() + { + uint type_cnt = TypedID::type_count(); + uint elm_cnt = TypedID::element_count(); + + PDum d1 = TypedID::get ("top"); + CHECK (!d1); // doesn't exist + + // the above request automatically opened a new category + CHECK (type_cnt+1 == TypedID::type_count()); + + PDum up (new DummyEntity ("up")); + PDum down (new DummyEntity ("down")); + + CHECK (elm_cnt+2 == TypedID::element_count()); + + DummyID idu = TypedID::getID ("up"); + CHECK (idu); + CHECK ("up" == idu.getSym()); + } + + + void + verifyAssetFrontend() + { + PInv inventory = asset::Meta::create (Category (META,"typed-id-test-dummy")); + CHECK (inventory); + CHECK (0 == inventory->size()); + + // The Inventory is a first-class Asset + CHECK (AssetManager::instance().known (inventory->getID())); + + PDum up (new DummyEntity ("up")); + PDum down (new DummyEntity ("down")); + + // changes reflected immediately + CHECK (2 == inventory->size()); + + for_each (inventory->all(), show ); + } + + template + static void + show (X& o) + { + cout << "---" << o << endl; + } + + + void + verifyInstanceAccess() + { + PDum top (new DummyEntity ("top")); + PDum bot (new DummyEntity ("bottom")); + + CHECK (1 == top.use_count()); + CHECK (1 == bot.use_count()); // we hold the only reference + + VERIFY_ERROR (MISSING_INSTANCE, TypedID::get ("top")); + + // to enable fetching instances, an instance link needs to be provided + top->registerInstance (top); + TypedID::registerInstance (bot); + + PDum d1 = TypedID::get ("top"); + CHECK (d1); + CHECK (d1 == top); + CHECK (d1 != bot); + CHECK (2 == top.use_count()); + CHECK (1 == bot.use_count()); + + d1 = TypedID::get ("bottom"); + CHECK (d1); + CHECK (d1 != top); + CHECK (d1 == bot); + CHECK (1 == top.use_count()); + CHECK (2 == bot.use_count()); + + for_each (TypedID::allInstances(), show ); + } + + + void + verifyAutomaticCleanup() + { + + PDum cha (new DummyEntity ("charm")); + PDum bea (new DummyEntity ("beauty")); + + CHECK (2 == TypedID::entry_count()); + + cha.reset(); + CHECK (1 == TypedID::entry_count()); + CHECK (bea == *(TypedID::allInstances())); + + bea.reset(); + CHECK (0 == TypedID::entry_count()); + CHECK (! (TypedID::get("beauty"))); + CHECK (isnil (TypedID::allInstances())); + } + }; + + + + /** Register this test class... */ + LAUNCHER (TypedID_test, "unit asset"); + + +}} // namespace asset::test diff --git a/uml/lumiera/128133 b/uml/lumiera/128133 index 2a4a4292e..dabde62a0 100644 --- a/uml/lumiera/128133 +++ b/uml/lumiera/128133 @@ -1,6 +1,6 @@ format 58 "Asset" // ProcessingLayer::Asset - revision 20 + revision 21 modified_by 5 "hiv" // class settings //class diagram settings @@ -987,6 +987,15 @@ ${inlines} classrelation_ref 195589 // b parent class_ref 137093 // Meta end + + classrelation 197381 // + relation 186885 ---> + a role_name "" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 197381 // + b parent class_ref 162309 // Group + end end end @@ -1006,7 +1015,7 @@ ${inlines} //activity diagram settings package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default show_infonote default drawing_language default show_stereotype_properties default - class 160645 "EntryID" + class 162437 "BareEntryID" visibility package cpp_decl "${comment}${template}class ${name}${inherit} { @@ -1020,5 +1029,164 @@ ${inlines} explicit_switch_type "" end + + class 160645 "EntryID" + visibility package + nformals 1 + formal name "TY" type "class" explicit_default_value "" + explicit_extends "" + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + php_decl "" + python_2_2 python_decl "" + idl_decl "" + explicit_switch_type "" + + classrelation 196997 // + relation 186501 ---|> + a public + cpp default "${type}" + classrelation_ref 196997 // + b parent class_ref 162437 // BareEntryID + end + end + + classdiagram 140293 "TypedLookup" + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default + size A4 + end + + class 162053 "TypedID" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + php_decl "" + python_2_2 python_decl "" + idl_decl "" + explicit_switch_type "" + + end + + class 162181 "TypedID::Table" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + php_decl "" + python_2_2 python_decl "" + idl_decl "" + explicit_switch_type "" + + classrelation 197253 // + relation 186757 *--> + a role_name "" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; +" + classrelation_ref 197253 // + b parent class_ref 162309 // Group + end + end + + class 162309 "Group" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + php_decl "" + python_2_2 python_decl "" + idl_decl "" + explicit_switch_type "" + + classrelation 197509 // + relation 187013 *--> + a role_name "" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; +" + classrelation_ref 197509 // + b parent class_ref 162437 // BareEntryID + end + end + + class 162565 "RegEntry" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + php_decl "" + python_2_2 python_decl "" + idl_decl "" + explicit_switch_type "" + + classrelation 197125 // + relation 186629 ---|> + a public + cpp default "${type}" + classrelation_ref 197125 // + b parent class_ref 162437 // BareEntryID + end + end + + class 162693 "TypedID::Index" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + php_decl "" + python_2_2 python_decl "" + idl_decl "" + explicit_switch_type "" + + end + + class 162821 "TypedID::Link" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + php_decl "" + python_2_2 python_decl "" + idl_decl "" + explicit_switch_type "" + + operation 142469 "registerInstance" + public explicit_return_type "" + nparams 0 + cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}${)}${const}${volatile} ${throw}${abstract};" + cpp_def "${comment}${inline}${type} +${class}::${name} ${(}${)}${const}${volatile} ${throw}${staticnl} +{ + ${body} +} + +" + + + + + end + end end end diff --git a/uml/lumiera/132229 b/uml/lumiera/132229 index 1f50000aa..66dea5ed2 100644 --- a/uml/lumiera/132229 +++ b/uml/lumiera/132229 @@ -1,6 +1,6 @@ format 58 "Session" // ProcessingLayer::MObject::Session - revision 2 + revision 3 modified_by 5 "hiv" // class settings //class diagram settings @@ -100,7 +100,6 @@ configuration of all Objects to be rendered" classrelation_ref 150917 // defaults () b parent class_ref 141445 // DefaultsManager end - end class 128005 "SessionImpl" @@ -584,7 +583,6 @@ ${inlines} classrelation_ref 194309 // b parent class_ref 129157 // Meta end - end class 128389 "Track" diff --git a/uml/lumiera/138885.diagram b/uml/lumiera/138885.diagram index cd9870895..8c7b05e2a 100644 --- a/uml/lumiera/138885.diagram +++ b/uml/lumiera/138885.diagram @@ -67,7 +67,7 @@ classinstancecanvas 135301 classinstance_ref 141445 // xyz 562 53 2005 end fragment 135813 "TypedLookup" - xyzwh 532 22 1994 151 138 + xyzwh 532 23 1994 148 137 end classinstancecanvas 136197 classinstance_ref 141573 // plugin1 xyz 490 342 2000 @@ -80,11 +80,11 @@ classinstancecanvas 137221 classinstance_ref 141829 // end packagecanvas 137477 package_ref 128133 // Asset - xyzwh 470 183 1989 213 250 + name_in_tab yes color verylightorange xyzwh 470 183 1989 213 254 end packagecanvas 137605 package_ref 132229 // Session - xyzwh 15 25 1994 456 408 + name_in_tab yes xyzwh 15 25 1994 456 408 end note 137733 "top-level Timeline" xyzwh 91 263 2000 64 45 diff --git a/uml/lumiera/140293.diagram b/uml/lumiera/140293.diagram new file mode 100644 index 000000000..085da0a38 --- /dev/null +++ b/uml/lumiera/140293.diagram @@ -0,0 +1,95 @@ +format 58 + +classcanvas 128005 class_ref 162053 // TypedID + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default + xyz 65 88 2000 +end +classcanvas 128133 class_ref 162181 // TypedID::Table + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default + xyz 229 100 2000 +end +classcanvas 128261 class_ref 162309 // Group + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default + xyz 303 179 2000 +end +classcanvas 128389 class_ref 160773 // Inventory + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default + xyz 528 179 2000 +end +classcanvas 128517 class_ref 162437 // BareEntryID + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default + xyz 348 250 2000 +end +classcanvas 128645 class_ref 160645 // EntryID + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default + xyz 359 334 2000 +end +classcanvas 128901 class_ref 162565 // RegEntry + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default + xyz 423 403 2000 +end +classcanvas 130053 class_ref 162693 // TypedID::Index + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default + xyz 84 334 2000 +end +classcanvas 130181 class_ref 140805 // TypeHandler + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default + xyz 92 493 2005 +end +classcanvas 130309 class_ref 137093 // Meta + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default + xyz 535 99 2004 +end +fragment 131461 "Front-end" + xyzwh 33 54 1995 165 351 +end +packagecanvas 131589 + package_ref 131077 // ConfigQuery + xyzwh 72 449 2000 235 165 +end +packagecanvas 131717 + package_ref 128133 // Asset + color verylightorange xyzwh 520 52 1994 120 194 +end +classcanvas 131845 class_ref 162821 // TypedID::Link + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default + xyz 217 401 2005 +end +relationcanvas 128773 relation_ref 186501 // + from ref 128645 z 1999 to ref 128517 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 129029 relation_ref 186629 // + geometry VHV unfixed + from ref 128901 z 1999 to point 449 305 + line 129541 z 1999 to point 381 305 + line 129669 z 1999 to ref 128517 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 129797 relation_ref 186757 // + geometry VH + from ref 128133 z 1999 to point 269 196 + line 129925 z 1999 to ref 128261 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 130437 relation_ref 185093 // + from ref 128389 z 1999 to ref 130309 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 130821 relation_ref 186885 // + from ref 128389 z 1999 to ref 128261 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 130949 relation_ref 187013 // + geometry VH + from ref 128261 z 1999 to point 323 267 + line 131205 z 1999 to ref 128517 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +end diff --git a/uml/lumiera/5.session b/uml/lumiera/5.session index 9784f7ccf..b86df7d15 100644 --- a/uml/lumiera/5.session +++ b/uml/lumiera/5.session @@ -2,22 +2,24 @@ window_sizes 1324 1020 270 1044 872 71 diagrams classdiagram_ref 136453 // Session backbone 631 352 100 4 0 0 - active objectdiagram_ref 138885 // ModelAssetRelations + objectdiagram_ref 138885 // ModelAssetRelations 730 488 100 4 0 0 classdiagram_ref 139141 // Meta-Asset Relations 469 451 100 4 0 0 + active classdiagram_ref 140293 // TypedLookup + 721 697 100 4 0 0 end show_stereotypes selected -package_ref 129 // lumiera + package_ref 129 // lumiera open -package_ref 128005 // design + package_ref 128005 // design class_ref 160389 // VirtualMedia class_ref 136837 // Proc class_ref 160901 // Timeline class_ref 139269 // DoRecurse - class_ref 160645 // EntryID + class_ref 162821 // TypedID::Link classview_ref 128389 // Controller Workings class_ref 139653 // Session class_ref 128133 // Seq @@ -33,7 +35,7 @@ package_ref 128005 // design class_ref 133253 // Frame classview_ref 129285 // StreamType -package_ref 131077 // ConfigQuery + package_ref 131077 // ConfigQuery class_ref 152965 // Handle classview_ref 128266 // SmartPointers end diff --git a/uml/lumiera/lumiera.prj b/uml/lumiera/lumiera.prj index 727f234a4..1b9206c7a 100644 --- a/uml/lumiera/lumiera.prj +++ b/uml/lumiera/lumiera.prj @@ -1,6 +1,6 @@ format 58 "lumiera" - revision 60 + revision 61 modified_by 5 "hiv" cpp_root_dir "../../src/" diff --git a/wiki/renderengine.html b/wiki/renderengine.html index 12f70dc1d..5d8c9cabb 100644 --- a/wiki/renderengine.html +++ b/wiki/renderengine.html @@ -5982,9 +5982,9 @@ Using transitions is a very basic task and thus needs viable support by the GUI. Because of this experience, ichthyo wants to support a more general case of transitions, which have N output connections, behave similar to their "simple" counterpart, but leave out the mixing step. As a plus, such transitions can be inserted at the source ports of N clips or between any intermediary or final output pipes as well. Any transition processor capable of handling this situation should provide some flag, in order to decide if he can be placed in such a manner. (wichin the builder, encountering a inconsistently placed transition is just an [[building error|BuildingError]]) -
+
//drafted service as of 4/10 &mdash; &rarr;[[implementation plans|TypedLookup]]//
-An registration service to associate object identities, symbolic identifiers and types.
+A registration service to associate object identities, symbolic identifiers and types.
 
 !Motivation
 For maintaining persistent objects, generally an unique object ID is desirable. Within Lumiera, we employ 128 hash-~IDs (&raquo;{{{LUID}}}&laquo;). But hash-~IDs are difficult to handle for testing and configuration, as they aren't self explanatory for human readers. They're best used in a way avoiding textual representation.