100 REQUIRE (!
dispatcher_->empty(),
"attempt to issue a query without having installed any resolver (yet)");
113 "duplicate registration of query resolution function");
115 dispatcher_->defineProduction (qID, resolutionFun);
Factory for creating a family of objects by ID.
bool contains(ID id) const
Product invokeFactory(ID const &id, ARGS &&...args)
more legible alias for the function operator
Query ABC: unspecific goal for resolution or retrieval.
virtual ~Goal()
this is a marker baseclass
QueryID const & getQID() const
PImpl of the generic QueryResolver.
PReso handle(Goal const &query)
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_
bool canHandle(Goal const &) const
function< Resolution *(Goal const &)> ResolutionMechanism
ABC representing the result set of an individual query resolution.
Framework for building a configurable factory, to generate families of related objects.
LumieraError< LERR_(INVALID)> Invalid
Lumiera public interface.
Goal::QueryID const & QID
std::shared_ptr< Resolution > PReso
Allow to take ownership of a result set.
framework and to resolve logical queries.
Wrapper taking ownership, by wrapping into smart-ptr.