WIP maybe resolved now the knot in my design...?
This commit is contained in:
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 |
|
|
@ -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()))
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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)
|
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)
|
||||||
</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// &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// &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.[>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 &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 &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">
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue