From 5968d35cdfb1a8e50a7269265b1df7e7f644594d Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Sun, 25 Oct 2009 21:39:02 +0100 Subject: [PATCH] WIP maybe resolved now the knot in my design...? --- doc/devel/uml/fig137733.png | Bin 15785 -> 17651 bytes src/proc/mobject/session/query-resolver.cpp | 9 +- src/proc/mobject/session/query-resolver.hpp | 55 ++++--- uml/lumiera/131077 | 160 +++++++++++++------- uml/lumiera/137733.diagram | 89 +++++++---- uml/lumiera/5.session | 7 +- wiki/renderengine.html | 5 +- 7 files changed, 217 insertions(+), 108 deletions(-) diff --git a/doc/devel/uml/fig137733.png b/doc/devel/uml/fig137733.png index 764c97c51ed0d6763149f40380f6169420d1f74d..61b258961423411b1dcd8827940a13f7a0119512 100644 GIT binary patch literal 17651 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 F{6A8r`_=#e diff --git a/src/proc/mobject/session/query-resolver.cpp b/src/proc/mobject/session/query-resolver.cpp index 9d59f7c3a..323e1e3d7 100644 --- a/src/proc/mobject/session/query-resolver.cpp +++ b/src/proc/mobject/session/query-resolver.cpp @@ -32,12 +32,19 @@ namespace session { + /* generate vtables here */ + + Goal::~Goal() { } + QueryResolver::~QueryResolver() { } + QueryResolver::Resolution::~Resolution() { } + + /** TODO??? */ - QueryResolver::Invocation + QueryResolver::Resolution QueryResolver::issue (Goal& query) { if (!canHandleQuery (query.getQID())) diff --git a/src/proc/mobject/session/query-resolver.hpp b/src/proc/mobject/session/query-resolver.hpp index 1290bd5e8..a4e8d3544 100644 --- a/src/proc/mobject/session/query-resolver.hpp +++ b/src/proc/mobject/session/query-resolver.hpp @@ -44,12 +44,12 @@ namespace session { using util::unConst; -// class Scope; class Goal; class QueryResolver; + class QueryResolver::Resolution; /** Allow for taking ownership of a result set */ - typedef std::tr1::shared_ptr PGoal; + typedef std::tr1::shared_ptr PReso; @@ -60,7 +60,7 @@ namespace session { class Goal { public: - virtual ~Goal() {} + virtual ~Goal() ; enum Kind { GENERIC = 0 @@ -99,8 +99,6 @@ namespace session { }; - static bool hasNext (PGoal thisQuery, Result& pos) { return thisQuery->isValid(pos); } ////TICKET #375 - static void iterNext (PGoal thisQuery, Result& pos) { thisQuery->nextResult(pos); } protected: QueryID id_; @@ -109,9 +107,6 @@ namespace session { : id_(quid) { } - /* iteration control */ - virtual bool isValid (Result& pos) =0; /////TODO danger of template bloat? - virtual Result const& nextResult(Result& pos) =0; }; @@ -153,7 +148,7 @@ namespace session { }; - typedef lib::IterAdapter iterator; + typedef lib::IterAdapter iterator; iterator operator() (QueryResolver const& resolver); @@ -171,23 +166,46 @@ namespace session { virtual ~QueryResolver() ; - - struct Invocation + /** + * ABC denoting the result set + * of an individual query resolution + */ + class Resolution { - PGoal resultSet; - Goal::Result firstResult; + typedef Goal::Result Result; + + public: + virtual ~Resolution(); + + static bool + hasNext (PReso&, Result& pos) ////TICKET #375 + { + return bool(pos); + } + + static void + iterNext (PReso& resultSet, Result& pos) + { + resultSet->nextResult(pos); + } + + virtual Result prepareResolution() =0; + + protected: + + virtual Result const& nextResult(Result& pos) =0; }; + /** issue a query to retrieve contents * The query is handed over internally to a suitable resolver implementation. - * @return Invocation data, containing a smart-pointer which \em owns the result set, - * and the first result or NULL result. Usable for building an IterAdapter. + * @return concrete Resolution of the query (ResultSet), \em managed by smart-pointer. * @throw lumiera::Error subclass if query evaluation flounders. * This might be broken logic, invalid input, misconfiguration * or failure of an external facility used for resolution. * @note a query may yield no results, in which case the iterator is empty. */ - Invocation issue (Goal& query); + PReso issue (Goal& query); protected: @@ -201,8 +219,9 @@ namespace session { inline typename Query::iterator Query::operator() (QueryResolver const& resolver) { - resolver.issue (*this); - return iterator (); + PReso resultSet = resolver.issue (*this); + Result first = prepareResolution(); + return iterator (resultSet, first); } diff --git a/uml/lumiera/131077 b/uml/lumiera/131077 index 466d94b36..e6458174f 100644 --- a/uml/lumiera/131077 +++ b/uml/lumiera/131077 @@ -1,6 +1,6 @@ format 58 "ConfigQuery" // CommonLib::ConfigQuery - revision 14 + revision 17 modified_by 5 "hiv" // class settings //class diagram settings @@ -489,6 +489,64 @@ ${class}::${name} ${(}${)}${const}${volatile} ${throw}${staticnl} + end + + class 159237 "Resolution" + 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 140037 "isValid" + public explicit_return_type "bool" + nparams 1 + param in name "pos" type class_ref 156933 // Result + 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 + + operation 140165 "nextResult" + public return_type class_ref 156933 // Result + 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 + + classrelation 190469 // + relation 180101 ---> + a role_name "" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 190469 // + b parent class_ref 156933 // Result + end end end @@ -518,41 +576,6 @@ ${inlines} idl_decl "" explicit_switch_type "" - end - - operation 140037 "isValid" - public explicit_return_type "bool" - nparams 1 - param in name "pos" type class_ref 156933 // Result - 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 - - operation 140165 "nextResult" - public return_type class_ref 156933 // Result - 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 classrelation 181765 // @@ -651,22 +674,22 @@ ${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 ---> + classrelation 188805 // source_ () + relation 178437 ---> 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 + classrelation_ref 188805 // source_ () + b parent class_ref 159237 // Resolution + end + + classrelation 188933 // pos_ () + relation 178565 ---> + a role_name "pos_" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 188933 // pos_ () + b parent class_ref 155269 // Cursor end end @@ -698,15 +721,36 @@ ${inlines} cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; " classrelation_ref 186117 // - b parent class_ref 158085 // SolutionResultSet + b parent class_ref 158085 // ResultSet + end + + classrelation 190085 // + relation 179717 -_-> + a default + cpp default "#include in source" + classrelation_ref 190085 // + b parent class_ref 155525 // ResolvingFacility + end + + classrelation 190213 // + relation 179845 -_-> + a default + cpp default "#include in source" + classrelation_ref 190213 // + b parent class_ref 153989 // QueryResolver + end + + classrelation 190341 // + relation 179973 -_-> + a default + cpp default "#include in source" + classrelation_ref 190341 // + b parent class_ref 153989 // QueryResolver end end - class 158085 "SolutionResultSet" + class 158085 "ResultSet" visibility package - nactuals 1 - actual class class_ref 155141 // Query - rank 0 explicit_value "" cpp_decl "${comment}${template}class ${name}${inherit} { ${members} }; @@ -718,12 +762,12 @@ ${inlines} idl_decl "" explicit_switch_type "" - classrelation 187269 // - relation 176901 ---|> + classrelation 188677 // + relation 178309 ---|> a public cpp default "${type}" - classrelation_ref 187269 // - b parent class_ref 155141 // Query + classrelation_ref 188677 // + b parent class_ref 159237 // Resolution end end end diff --git a/uml/lumiera/137733.diagram b/uml/lumiera/137733.diagram index f6a2a9bb3..918a3b519 100644 --- a/uml/lumiera/137733.diagram +++ b/uml/lumiera/137733.diagram @@ -2,7 +2,7 @@ format 58 classcanvas 128005 class_ref 153989 // QueryResolver 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 262 25 2000 + xyz 394 49 2000 end classcanvas 128133 class_ref 155141 // Query 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 @@ -10,11 +10,11 @@ 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 24 222 2000 + xyz 52 373 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 - xyz 427 339 2000 + xyz 382 362 2015 end classcanvas 129797 class_ref 156805 // Goal 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,9 +28,23 @@ 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 // SolutionResultSet +classcanvas 133509 class_ref 158085 // ResultSet 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 + xyz 343 439 2000 +end +classcanvas 135685 class_ref 159237 // Resolution + 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 340 209 2004 +end +note 136965 "Client" + color lightmediumgreen xyzwh 23 431 2000 52 35 +classcanvas 137093 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 + xyz 438 344 2010 +end +classcanvas 137221 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 + xyz 492 327 1994 end line 128389 ---+ from ref 131077 z 1999 to ref 129797 @@ -48,46 +62,67 @@ relationcanvas 132229 relation_ref 171141 // end relationcanvas 132357 relation_ref 169733 // geometry VHV unfixed - from ref 128645 z 1999 to point 473 128 - line 132485 z 1999 to point 303 128 - line 132613 z 1999 to ref 128005 + from ref 128645 z 1999 to point 428 227 + line 138117 z 1999 to point 435 227 + line 138245 z 1999 to ref 128005 no_role_a no_role_b no_multiplicity_a no_multiplicity_b end relationcanvas 133125 relation_ref 174469 // geometry VHr - from ref 128133 z 1999 stereotype "<>" xyz 64 319 3000 to point 55 317 + from ref 128133 z 1999 stereotype "<>" xyz 91 307 3000 to point 83 317 line 133381 z 1999 to ref 128517 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 450 406 3000 to ref 133509 + from ref 128645 z 1999 stereotype "<>" xyz 406 417 3000 to ref 133509 no_role_a no_role_b no_multiplicity_a no_multiplicity_b end -relationcanvas 134149 relation_ref 176901 // +line 135813 ---+ + from ref 135685 z 1999 to ref 128005 +relationcanvas 135941 relation_ref 178309 // + from ref 133509 z 1999 to ref 135685 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 136069 relation_ref 178437 // + decenter_begin 603 + from ref 128517 z 1999 to point 116 405 + line 136197 z 1999 to point 298 405 + line 136325 z 1999 to ref 135685 + role_a_pos 124 406 3000 no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 136581 relation_ref 178565 // + from ref 128517 z 1999 to point 117 392 + line 136837 z 1999 to point 219 392 + line 136709 z 1999 to ref 131205 + role_a_pos 124 393 3000 no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 137733 relation_ref 179845 // + geometry VHV + from ref 137093 z 1999 to point 484 227 + line 137861 z 1999 to point 435 227 + line 137989 z 1999 to ref 128005 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 138373 relation_ref 179973 // 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 + from ref 137221 z 1999 to point 538 227 + line 138501 z 1999 to point 435 227 + line 138629 z 1999 to ref 128005 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 +relationcanvas 138757 relation_ref 180101 // + from ref 135685 z 1999 to ref 131077 + no_role_a 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 +preferred_whz 612 547 1 end diff --git a/uml/lumiera/5.session b/uml/lumiera/5.session index 2cda23c29..2667b5cd6 100644 --- a/uml/lumiera/5.session +++ b/uml/lumiera/5.session @@ -5,7 +5,7 @@ diagrams classdiagram_ref 136325 // Focus of Query 582 515 100 4 0 0 active classdiagram_ref 137733 // Query Interface - 629 542 100 4 0 0 + 612 547 100 4 0 0 end show_stereotypes selected @@ -25,11 +25,14 @@ open class_ref 133253 // Frame classview_ref 129541 // InterfaceSystem classview_ref 129285 // StreamType - class_ref 153989 // QueryResolver + classdiagram_ref 137733 // Query Interface + operation_ref 140037 // isValid + operation_ref 140165 // nextResult class_ref 156933 // Result classrelation_ref 181765 // class_ref 155141 // Query class_ref 155525 // ResolvingFacility + class_ref 158085 // ResultSet classview_ref 132229 // Custom holders classview_ref 128266 // SmartPointers end diff --git a/wiki/renderengine.html b/wiki/renderengine.html index 18c9131e2..4b3fbe2ac 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
@@ -3496,8 +3496,9 @@ The situation can be decomposed as follows.[>img[QueryResolver|uml/fig137733.
 
 !!!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 use a ref-counting mechanism alongside with the handed out 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 use a ref-counting mechanism alongside with the iterator to be handed out to the client
 * 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.
+* for dealing with the TypedQueryProblem, we require the concrete resolving facilities to register with a system startup hook, to build a dispatcher table on the implementation side. This allows us to downcast to the concrete Cursor type on iteration and results retrieval.