From eb2d3096014d02e3d8ac51d3dc2fc62fe7ba49dc Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Sat, 24 Oct 2009 16:03:14 +0200 Subject: [PATCH] WIP: reworked the design further --- doc/devel/uml/fig137733.png | Bin 14443 -> 15785 bytes .../mobject/session/query-resolver-test.cpp | 8 ++-- uml/lumiera/131077 | 35 +++++++++++----- uml/lumiera/137733.diagram | 38 ++++++++++++------ uml/lumiera/5.session | 4 +- uml/lumiera/lumiera.prj | 2 +- wiki/renderengine.html | 7 +++- 7 files changed, 62 insertions(+), 32 deletions(-) diff --git a/doc/devel/uml/fig137733.png b/doc/devel/uml/fig137733.png index 5e81df28533b417b549890fd8be080d926d15aab..764c97c51ed0d6763149f40380f6169420d1f74d 100644 GIT binary patch literal 15785 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 F{6A8r`_=#e literal 14443 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 firstQuery; - resolver.issue (firstQuery); - explore (firstQuery); + explore (firstQuery (resolver)); Query secondQuery; - resolver.issue (secondQuery); - explore (secondQuery); + explore (secondQuery(resolver)); } template static void - explore (typename Query::iterator const& ii) + explore (typename Query::iterator ii) { cout << "Query-Results: " << showSizeof(ii) << endl;; while (ii) diff --git a/uml/lumiera/131077 b/uml/lumiera/131077 index 646250274..466d94b36 100644 --- a/uml/lumiera/131077 +++ b/uml/lumiera/131077 @@ -1,6 +1,6 @@ format 58 "ConfigQuery" // CommonLib::ConfigQuery - revision 13 + revision 14 modified_by 5 "hiv" // class settings //class diagram settings @@ -651,6 +651,23 @@ ${inlines} idl_decl "" explicit_switch_type "" + classrelation 187397 // pos_ () + relation 177029 ---> + a role_name "pos_" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 187397 // pos_ () + b parent class_ref 156933 // Result + end + + classrelation 187525 // source_ () + relation 177157 ---> + a role_name "source_" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 187525 // source_ () + b parent class_ref 158085 // SolutionResultSet + end end class 155525 "ResolvingFacility" @@ -681,17 +698,15 @@ ${inlines} cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; " classrelation_ref 186117 // - b parent class_ref 158085 // Solution + b parent class_ref 158085 // SolutionResultSet end end - class 158085 "Solution" + class 158085 "SolutionResultSet" visibility package - nactuals 2 + nactuals 1 actual class class_ref 155141 // Query rank 0 explicit_value "" - actual class class_ref 155269 // Cursor - rank 0 explicit_value "" cpp_decl "${comment}${template}class ${name}${inherit} { ${members} }; @@ -703,12 +718,12 @@ ${inlines} idl_decl "" explicit_switch_type "" - classrelation 185989 // - relation 175621 ---|> + classrelation 187269 // + relation 176901 ---|> a public cpp default "${type}" - classrelation_ref 185989 // - b parent class_ref 155269 // Cursor + classrelation_ref 187269 // + b parent class_ref 155141 // Query end end end diff --git a/uml/lumiera/137733.diagram b/uml/lumiera/137733.diagram index 5926ed423..f6a2a9bb3 100644 --- a/uml/lumiera/137733.diagram +++ b/uml/lumiera/137733.diagram @@ -10,7 +10,7 @@ classcanvas 128133 class_ref 155141 // Query end classcanvas 128517 class_ref 155397 // IterAdapter 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 46 222 2000 + xyz 24 222 2000 end classcanvas 128645 class_ref 155525 // ResolvingFacility 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 @@ -28,7 +28,7 @@ classcanvas 131205 class_ref 155269 // Cursor 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 246 339 2005 end -classcanvas 133509 class_ref 158085 // Solution +classcanvas 133509 class_ref 158085 // SolutionResultSet 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 355 444 2000 end @@ -56,24 +56,38 @@ relationcanvas 132357 relation_ref 169733 // end relationcanvas 133125 relation_ref 174469 // geometry VHr - from ref 128133 z 1999 stereotype "<>" xyz 95 319 3000 to point 77 317 + from ref 128133 z 1999 stereotype "<>" xyz 64 319 3000 to point 55 317 line 133381 z 1999 to ref 128517 no_role_a no_role_b no_multiplicity_a no_multiplicity_b end -relationcanvas 133637 relation_ref 175621 // - geometry VHV unfixed - from ref 133509 z 1999 to point 379 411 - line 133765 z 1999 to point 266 411 - line 133893 z 1999 to ref 131205 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -end relationcanvas 134021 relation_ref 175749 // decenter_end 830 - from ref 128645 z 1999 stereotype "<>" xyz 428 406 3000 to ref 133509 + from ref 128645 z 1999 stereotype "<>" xyz 450 406 3000 to ref 133509 no_role_a no_role_b no_multiplicity_a no_multiplicity_b end +relationcanvas 134149 relation_ref 176901 // + geometry VHV unfixed + from ref 133509 z 1999 to point 402 422 + line 134277 z 1999 to point 195 422 + line 134405 z 1999 to ref 128133 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 134789 relation_ref 177029 // + from ref 128517 z 1999 to point 89 239 + line 135301 z 1999 to ref 131077 + role_a_pos 101 240 3000 no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 134917 relation_ref 177157 // + from ref 128517 z 1999 to point 89 251 + line 135557 z 1999 to point 144 251 + line 135173 z 1999 to point 195 461 + line 135045 z 1999 to ref 133509 + role_a_pos 101 253 3000 no_role_b + no_multiplicity_a no_multiplicity_b +end preferred_whz 629 529 1 end diff --git a/uml/lumiera/5.session b/uml/lumiera/5.session index c9ca3b9b5..2cda23c29 100644 --- a/uml/lumiera/5.session +++ b/uml/lumiera/5.session @@ -4,10 +4,8 @@ diagrams 575 622 100 4 0 0 classdiagram_ref 136325 // Focus of Query 582 515 100 4 0 0 - classdiagram_ref 136581 // MObjectRef - 651 533 100 4 0 38 active classdiagram_ref 137733 // Query Interface - 629 529 100 4 0 0 + 629 542 100 4 0 0 end show_stereotypes selected diff --git a/uml/lumiera/lumiera.prj b/uml/lumiera/lumiera.prj index 2293af356..99a17c9aa 100644 --- a/uml/lumiera/lumiera.prj +++ b/uml/lumiera/lumiera.prj @@ -1,6 +1,6 @@ format 58 "lumiera" - revision 56 + revision 57 modified_by 5 "hiv" cpp_root_dir "../../src/" diff --git a/wiki/renderengine.html b/wiki/renderengine.html index 1aaf3cdd0..faa4b3695 100644 --- a/wiki/renderengine.html +++ b/wiki/renderengine.html @@ -3476,7 +3476,7 @@ Then, running the goal {{{:-resolve(T, stream(T,mpeg)).}}} would search a Track In the design of the Lumiera Proc Layer done thus far, we provide //no possibility to introduce a new object kind// into the system via plugin interface. The system uses a fixed collection of classes intended to cover all needs (Clip, Effect, Track, Pipe, Label, Automation, ~Macro-Clips). Thus, plugins will only be able to provide new parametrisations of existing classes. This should not be any real limitation, because the whole system is designed to achieve most of its functionality by freely combining rather basic object kinds. As a plus, it plays nicely with any plain-C based plugin interface. For example, we will have C++ adapter classes for the most common sorts of effect plugin (pull system and synchronous frame-by-frame push with buffering) with a thin C adaptation layer for the specific external plugin systems used. Everything beyond this point can be considered "condiguration data" (including the actual plugin implementation to be loaded) -
+
Within the Lumiera Proc-Layer, there is a general preference for issuing [[queries|Query]] over hard wired configuration (or even mere table based configuration). This leads to the demand of exposing a //possibility to issue queries// &mdash; without actually disclosing much details of the facility implementing this service. For example, for shaping the general session interface (in 10/09), we need a means of exposing a hook to discover HighLevelModel contents, without disclosing how the model is actually organised internally (namely by using an PlacementIndex).
 
 !Analysis of the problem
@@ -3493,6 +3493,11 @@ The situation can be decomposed as follows.[>img[QueryResolver|uml/fig137733.
 *# client issues a query and expect it just to be handled by //some//&nbsp; suitable resolver
 * thus it's difficult to determine, //what// part of the issued query needs automatic management. More specifically, is it possible for the client to dispose the query after issuing it, but keeping and exploring the iterator obtained as result of the query?
 * and then there is the notorious problem of re-gaining the specifically typed context //behind//&nbsp; the invocation interface. Especially, the facility processing the query needs to know both the expected result type and details about the concrete query and its parametrisation. &rarr; TypedQueryProblem
+
+!!!Decisions
+* while, in the use case currently at hand, the query instance is created by the client on the stack, the possibility of managing the queries internally is deliberately kept open. Because otherwise, we had to commit to a specific way of obtaining results, for example by assuming always to use an embedded STL iterator.
+* we endorse that uttermost performance is less important than clean separation an extensibility. Thus we accept accessing the current position pointer through reference and we package a ref-counting mechanism together with this current position ("Cursor")
+* the result set is not tied to the query &mdash; at least not by design. The query can be discarded while further exploring the result set.