WIP maybe resolved now the knot in my design...?

This commit is contained in:
Fischlurch 2009-10-25 21:39:02 +01:00
parent 5d9671cb2c
commit 5968d35cdf
7 changed files with 217 additions and 108 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View file

@ -32,12 +32,19 @@ namespace session {
/* generate vtables here */
Goal::~Goal() { }
QueryResolver::~QueryResolver() { } QueryResolver::~QueryResolver() { }
QueryResolver::Resolution::~Resolution() { }
/** TODO??? */ /** TODO??? */
QueryResolver::Invocation QueryResolver::Resolution
QueryResolver::issue (Goal& query) QueryResolver::issue (Goal& query)
{ {
if (!canHandleQuery (query.getQID())) if (!canHandleQuery (query.getQID()))

View file

@ -44,12 +44,12 @@ namespace session {
using util::unConst; using util::unConst;
// class Scope;
class Goal; class Goal;
class QueryResolver; class QueryResolver;
class QueryResolver::Resolution;
/** Allow for taking ownership of a result set */ /** Allow for taking ownership of a result set */
typedef std::tr1::shared_ptr<Goal> PGoal; typedef std::tr1::shared_ptr<QueryResolver::Resolution> PReso;
@ -60,7 +60,7 @@ namespace session {
class Goal class Goal
{ {
public: public:
virtual ~Goal() {} virtual ~Goal() ;
enum Kind enum Kind
{ GENERIC = 0 { 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: protected:
QueryID id_; QueryID id_;
@ -109,9 +107,6 @@ namespace session {
: id_(quid) : 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<Cursor,PGoal> iterator; typedef lib::IterAdapter<Cursor,PResolution> iterator;
iterator operator() (QueryResolver const& resolver); iterator operator() (QueryResolver const& resolver);
@ -171,23 +166,46 @@ namespace session {
virtual ~QueryResolver() ; virtual ~QueryResolver() ;
/**
struct Invocation * ABC denoting the result set
* of an individual query resolution
*/
class Resolution
{ {
PGoal resultSet; typedef Goal::Result Result;
Goal::Result firstResult;
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 /** issue a query to retrieve contents
* The query is handed over internally to a suitable resolver implementation. * The query is handed over internally to a suitable resolver implementation.
* @return Invocation data, containing a smart-pointer which \em owns the result set, * @return concrete Resolution of the query (ResultSet), \em managed by smart-pointer.
* and the first result or NULL result. Usable for building an IterAdapter.
* @throw lumiera::Error subclass if query evaluation flounders. * @throw lumiera::Error subclass if query evaluation flounders.
* This might be broken logic, invalid input, misconfiguration * This might be broken logic, invalid input, misconfiguration
* or failure of an external facility used for resolution. * or failure of an external facility used for resolution.
* @note a query may yield no results, in which case the iterator is empty. * @note a query may yield no results, in which case the iterator is empty.
*/ */
Invocation issue (Goal& query); PReso issue (Goal& query);
protected: protected:
@ -201,8 +219,9 @@ namespace session {
inline typename Query<RES>::iterator inline typename Query<RES>::iterator
Query<RES>::operator() (QueryResolver const& resolver) Query<RES>::operator() (QueryResolver const& resolver)
{ {
resolver.issue (*this); PReso resultSet = resolver.issue (*this);
return iterator (); Result first = prepareResolution();
return iterator (resultSet, first);
} }

View file

@ -1,6 +1,6 @@
format 58 format 58
"ConfigQuery" // CommonLib::ConfigQuery "ConfigQuery" // CommonLib::ConfigQuery
revision 14 revision 17
modified_by 5 "hiv" modified_by 5 "hiv"
// class settings // class settings
//class diagram 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 // <unidirectional association>
relation 180101 --->
a role_name "" protected
cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value};
"
classrelation_ref 190469 // <unidirectional association>
b parent class_ref 156933 // Result
end
end end
end end
@ -518,41 +576,6 @@ ${inlines}
idl_decl "" idl_decl ""
explicit_switch_type "" 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 end
classrelation 181765 // <dependency> classrelation 181765 // <dependency>
@ -651,22 +674,22 @@ ${inlines}
idl_decl "" idl_decl ""
explicit_switch_type "" explicit_switch_type ""
classrelation 187397 // pos_ (<unidirectional association>) classrelation 188805 // source_ (<unidirectional association>)
relation 177029 ---> relation 178437 --->
a role_name "pos_" protected
cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value};
"
classrelation_ref 187397 // pos_ (<unidirectional association>)
b parent class_ref 156933 // Result
end
classrelation 187525 // source_ (<unidirectional association>)
relation 177157 --->
a role_name "source_" protected a role_name "source_" protected
cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value};
" "
classrelation_ref 187525 // source_ (<unidirectional association>) classrelation_ref 188805 // source_ (<unidirectional association>)
b parent class_ref 158085 // SolutionResultSet b parent class_ref 159237 // Resolution
end
classrelation 188933 // pos_ (<unidirectional association>)
relation 178565 --->
a role_name "pos_" protected
cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value};
"
classrelation_ref 188933 // pos_ (<unidirectional association>)
b parent class_ref 155269 // Cursor
end end
end end
@ -698,15 +721,36 @@ ${inlines}
cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value};
" "
classrelation_ref 186117 // <unidirectional association> classrelation_ref 186117 // <unidirectional association>
b parent class_ref 158085 // SolutionResultSet b parent class_ref 158085 // ResultSet
end
classrelation 190085 // <dependency>
relation 179717 -_->
a default
cpp default "#include in source"
classrelation_ref 190085 // <dependency>
b parent class_ref 155525 // ResolvingFacility
end
classrelation 190213 // <dependency>
relation 179845 -_->
a default
cpp default "#include in source"
classrelation_ref 190213 // <dependency>
b parent class_ref 153989 // QueryResolver
end
classrelation 190341 // <dependency>
relation 179973 -_->
a default
cpp default "#include in source"
classrelation_ref 190341 // <dependency>
b parent class_ref 153989 // QueryResolver
end end
end end
class 158085 "SolutionResultSet" class 158085 "ResultSet"
visibility package visibility package
nactuals 1
actual class class_ref 155141 // Query
rank 0 explicit_value ""
cpp_decl "${comment}${template}class ${name}${inherit} cpp_decl "${comment}${template}class ${name}${inherit}
{ {
${members} }; ${members} };
@ -718,12 +762,12 @@ ${inlines}
idl_decl "" idl_decl ""
explicit_switch_type "" explicit_switch_type ""
classrelation 187269 // <generalisation> classrelation 188677 // <generalisation>
relation 176901 ---|> relation 178309 ---|>
a public a public
cpp default "${type}" cpp default "${type}"
classrelation_ref 187269 // <generalisation> classrelation_ref 188677 // <generalisation>
b parent class_ref 155141 // Query b parent class_ref 159237 // Resolution
end end
end end
end end

View file

@ -2,7 +2,7 @@ format 58
classcanvas 128005 class_ref 153989 // QueryResolver 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 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 end
classcanvas 128133 class_ref 155141 // Query 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 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 end
classcanvas 128517 class_ref 155397 // IterAdapter 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 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 end
classcanvas 128645 class_ref 155525 // ResolvingFacility 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 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 end
classcanvas 129797 class_ref 156805 // Goal 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 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 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 xyz 246 339 2005
end 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 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 end
line 128389 ---+ line 128389 ---+
from ref 131077 z 1999 to ref 129797 from ref 131077 z 1999 to ref 129797
@ -48,46 +62,67 @@ relationcanvas 132229 relation_ref 171141 // <realization>
end end
relationcanvas 132357 relation_ref 169733 // <realization> relationcanvas 132357 relation_ref 169733 // <realization>
geometry VHV unfixed geometry VHV unfixed
from ref 128645 z 1999 to point 473 128 from ref 128645 z 1999 to point 428 227
line 132485 z 1999 to point 303 128 line 138117 z 1999 to point 435 227
line 132613 z 1999 to ref 128005 line 138245 z 1999 to ref 128005
no_role_a no_role_b no_role_a no_role_b
no_multiplicity_a no_multiplicity_b no_multiplicity_a no_multiplicity_b
end end
relationcanvas 133125 relation_ref 174469 // <unidirectional association> relationcanvas 133125 relation_ref 174469 // <unidirectional association>
geometry VHr geometry VHr
from ref 128133 z 1999 stereotype "<<type-def>>" xyz 64 319 3000 to point 55 317 from ref 128133 z 1999 stereotype "<<type-def>>" xyz 91 307 3000 to point 83 317
line 133381 z 1999 to ref 128517 line 133381 z 1999 to ref 128517
no_role_a no_role_b no_role_a no_role_b
no_multiplicity_a no_multiplicity_b no_multiplicity_a no_multiplicity_b
end end
relationcanvas 134021 relation_ref 175749 // <unidirectional association> relationcanvas 134021 relation_ref 175749 // <unidirectional association>
decenter_end 830 decenter_end 830
from ref 128645 z 1999 stereotype "<<produce>>" xyz 450 406 3000 to ref 133509 from ref 128645 z 1999 stereotype "<<produce>>" xyz 406 417 3000 to ref 133509
no_role_a no_role_b no_role_a no_role_b
no_multiplicity_a no_multiplicity_b no_multiplicity_a no_multiplicity_b
end end
relationcanvas 134149 relation_ref 176901 // <generalisation> line 135813 ---+
from ref 135685 z 1999 to ref 128005
relationcanvas 135941 relation_ref 178309 // <generalisation>
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 // <unidirectional association>
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 // <unidirectional association>
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 // <dependency>
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 // <dependency>
geometry VHV unfixed geometry VHV unfixed
from ref 133509 z 1999 to point 402 422 from ref 137221 z 1999 to point 538 227
line 134277 z 1999 to point 195 422 line 138501 z 1999 to point 435 227
line 134405 z 1999 to ref 128133 line 138629 z 1999 to ref 128005
no_role_a no_role_b no_role_a no_role_b
no_multiplicity_a no_multiplicity_b no_multiplicity_a no_multiplicity_b
end end
relationcanvas 134789 relation_ref 177029 // <unidirectional association> relationcanvas 138757 relation_ref 180101 // <unidirectional association>
from ref 128517 z 1999 to point 89 239 from ref 135685 z 1999 to ref 131077
line 135301 z 1999 to ref 131077 no_role_a no_role_b
role_a_pos 101 240 3000 no_role_b
no_multiplicity_a no_multiplicity_b no_multiplicity_a no_multiplicity_b
end end
relationcanvas 134917 relation_ref 177157 // <unidirectional association> preferred_whz 612 547 1
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 end

View file

@ -5,7 +5,7 @@ diagrams
classdiagram_ref 136325 // Focus of Query classdiagram_ref 136325 // Focus of Query
582 515 100 4 0 0 582 515 100 4 0 0
active classdiagram_ref 137733 // Query Interface active classdiagram_ref 137733 // Query Interface
629 542 100 4 0 0 612 547 100 4 0 0
end end
show_stereotypes show_stereotypes
selected selected
@ -25,11 +25,14 @@ open
class_ref 133253 // Frame class_ref 133253 // Frame
classview_ref 129541 // InterfaceSystem classview_ref 129541 // InterfaceSystem
classview_ref 129285 // StreamType 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 class_ref 156933 // Result
classrelation_ref 181765 // <dependency> classrelation_ref 181765 // <dependency>
class_ref 155141 // Query class_ref 155141 // Query
class_ref 155525 // ResolvingFacility class_ref 155525 // ResolvingFacility
class_ref 158085 // ResultSet
classview_ref 132229 // Custom holders classview_ref 132229 // Custom holders
classview_ref 128266 // SmartPointers classview_ref 128266 // SmartPointers
end end

View file

@ -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 &quot;condiguration data&quot; (including the actual plugin implementation to be loaded) 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 &quot;condiguration data&quot; (including the actual plugin implementation to be loaded)
</pre> </pre>
</div> </div>
<div title="QueryResolver" modifier="Ichthyostega" modified="200910251518" created="200910210300" tags="Rules spec draft img" changecount="11"> <div title="QueryResolver" modifier="Ichthyostega" modified="200910251907" created="200910210300" tags="Rules spec draft img" changecount="15">
<pre>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// &amp;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). <pre>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// &amp;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 !Analysis of the problem
@ -3496,8 +3496,9 @@ The situation can be decomposed as follows.[&gt;img[QueryResolver|uml/fig137733.
!!!Decisions !!!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. * 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 &amp;mdash; at least not by design. The query can be discarded while further exploring the result set. * the result set is not tied to the query &amp;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.
</pre> </pre>
</div> </div>
<div title="RSSReaderPlugin" modifier="Ichthyostega" created="200708081515" tags="systemConfig" changecount="1"> <div title="RSSReaderPlugin" modifier="Ichthyostega" created="200708081515" tags="systemConfig" changecount="1">