diff --git a/doc/devel/uml/class164101.html b/doc/devel/uml/class164101.html index a7ea0ed91..0c7acab23 100644 --- a/doc/devel/uml/class164101.html +++ b/doc/devel/uml/class164101.html @@ -16,10 +16,6 @@ -

Declaration :

Directly inherited by : AdviceProvision AdviceRequest

-
- -
Relation <unidirectional association>

Declaration :

Stereotype: holds

-
+

Declaration :

Directly inherited by : ActiveProvision AdviceLink

diff --git a/doc/devel/uml/class164229.html b/doc/devel/uml/class164229.html index 63bedaff3..8272e8df6 100644 --- a/doc/devel/uml/class164229.html +++ b/doc/devel/uml/class164229.html @@ -19,7 +19,7 @@

Declaration :

Stereotype: actor

-
Relation <unidirectional association>

Declaration :

Stereotype: add

+
Relation <unidirectional association>

Declaration :

Stereotype: add

diff --git a/doc/devel/uml/class164357.html b/doc/devel/uml/class164357.html index 46906439f..d81837c75 100644 --- a/doc/devel/uml/class164357.html +++ b/doc/devel/uml/class164357.html @@ -19,7 +19,7 @@

Declaration :

Stereotype: actor

-
Relation <unidirectional association>

Declaration :

Stereotype: owns

+
Relation <unidirectional association>

Declaration :

Stereotype: owns

diff --git a/doc/devel/uml/class164485.html b/doc/devel/uml/class164485.html index 4fe5afcad..877b85817 100644 --- a/doc/devel/uml/class164485.html +++ b/doc/devel/uml/class164485.html @@ -4,20 +4,22 @@ -Class AdviceRequest +Class Request -
Class AdviceRequest
+
Class Request

-

Declaration :

+

Declaration :

-
Relation <association>

Declaration :

+
Relation <association>

Declaration :

+
Operation getAdvice

Declaration :

+

All public operations : getAdvice

diff --git a/doc/devel/uml/class164613.html b/doc/devel/uml/class164613.html index 47c23e875..d65a66606 100644 --- a/doc/devel/uml/class164613.html +++ b/doc/devel/uml/class164613.html @@ -4,20 +4,22 @@ -Class AdviceProvision +Class Provision -
Class AdviceProvision
+
Class Provision

-

Declaration :

+

Declaration :

-
Relation <association>

Declaration :

+
Relation <association>

Declaration :

+
Operation setAdvice

Declaration :

+

All public operations : setAdvice

diff --git a/doc/devel/uml/class164741.html b/doc/devel/uml/class164741.html index 9f8dc59b9..ff2e4bdb7 100644 --- a/doc/devel/uml/class164741.html +++ b/doc/devel/uml/class164741.html @@ -18,7 +18,7 @@

Declaration :

-
Relation <association>

Declaration :

-
Relation <association>

Declaration :

+
Relation <association>

Declaration :

+
Relation <association>

Declaration :

diff --git a/doc/devel/uml/class165893.html b/doc/devel/uml/class165893.html new file mode 100644 index 000000000..273315c31 --- /dev/null +++ b/doc/devel/uml/class165893.html @@ -0,0 +1,25 @@ + + + + + + +Class AdviceLink + + + + + +
Class AdviceLink
+

+ + + + +

Declaration :

Directly inherited by : Provision Request

+
+ +
Relation <unidirectional association>

Declaration :

Stereotype: attach

+
+ + diff --git a/doc/devel/uml/class166021.html b/doc/devel/uml/class166021.html new file mode 100644 index 000000000..76eeedbec --- /dev/null +++ b/doc/devel/uml/class166021.html @@ -0,0 +1,24 @@ + + + + + + +Class ActiveProvision + + + + + +
Class ActiveProvision
+

+ + + + +

Declaration :

+ +
Relation <unidirectional association>

Declaration :

Stereotype: holds

+
+ + diff --git a/doc/devel/uml/class166149.html b/doc/devel/uml/class166149.html new file mode 100644 index 000000000..c28e6bf8f --- /dev/null +++ b/doc/devel/uml/class166149.html @@ -0,0 +1,23 @@ + + + + + + +Class AdviceSystem + + + + + +
Class AdviceSystem
+

+ + + + +

Declaration :

+ +
Relation <unidirectional association>

Declaration :

