Lumiera  0.pre.03
»edit your freedom«
placement-index-query-resolver.hpp File Reference

Go to the source code of this file.

Description

Implementing resolution of "discover contents"-queries based on PlacementIndex.

This wrapper adds a service to resolve queries for exploring the contents or the parent path of a given scope; the actual implementation relies on the basic operations provided by the PlacementIndex; usually this wrapper is instantiated as one of the SessionServices for use by Steam-Layer internals. The PlacementIndex to use for the implementation is handed in to the ctor.

As any of the QueryResolver services, the actual resolution is completely decoupled from the querying client code, which retrieves the query results through an iterator. Parametrisation is transmitted to the resolver using a special subclass of Goal, a ScopeQuery. Especially, besides a filter to apply on the results to retrieve, the direction and way to search can be parametrised:

  • ascending to the parents of the start scope
  • enumerating the immediate child elements of the scope
  • exhaustive depth-first search to get any content of the scope
how the actual result set is created
On initialisation, a table with preconfigured resolution functions is built, in order to re-gain the fully typed context when receiving a query. From within this context, the concrete Query instance can be investigated to define a constructor function for the actual result set, determining the way how further results will be searched and extracted. The further exploration is driven by the client pulling values from the iterator until exhaustion.
See also
PlacementRef
PlacementIndex_test

Definition in file placement-index-query-resolver.hpp.

Classes

class  PlacementIndexQueryResolver
 Wrapper for the PlacementIndex, allowing to resolve scope contents discovery. More...
 

Typedefs

typedef PlacementIndex & IndexLink(void)
 

Namespaces

 steam
 Steam-Layer implementation namespace root.
 
 steam::mobject
 Media-Objects, edit operations and high-level session.
 
 steam::mobject::session
 Namespace of Session and user visible high-level objects.