26#ifndef LUMIERA_QUERY_RESOLVER_H
27#define LUMIERA_QUERY_RESOLVER_H
41 using std::unique_ptr;
47 class QueryDispatcher;
50 typedef std::shared_ptr<Resolution>
PReso;
75 resultSet->nextResult(pos);
107 virtual operator string ()
const =0;
139 template<
typename RES>
144 Result first = resultSet->prepareResolution();
152 template<
typename RES>
156 return resolveBy (resolver);
Adapter for building an implementation of the »Lumiera Forward Iterator« concept.
Single Solution, possibly part of a result set.
Query ABC: unspecific goal for resolution or retrieval.
QueryID const & getQID() const
Interface: a facility for resolving (some kind of) queries A concrete subclass has the ability to cre...
PReso issue(Goal const &query) const
issue a query to retrieve contents The query is handed over internally to a suitable resolver impleme...
void installResolutionCase(Goal::QueryID const &, ResolutionMechanism)
unique_ptr< QueryDispatcher > dispatcher_
virtual bool canHandleQuery(Goal::QueryID const &) const =0
bool canHandle(Goal const &) const
function< Resolution *(Goal const &)> ResolutionMechanism
iterator operator()(QueryResolver const &resolver) const
notational convenience shortcut, synonymous to Query<RES>::resolveBy()
iterator resolveBy(QueryResolver const &resolver) const
ABC representing the result set of an individual query resolution.
virtual Result prepareResolution()=0
virtual void nextResult(Result &pos)=0
friend void iterNext(PReso &resultSet, Result &pos)
friend bool checkPoint(PReso const &, Result const &pos)
IterAdapter attached here.
Any copy and copy construction prohibited.
Helper template(s) for creating Lumiera Forward Iterators.
Lumiera public interface.
std::shared_ptr< Resolution > PReso
Allow to take ownership of a result set.
Mix-Ins to allow or prohibit various degrees of copying and cloning.
Basic and generic representation of an internal query.