+ + diff --git a/doc/devel/uml/class166277.html b/doc/devel/uml/class166277.html new file mode 100644 index 000000000..34565c66b --- /dev/null +++ b/doc/devel/uml/class166277.html @@ -0,0 +1,23 @@ + + + + + + +Class Index + + + + + +
Class Index
+

+ + + + +

Declaration :

+ +
Relation <directional composition>

Declaration :

+ + diff --git a/doc/devel/uml/classes.html b/doc/devel/uml/classes.html index c0cb231a9..48eed5347 100644 --- a/doc/devel/uml/classes.html +++ b/doc/devel/uml/classes.html @@ -17,9 +17,10 @@ + - - + + @@ -97,6 +98,7 @@ + @@ -149,6 +151,7 @@ + @@ -167,6 +170,7 @@ + diff --git a/doc/devel/uml/classes_list.html b/doc/devel/uml/classes_list.html index adfef0f67..4551eea74 100644 --- a/doc/devel/uml/classes_list.html +++ b/doc/devel/uml/classes_list.html @@ -18,9 +18,10 @@
AbstractMO
ActiveProvision
Adviceentity
AdviceProvision
AdviceRequest
AdviceLink
AdviceSystem
Advisedactor
Advisoractor
AFrame
HandlingPatterninterface
Id
ImplFacade
Index
InstanceHandle
InterpolatorProvides the implementation for getting the acutal value of a time varying or automated effect/plugin parameter
Invalid
Project
ProjectorSpecial video processing node used to scale and translate image data.
Prototype
Provision
Proxy
PullInput
Query
RenderGraph
RenderStateEncapsulates the logic used to get a "current render process" in accordance to the currentyl applicable controller settings. The provided StateProxy serves to hold any mutalbe state used in the render process, so the rest of the render engine can be stateless.
RenderTask
Request
Resolution
ResolverBase
ResolvingFacility
- + - + - + - - - - - - - + + + + + + + diff --git a/doc/devel/uml/index_65.html b/doc/devel/uml/index_65.html index 9f3b83f00..d7919f28c 100644 --- a/doc/devel/uml/index_65.html +++ b/doc/devel/uml/index_65.html @@ -21,6 +21,7 @@ + @@ -31,8 +32,8 @@ - - + + @@ -65,8 +66,8 @@ - + diff --git a/doc/devel/uml/index_67.html b/doc/devel/uml/index_67.html index 484313c80..b7aadf243 100644 --- a/doc/devel/uml/index_67.html +++ b/doc/devel/uml/index_67.html @@ -35,62 +35,62 @@ - + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + - - - - + + - - - - + - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/doc/devel/uml/index_68.html b/doc/devel/uml/index_68.html index 9866cde59..0af5dabf9 100644 --- a/doc/devel/uml/index_68.html +++ b/doc/devel/uml/index_68.html @@ -33,8 +33,8 @@ - + diff --git a/doc/devel/uml/index_71.html b/doc/devel/uml/index_71.html index 7a7e73ee2..a06017401 100644 --- a/doc/devel/uml/index_71.html +++ b/doc/devel/uml/index_71.html @@ -31,6 +31,7 @@ + diff --git a/doc/devel/uml/index_73.html b/doc/devel/uml/index_73.html index e57c8da0a..60e9bcda6 100644 --- a/doc/devel/uml/index_73.html +++ b/doc/devel/uml/index_73.html @@ -24,10 +24,11 @@ + - + 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 @@ - + diff --git a/doc/devel/uml/index_79.html b/doc/devel/uml/index_79.html index c557cd0be..7a6016f25 100644 --- a/doc/devel/uml/index_79.html +++ b/doc/devel/uml/index_79.html @@ -21,9 +21,9 @@ - - + + diff --git a/doc/devel/uml/index_80.html b/doc/devel/uml/index_80.html index 1d12e75df..b75bcbbcc 100644 --- a/doc/devel/uml/index_80.html +++ b/doc/devel/uml/index_80.html @@ -81,6 +81,7 @@ + diff --git a/doc/devel/uml/index_82.html b/doc/devel/uml/index_82.html index 1e6853045..9afaba1ca 100644 --- a/doc/devel/uml/index_82.html +++ b/doc/devel/uml/index_82.html @@ -27,8 +27,8 @@ - + @@ -46,6 +46,7 @@ + diff --git a/doc/devel/uml/index_83.html b/doc/devel/uml/index_83.html index 122f728a5..20dc11c66 100644 --- a/doc/devel/uml/index_83.html +++ b/doc/devel/uml/index_83.html @@ -43,8 +43,8 @@ - + @@ -53,6 +53,7 @@ + @@ -71,15 +72,15 @@ - - + - + - + + diff --git a/doc/devel/uml/index_84.html b/doc/devel/uml/index_84.html index a164fedd0..0df6c9aef 100644 --- a/doc/devel/uml/index_84.html +++ b/doc/devel/uml/index_84.html @@ -44,13 +44,13 @@ - - + - - + + + diff --git a/doc/devel/uml/index_86.html b/doc/devel/uml/index_86.html index 5ac8ddfee..99d65bb91 100644 --- a/doc/devel/uml/index_86.html +++ b/doc/devel/uml/index_86.html @@ -22,20 +22,20 @@ + + - - - - - - + + - + + + diff --git a/doc/devel/uml/public_operations.html b/doc/devel/uml/public_operations.html index 649a88f03..360dc30db 100644 --- a/doc/devel/uml/public_operations.html +++ b/doc/devel/uml/public_operations.html @@ -36,6 +36,7 @@ + @@ -72,15 +73,16 @@ + - - - - + + + + diff --git a/src/lib/advice.hpp b/src/lib/advice.hpp index 7a33ceffa..3281c7de2 100644 --- a/src/lib/advice.hpp +++ b/src/lib/advice.hpp @@ -116,16 +116,6 @@ namespace advice { pattern_ = binding.buildMatcher(); } - void publishProvision (PointOfAdvice*); - void discardSolutions (); - void publishBindingChange(); - void publishRequestBindingChange(); - - void registerRequest(); - void deregisterRequest(); - - void* getBuffer(size_t); - public: explicit PointOfAdvice (Binding const& binding) @@ -168,6 +158,39 @@ namespace advice { + /** + * Advice Collaboration partner, internally connected to the AdviceSystem. + * Both advice::Request and advice::Provision are linked in this way + * to an internal index datastructure, which allows to carry out + * the actual advice exchange and collaboration. + */ + class AdviceLink + : public PointOfAdvice + { + protected: + void publishProvision (PointOfAdvice*); + void discardSolutions (); + void publishBindingChange(); + void publishRequestBindingChange(); + + void registerRequest(); + void deregisterRequest(); + + void* getBuffer(size_t); + + public: + explicit + AdviceLink (Binding const& binding) + : PointOfAdvice(binding) + { } + + // using default copy/assignment + }; + + + + + /** * Access point for the advising entity (server). * TODO type comment @@ -181,7 +204,7 @@ namespace advice { */ template class Provision - : public PointOfAdvice + : public AdviceLink { @@ -194,7 +217,7 @@ namespace advice { public: explicit Provision (Literal bindingSpec =0) - : PointOfAdvice (Binding(bindingSpec).addTypeGuard()) + : AdviceLink (Binding(bindingSpec).addTypeGuard()) { } ~Provision() @@ -280,7 +303,7 @@ namespace advice { */ template class Request - : public PointOfAdvice + : public AdviceLink { typedef const ActiveProvision AdviceProvision; @@ -293,7 +316,7 @@ namespace advice { public: explicit Request (Literal bindingSpec =0) - : PointOfAdvice (Binding(bindingSpec).addTypeGuard()) + : AdviceLink (Binding(bindingSpec).addTypeGuard()) { registerRequest(); } diff --git a/src/lib/advice/advice.cpp b/src/lib/advice/advice.cpp index e7f729055..0c0104e2e 100644 --- a/src/lib/advice/advice.cpp +++ b/src/lib/advice/advice.cpp @@ -39,49 +39,49 @@ namespace advice { and advice requests through an generic index datastructure. @todo rewrite to use Lumiera's block allocator / memory pool */ void* - PointOfAdvice::getBuffer(size_t) + AdviceLink::getBuffer(size_t) { UNIMPLEMENTED ("raw allocation and de-allocation of advice holding buffer"); } void - PointOfAdvice::publishProvision (PointOfAdvice*) + AdviceLink::publishProvision (PointOfAdvice*) { UNIMPLEMENTED ("change advice provision registration"); } void - PointOfAdvice::discardSolutions () + AdviceLink::discardSolutions () { UNIMPLEMENTED ("notify index of retracted advice"); } void - PointOfAdvice::publishBindingChange () + AdviceLink::publishBindingChange () { UNIMPLEMENTED ("propagate binding change to index"); } void - PointOfAdvice::publishRequestBindingChange() + AdviceLink::publishRequestBindingChange() { UNIMPLEMENTED ("propagate binding change to index"); } void - PointOfAdvice::registerRequest() + AdviceLink::registerRequest() { UNIMPLEMENTED ("registrate request with the index"); } void - PointOfAdvice::deregisterRequest() + AdviceLink::deregisterRequest() { UNIMPLEMENTED ("detach request from index"); } diff --git a/uml/lumiera/128517 b/uml/lumiera/128517 index 019609aa8..28202debe 100644 --- a/uml/lumiera/128517 +++ b/uml/lumiera/128517 @@ -1,6 +1,6 @@ format 58 "CommonLib" // CommonLib - revision 17 + revision 18 modified_by 5 "hiv" // class settings //class diagram settings @@ -272,15 +272,6 @@ ${inlines} idl_decl "" explicit_switch_type "" - classrelation 198661 // - relation 188165 ---> - stereotype "holds" - a role_name "" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; -" - classrelation_ref 198661 // - b parent class_ref 163973 // Advice - end end class 164229 "Advisor" @@ -299,7 +290,7 @@ ${inlines} cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; " classrelation_ref 199045 // - b parent class_ref 164613 // AdviceProvision + b parent class_ref 164613 // Provision end end @@ -319,11 +310,11 @@ ${inlines} cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; " classrelation_ref 198917 // - b parent class_ref 164485 // AdviceRequest + b parent class_ref 164485 // Request end end - class 164485 "AdviceRequest" + class 165893 "AdviceLink" visibility package cpp_decl "${comment}${template}class ${name}${inherit} { @@ -336,14 +327,41 @@ ${inlines} idl_decl "" explicit_switch_type "" - classrelation 198789 // - relation 188293 ---|> + classrelation 201093 // + relation 190213 ---|> a public cpp default "${type}" - classrelation_ref 198789 // + classrelation_ref 201093 // b parent class_ref 164101 // PointOfAdvice end + classrelation 201733 // + relation 190853 ---> + stereotype "attach" + a role_name "" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 201733 // + b parent class_ref 166149 // AdviceSystem + end + end + + class 164485 "Request" + visibility package + nformals 1 + formal name "AD" 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 199685 // relation 188933 ---- a role_name "" multiplicity "1" protected @@ -356,10 +374,37 @@ ${inlines} classrelation_ref 199813 // end + classrelation 201349 // + relation 190469 ---|> + a public + cpp default "${type}" + classrelation_ref 201349 // + b parent class_ref 165893 // AdviceLink + end + + operation 143749 "getAdvice" + 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 - class 164613 "AdviceProvision" + class 164613 "Provision" visibility package + nformals 1 + formal name "AD" type "class" explicit_default_value "" + explicit_extends "" cpp_decl "${comment}${template}class ${name}${inherit} { ${members} }; @@ -383,11 +428,63 @@ ${inlines} classrelation_ref 199301 // end - classrelation 199941 // - relation 189061 ---|> + classrelation 201221 // + relation 190341 ---|> a public cpp default "${type}" - classrelation_ref 199941 // + classrelation_ref 201221 // + b parent class_ref 165893 // AdviceLink + end + + operation 143621 "setAdvice" + 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 + + class 166021 "ActiveProvision" + visibility package + nformals 1 + formal name "AD" 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 201477 // + relation 190597 ---> + stereotype "holds" + a role_name "" multiplicity "1" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 201477 // + b multiplicity "1" parent class_ref 163973 // Advice + end + + classrelation 201605 // + relation 190725 ---|> + a public + cpp default "${type}" + classrelation_ref 201605 // b parent class_ref 164101 // PointOfAdvice end end @@ -414,13 +511,59 @@ ${inlines} end end + class 166149 "AdviceSystem" + 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 201989 // + relation 191109 ---> + a role_name "" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 201989 // + b parent class_ref 166277 // Index + end + end + + class 166277 "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 "" + + classrelation 201861 // + relation 190981 *--> + a role_name "" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; +" + classrelation_ref 201861 // + b parent class_ref 164741 // Binding + end + end + objectdiagram 141573 "Advice solving" write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default show_stereotype_properties default size A4 end classinstance 142981 "" - type class_ref 164613 // AdviceProvision + type class_ref 164613 // Provision attributes end relations @@ -428,7 +571,7 @@ ${inlines} end classinstance 143109 "" - type class_ref 164613 // AdviceProvision + type class_ref 164613 // Provision attributes end relations @@ -436,7 +579,7 @@ ${inlines} end classinstance 143237 "" - type class_ref 164613 // AdviceProvision + type class_ref 164613 // Provision attributes end relations @@ -460,7 +603,7 @@ ${inlines} end classinstance 143621 "" - type class_ref 164485 // AdviceRequest + type class_ref 164485 // Request attributes end relations @@ -476,7 +619,7 @@ ${inlines} end classinstance 143877 "" - type class_ref 164485 // AdviceRequest + type class_ref 164485 // Request attributes end relations @@ -522,7 +665,6 @@ ${inlines} relations end end - end classview 129285 "StreamType" diff --git a/uml/lumiera/141445.diagram b/uml/lumiera/141445.diagram index f8d4b9195..9d099c054 100644 --- a/uml/lumiera/141445.diagram +++ b/uml/lumiera/141445.diagram @@ -3,70 +3,117 @@ format 58 classcanvas 128005 class_ref 163973 // Advice 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 color lightmagenta - xyz 348 20 2000 + xyz 67 17 2000 end classcanvas 128133 class_ref 164101 // PointOfAdvice 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 265 102 2000 + xyz 266 11 2000 end classcanvas 128389 class_ref 164229 // Advisor 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 20 188 2000 + xyz 19 202 2000 end classcanvas 128517 class_ref 164357 // Advised 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 551 189 2000 + xyz 551 202 2000 end -classcanvas 128645 class_ref 164485 // AdviceRequest +classcanvas 128645 class_ref 164485 // Request 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 364 207 2000 + xyz 435 207 2000 end -classcanvas 129157 class_ref 164613 // AdviceProvision +classcanvas 129157 class_ref 164613 // Provision 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 157 207 2000 + xyz 174 207 2000 end classcanvas 129285 class_ref 164741 // Binding 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 283 207 2000 + xyz 283 219 2000 end -relationcanvas 128261 relation_ref 188165 // - from ref 128133 z 1999 stereotype "<>" xyz 340 79 3000 to ref 128005 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b +classcanvas 130437 class_ref 165893 // AdviceLink + 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 274 90 2005 end -relationcanvas 128773 relation_ref 188293 // - geometry VHV - from ref 128645 z 1999 to point 405 171 - line 128901 z 1999 to point 304 171 - line 129029 z 1999 to ref 128133 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b +classcanvas 131461 class_ref 166021 // ActiveProvision + 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 157 90 2000 +end +classcanvas 132101 class_ref 166149 // AdviceSystem + 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 405 90 2000 +end +classcanvas 132229 class_ref 166277 // 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 363 128 2000 end relationcanvas 129413 relation_ref 188421 // - from ref 128517 z 1999 stereotype "<>" xyz 475 225 3000 to ref 128645 + from ref 128517 z 1999 stereotype "<>" xyz 510 223 3000 to ref 128645 no_role_a no_role_b no_multiplicity_a no_multiplicity_b end relationcanvas 129541 relation_ref 188549 // - from ref 128389 z 1999 stereotype "<>" xyz 89 225 3000 to ref 129157 + from ref 128389 z 1999 stereotype "<>" xyz 72 223 3000 to ref 129157 no_role_a no_role_b no_multiplicity_a no_multiplicity_b end relationcanvas 129669 relation_ref 188677 // from ref 129157 z 1999 to ref 129285 no_role_a no_role_b - multiplicity_a_pos 266 232 3000 multiplicity_b_pos 259 232 3000 + multiplicity_a_pos 275 240 3000 multiplicity_b_pos 237 240 3000 end relationcanvas 129925 relation_ref 188933 // from ref 128645 z 1999 to ref 129285 no_role_a no_role_b - multiplicity_a_pos 341 232 3000 multiplicity_b_pos 347 232 3000 + multiplicity_a_pos 333 240 3000 multiplicity_b_pos 427 241 3000 end -relationcanvas 130053 relation_ref 189061 // +relationcanvas 130565 relation_ref 190213 // + from ref 130437 z 1999 to ref 128133 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 130693 relation_ref 190341 // + geometry VHV unfixed + from ref 129157 z 1999 to point 203 184 + line 131205 z 1999 to point 305 184 + line 131333 z 1999 to ref 130437 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 130821 relation_ref 190469 // + geometry VHV unfixed + from ref 128645 z 1999 to point 465 184 + line 130949 z 1999 to point 305 184 + line 131077 z 1999 to ref 130437 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 131589 relation_ref 190597 // + from ref 131461 z 1999 stereotype "<>" xyz 101 79 3000 to ref 128005 + no_role_a no_role_b + multiplicity_a_pos 114 65 3000 multiplicity_b_pos 147 92 3000 +end +relationcanvas 131717 relation_ref 190725 // geometry VHV - from ref 129157 z 1999 to point 201 171 - line 130181 z 1999 to point 304 171 - line 130309 z 1999 to ref 128133 + from ref 131461 z 1999 to point 200 67 + line 131845 z 1999 to point 305 67 + line 131973 z 1999 to ref 128133 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 132613 relation_ref 190853 // + from ref 130437 z 1999 stereotype "<>" xyz 343 96 3000 to ref 132101 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 132741 relation_ref 190981 // + from ref 132229 z 1999 to point 383 199 + line 132997 z 1999 to ref 129285 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 133125 relation_ref 191109 // + geometry HVr + from ref 132101 z 1999 to point 444 145 + line 133253 z 1999 to ref 132229 no_role_a no_role_b no_multiplicity_a no_multiplicity_b end diff --git a/uml/lumiera/5.session b/uml/lumiera/5.session index 194b63b33..522c2745b 100644 --- a/uml/lumiera/5.session +++ b/uml/lumiera/5.session @@ -8,9 +8,9 @@ diagrams 469 451 100 4 0 0 classdiagram_ref 140293 // TypedLookup 721 697 100 4 0 0 - classdiagram_ref 141445 // Advice entities + active classdiagram_ref 141445 // Advice entities 635 331 100 4 0 0 - active objectdiagram_ref 141573 // Advice solving + objectdiagram_ref 141573 // Advice solving 556 483 100 4 0 0 end show_stereotypes @@ -37,9 +37,12 @@ open classview_ref 128261 // Builder Workings usecaseview_ref 128261 // config examples class_ref 133253 // Frame - class_ref 164485 // AdviceRequest - class_ref 164613 // AdviceProvision + class_ref 164485 // Request + class_ref 164613 // Provision + class_ref 166021 // ActiveProvision class_ref 164741 // Binding + class_ref 166277 // Index + classinstance_ref 144517 // class_ref 145285 // MediaKind package_ref 131077 // ConfigQuery diff --git a/uml/lumiera/lumiera.prj b/uml/lumiera/lumiera.prj index 13b4b5791..f3b36633d 100644 --- a/uml/lumiera/lumiera.prj +++ b/uml/lumiera/lumiera.prj @@ -1,6 +1,6 @@ format 58 "lumiera" - revision 62 + revision 63 modified_by 5 "hiv" cpp_root_dir "../../src/" diff --git a/wiki/renderengine.html b/wiki/renderengine.html index 51daa57fa..9643f5c49 100644 --- a/wiki/renderengine.html +++ b/wiki/renderengine.html @@ -514,7 +514,7 @@ ColorPalette SiteUrl -
+
//pattern of collaboration for loosely coupled entities, to be used for various purposes within Proc...//
 Expecting Advice and giving Advice &mdash; this collaboration ranges somewhere between messaging and dynamic properties, but cross-cutting the primary, often hierarchical relation of dependencies. Always happening at a certain //point of advice,// which creates a distinct, static nature different of being just a convention, on the other hand, Advice is deliberately kept optional and received synchronously, albeit possibly within an continuation.
 
@@ -523,7 +523,6 @@ Expecting Advice and giving Advice &mdash; this collaboration ranges somewhe
 [>img[Entities for Advice collaboration|uml/fig141445.png]]
 
 
-
 !!Collaborators
 * the ''advised'' entity 
 * the ''advisor''
@@ -541,7 +540,7 @@ In a more elaborate scheme, the advised entity could provide a signal to be invo
 &rarr; AdviceImplementation
 
-
+
[<img[Advice solution|uml/fig141573.png]]
 
 
@@ -555,7 +554,7 @@ In order to find matches and provide advice solutions, the advice system maintai
 !organising the advice solution
 This is the tricky part of the whole advice system implementation. A naive implementation will quickly degenerate in performance, as costs are of order ~AdviceProvisions * ~AdviceRequests * (average number of binding terms). But contrary to the standard solutions for rules based systems (either forward or backward chaining), in this case here always complete binding sets are to be matched, which allows to reduce the effort.
 
-!!!solution idea
+!!!solution mechanics
 The binding patterns are organised by //predicate symbol and the lists are normalised.// A simple normalisation could be lexicographic ordering of the predicate symbols. Then the resulting representation can be //hashed.// When all predicates are constant, a match can be detected by hashtable lookup, otherwise, in case some of the predicates contain variable arguments ({{red{planned extension}}}), the lookup is followed by an unification. For this to work, we'll have to include the arity into the predicate symbols used in the first matching stage. Moreover, we'll create a //matching closure// (functor object), internally holding the arguments for unification. This approach allows for //actual interpretation of the arguments.// It is conceivable that in special cases we'll get multiple instances of the same predicate, just with different arguments. The unification of these terms needs to consider each possible pairwise combination (cartesian product) &mdash; but working out the details of the implementation can safely be deferred until we'll actually hit such a special situation, thanks to the implementation by a functor.
 
 Fortunately, the calculation of this normalised patterns can be separated completely from the actual matching. Indeed, we don't even need to store the binding patterns at all within the binding index &mdash; storing the hash value is sufficient (and in case of patterns with arguments we'll attach the matching closure functor). Yet still we need to store a marker for each successful match, together with back-links, in order to handle changing and retracting of advice.
AbstractMO
+ActiveProvision
Advice
-AdviceProvision
-AdviceRequest
+AdviceLink
+AdviceSystem
Advised
Advisor
AFrame
@@ -98,6 +99,7 @@ HandlingPattern
Id
ImplFacade
+Index
InstanceHandle
Interpolator
Invalid
@@ -150,6 +152,7 @@ Project
Projector
Prototype
+Provision
Proxy
PullInput
Query
@@ -168,6 +171,7 @@ RenderGraph
RenderState
RenderTask
+Request
Resolution
ResolverBase
ResolvingFacility
diff --git a/doc/devel/uml/fig141445.png b/doc/devel/uml/fig141445.png index 4309a900a..46c0f22b6 100644 Binary files a/doc/devel/uml/fig141445.png and b/doc/devel/uml/fig141445.png differ diff --git a/doc/devel/uml/index.html b/doc/devel/uml/index.html index 44cff5b16..6409f6544 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 : 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, arender, renderstate, label, nodecreatertool, projector, interpolator, paramprovider, mask

+

executable associated with : 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, link, parameter, renderengine, glbuf, procnode, stateproxy, edl, fixture, glpipe, main, conmanager, clip, vrender

Artifact main

Stereotype: source

@@ -1512,21 +1512,25 @@ undo
Class Advisor
Class Advised
-
-
+
+
Class Request
+
Class Provision
+
Class Binding
+
+
Class Index

Advice solving



-
Class instance

type :AdviceProvision

-
Class instance

type :AdviceProvision

-
Class instance

type :AdviceProvision

+
Class instance

type :Provision

+
Class instance

type :Provision

+
Class instance

type :Provision

Class instance

type :Advisor

Class instance

type :Advised

-
Class instance

type :AdviceRequest

+
Class instance

type :Request

Class instance

type :Advised

-
Class instance

type :AdviceRequest

+
Class instance

type :Request

Class instance

type :Binding

Class instance

type :Binding

Class instance

type :Binding

diff --git a/doc/devel/uml/index_60.html b/doc/devel/uml/index_60.html index c5e08071d..ed93942a9 100644 --- a/doc/devel/uml/index_60.html +++ b/doc/devel/uml/index_60.html @@ -30,32 +30,32 @@
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<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
AbstractMOclass
access Channeluse case
access Fileuse case
ActiveProvisionclass
activity finalactivity final
activity finalactivity final
ad1class instance
Adviceclass view
Advice entitiesclass diagram
Advice solvingobject diagram
AdviceProvisionclass
AdviceRequestclass
AdviceLinkclass
AdviceSystemclass
Advisedclass
Advisorclass
AFrameclass
Assetsclass view
ATTACHattributeattach subject to anchor (e.g. an effect to a clip)
au1class instance
aud_aclass instance
aud_Aclass instance
aud_aclass instance
audioclass instance
audio1class instance
audio1class instance
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
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
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 Paramsopaque activity action
determine Render Paramsexpansion region
determine Render Paramsopaque activity action
devnullclass instance
Dispatchercomponent
dispatchOpoperation
getoperationaccess the configuation value for a given key.
@return empty string for unknown keys, else the corresponding configuration value
get frameactivity
get_reproperation
getAdviceoperation
getAssetoperationfind and return corresponging object
getAutomationoperation
getConnectionoperationTODO
id_relation
ImplFacadeclass
In Memory Databaseclass diagram
Indexclass
inFixtureactivity action pin
inputclass instance
inputclass instance
inputclass instance
inputclass instance
instanceoperation
InstanceHandleclass
instructionsrelation
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
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
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
projectorartifactvideo ProcNode for scaling and translating image data
Prototypeclass
providerrelation
Provisionclass
Proxyclass
pulloperation
PullInputclass
relativelocationartifactPlacement implemnetaion providing various ways of attaching a MObject to another one
RelativeLocationclass
releaseBufferoperation
relTypeattributethe kind of relation denoted by this Placement
RelTypeclassthe possible kinds of RelativePlacements
relTypeattributethe kind of relation denoted by this Placement
removeoperationremove the given asset <i>together with all its dependants</i> from the internal DB
Render Entitiesclass diagram
Render Mechanicsclass diagram
renderstateartifactrenderengine state manager
RenderTaskclass
reprattributehuman readable representation of the condition characterizing this allocaton, e.g. "t >= 10"
Requestclass
resetoperationreset all session config and
start with a pristine default session.
Resolutionclass
resolveoperationcreate an actual (explicit) placement while trying to satisfy the network of adjacent objects and placements.
ServiceImplclass
Sessioncomponent
sessionartifactInterface: the session edited by the user
sessionpackagesourcecode package

Everything concerning the EDL and Session, within the MObject Subsystem
Sessionpackage
sessionpackagesourcecode package

Everything concerning the EDL and Session, within the MObject Subsystem
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
SessionImplclassImplementation class for the Session interface
sessmanagerartifactglobal session access and lifecycle
SessManagerclass
setAdviceoperation
setup Build Paramsopaque activity action
setup StateProxyopaque activity action
shared_ptrclass
Statenode
Stateclass
staterelation
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 actiontry to fetch existing definition
state actionstate action
state actionstate action
state actionstate action
StateAdapterclass
StateAdapter compositionclass diagram
StateProxyclass
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
treatoperation
TypedIDclass
TypedID::Indexclass
TypedID::Linkclass
vframeartifacta buffer and render process holding a Video frame
vid1class instance
vid_Aclass 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
video1class instance
video1class instance
videoclass instance
videoclass instance
video1class instance
video1class instance
video1class instance
video1class instance
video1class instance
video1class instance
video1class instance
VirtualMediaclass
Visitableclass
visitorpackagesub-namespace for visitor library implementation
findTypeHandler
getAppconfigaccess the configuation value for a given key.
@return empty string for unknown keys, else the corresponding configuration value
get_reprAllocation
getAdviceRequest
getAssetAssetManagerfind and return corresponging object
getAutomationFixture
getConnectionConManagerTODO
retrieveStateAdapter
rootCauseErrorIf this exception was caused by a chain of further exceptions,
return the first one registered in this throw sequence.
This works only, if every exceptions thrown as a consequence
of another exception is propperly constructed by passing
the original exception to the constructor
saveSessManagercreate a complete, serialized representation
of the current session config and contents.
@todo how to serialize, prameters, return value?
setAdviceProvision
treatApplicable
treatBuilderToolThis operation is to be overloaded for the specific MObject subclasses to be treated.
treatNodeCreatorTool
treatNodeCreatorTool
treatNodeCreatorTool
treatNodeCreatorTool
treatSegmentationTool
treatNodeCreatorTool
treatNodeCreatorTool
treatNodeCreatorTool
treatSegmentationTool
treatSegmentationTool
treatSegmentationTool
useFileFileProviderAnnounces that the application intends to use this file with mode (READ|WRITE|READWRITE)
useTemporaryStorageFileProviderProvides a pool for interminate frames
whatError