![]() |
Lumiera 0.pre.04
»edit your freedom«
|
#include "steam/mobject/session/scope-locator.hpp"
Singleton service establishing a link to relate any compound of nested placement scopes to the current session and the current focus for querying and exploring this structure.
While it is OK to use this service directly, clients usually would prefer to use QueryFocus as a frontend.
ScopeLocator is the access point both to the current query scope location (as maintained with the help of the QueryFocusStack) and allows to explore the current session data structures (building on a QueryResolver service exposed by the session).
Definition at line 57 of file scope-locator.hpp.
Static Public Attributes | |
| static lib::Depend< ScopeLocator > | instance |
| Storage holding the single ScopeLocator instance. | |
Public Member Functions | |
| ScopePath & | currPath () |
| establishes the current query focus location. | |
| ScopePath & | pushPath () |
| push aside the current focus location and open a new ScopePath frame, to serve as current location until released | |
| template<typename MO > | |
| ScopeQuery< MO >::iterator | explore (Scope const &) |
| use the contents-resolving facility exposed by the session to enumerate the contents (children) of the given scope | |
| template<typename MO > | |
| ScopeQuery< MO >::iterator | query (Scope const &) |
| use the contents-resolving facility exposed by the session to discover depth-first any object within this scope | |
| template<typename MO > | |
| ScopeQuery< MO >::iterator | getRawPath (Scope const &) |
| use the contents-resolving facility exposed by the session to discover the path up from the given scope to model root. | |
| ScopeQuery< MObject >::iterator | getRawPath (Scope const &) |
| lib::IterSource< constScope >::iterator | locate (Scope const &target) |
| navigate the current QueryFocus scope location. | |
| size_t | stackSize () const |
| ~ScopeLocator () | |
Friends | |
| class | lib::DependencyFactory< ScopeLocator > |
Protected Member Functions | |
| ScopeLocator () | |
Private Member Functions | |
| lumiera::QueryResolver const & | theResolver () |
Private Attributes | |
| std::unique_ptr< QueryFocusStack > | focusStack_ |
| ~ScopeLocator | ( | ) |
|
protected |
| ScopePath & currPath | ( | ) |
establishes the current query focus location.
Relies on the state of the QueryFocusStack. If there is no current focus location, a new one is created, referring to the root Scope.
Definition at line 143 of file scope.cpp.
References ScopeLocator::focusStack_.
| ScopePath & pushPath | ( | ) |
push aside the current focus location and open a new ScopePath frame, to serve as current location until released
Definition at line 154 of file scope.cpp.
References ScopeLocator::focusStack_, and SessionServiceExploreScope::getScopeRoot().
Here is the call graph for this function:
|
inline |
use the contents-resolving facility exposed by the session to enumerate the contents (children) of the given scope
Definition at line 107 of file scope-locator.hpp.
References steam::mobject::session::CHILDREN, Query< RES >::resolveBy(), and ScopeLocator::theResolver().
Here is the call graph for this function:
|
inline |
use the contents-resolving facility exposed by the session to discover depth-first any object within this scope
Definition at line 118 of file scope-locator.hpp.
References steam::mobject::session::CONTENTS, Query< RES >::resolveBy(), and ScopeLocator::theResolver().
Here is the call graph for this function:
|
inline |
use the contents-resolving facility exposed by the session to discover the path up from the given scope to model root.
Definition at line 135 of file scope-locator.hpp.
References steam::mobject::session::PATH, Query< RES >::resolveBy(), and ScopeLocator::theResolver().
Here is the call graph for this function:
|
inline |
Definition at line 141 of file scope-locator.hpp.
References steam::mobject::session::PATH, Query< RES >::resolveBy(), and ScopeLocator::theResolver().
Here is the call graph for this function:| IterSource< constScope >::iterator locate | ( | Scope const & | scope | ) |
navigate the current QueryFocus scope location.
The resulting access path to the new location is chosen such as to be most closely related to the original location; this includes picking a timeline or meta-clip attachment most similar to the one used in the original path. So effectively you'll see things through the same "scoping perspective" as given by the original path, if possible to the new location given as parameter. use the contents-resolving facility exposed by the session
| scope | the new target location to navigate |
Definition at line 173 of file scope.cpp.
References ScopePath::begin(), ScopeLocator::focusStack_, and ScopePath::navigate().
Here is the call graph for this function:| size_t stackSize | ( | ) | const |
Definition at line 126 of file scope.cpp.
References ScopeLocator::focusStack_.
|
private |
the one (and only) access point actually to link the system of Scope and QueryFocus to the current session, by delegating resolution of contents discovery queries to the PlacementIndex managed within the session
Definition at line 119 of file scope.cpp.
References SessionServiceExploreScope::getResolver().
Referenced by ScopeLocator::explore(), ScopeLocator::getRawPath(), and ScopeLocator::query().
Here is the call graph for this function:
Here is the caller graph for this function:
|
private |
Definition at line 59 of file scope-locator.hpp.
Referenced by ScopeLocator::currPath(), ScopeLocator::locate(), ScopeLocator::pushPath(), and ScopeLocator::stackSize().
|
static |
Storage holding the single ScopeLocator instance.
Definition at line 62 of file scope-locator.hpp.
Referenced by steam::mobject::session::test::anonymous_namespace{placement-scope-test.cpp}::contents_of_testSession(), QueryFocus::currPath(), steam::mobject::session::anonymous_namespace{scope-path.cpp}::discoverScopePath(), QueryFocus::explore(), QueryFocus::locate(), QueryFocus::operator string(), steam::mobject::session::test::anonymous_namespace{placement-scope-test.cpp}::pathToRoot(), QueryFocus::push(), QueryFocus::push(), and QueryFocus::query().
|
friend |
Definition at line 91 of file scope-locator.hpp.
Collaboration diagram for ScopeLocator: