DOC: some doxygen fixes
This commit is contained in:
parent
ec8d0557e8
commit
433543a2c7
5 changed files with 64 additions and 14 deletions
|
|
@ -164,7 +164,7 @@ test and better to reason about. If it really can not be avoided to use such uni
|
|||
static context, it should at least be packaged as a single object, plus we should ensure this logic
|
||||
can only be accessed through a regular (non static) object as front-end. Packaged this way, the
|
||||
most common and dangerous pitfalls with statics can be avoided.] And since Lumiera indeed allows
|
||||
for link:{ldoc}/technical/library/Dependencies.html[[lazily initialised dependencies], we
|
||||
for link:{ldoc}/technical/library/Dependencies.html[lazily initialised dependencies], we
|
||||
establish the policy that *destructors must not rely on dependencies*. In fact, they should
|
||||
not do any tangible work at all, beyond releasing other resources.
|
||||
|
||||
|
|
@ -223,7 +223,7 @@ the event `ON_GLOBAL_INIT` is emitted.
|
|||
validation or auto-correction of the session's contents.
|
||||
|
||||
`ON_SESSION_CLOSE`::
|
||||
This event indicates to commence any activity relying on an opened and fully operative session.
|
||||
This event indicates to cease any activity relying on an opened and fully operative session.
|
||||
When invoked, the session is still in fully operative state, all interfaces are open and the render engine
|
||||
is available. However, after issuing this event, the session shutdown sequence will be initiated, by detaching
|
||||
the engine interfaces and signalling the scheduler to cease running render jobs.
|
||||
|
|
|
|||
|
|
@ -1254,10 +1254,14 @@ namespace lib {
|
|||
* This allows to separate the mechanics of evaluation and result combination
|
||||
* from the actual processing and thus to define tree structured computations
|
||||
* based on an opaque source data structure not further disclosed.
|
||||
* @tparam SRC a suitably adapted _source iterator_ or _state core_, wrapped
|
||||
* into an instance of the iter_explorer::BaseAdapter template
|
||||
*
|
||||
* \param usage
|
||||
* \par usage
|
||||
* TreeExplorer is meant to be used as *Builder* for a processing pipeline.
|
||||
* For this to work, it is essential to pick the `SRC` baseclass properly.
|
||||
* - to build a TreeExplorer, use the treeExplore() free function,
|
||||
* which cares to pick up an possibly adapt the given iteration source
|
||||
* which cares to pick up and possibly adapt the given iteration source
|
||||
* - to add processing layers, invoke the builder operations on TreeExplorer
|
||||
* in a chained fashion, thereby binding functors or lambdas. Capture the
|
||||
* final result with an auto variable.
|
||||
|
|
@ -1323,6 +1327,7 @@ namespace lib {
|
|||
* typed argument. Obviously, argument and result type should also make sense for
|
||||
* the desired evaluation pattern, otherwise you'll get all kinds of nasty
|
||||
* template compilation failures (have fun!)
|
||||
* @return processing pipeline with attached [Expander](\ref iter_explorer::Expander) decorator
|
||||
*/
|
||||
template<class FUN>
|
||||
auto
|
||||
|
|
@ -1340,6 +1345,7 @@ namespace lib {
|
|||
* necessary to invoke `expandChildren()` (and doing so would have no further effect than
|
||||
* just iterating). Thus, on iteration, each current element will be fed to the _expand functor_
|
||||
* and the results will be integrated depth first.
|
||||
* @return processing pipeline with attached [AutoExpander](\ref iter_explorer::AutoExpander) decorator
|
||||
* @warning iteration will be infinite, unless the _expand functor_ provides some built-in
|
||||
* termination condition, returning an empty child sequence at that point. This would
|
||||
* then be the signal for the internal combination mechanism to return to visiting the
|
||||
|
|
@ -1382,6 +1388,7 @@ namespace lib {
|
|||
* functor supports the same definition styles as described for #expand
|
||||
* - it can be pure functional, src -> res
|
||||
* - it can accept the underlying source iterator and exploit side-effects
|
||||
* @return processing pipeline with attached [Transformer](\ref iter_explorer::Transformer) decorator
|
||||
*/
|
||||
template<class FUN>
|
||||
auto
|
||||
|
|
@ -1398,6 +1405,7 @@ namespace lib {
|
|||
* The previously created source layers will be "pulled" to fast-forward immediately to the
|
||||
* next element confirmed this way by the bound functor. If none of the source elements
|
||||
* is acceptable, the iterator will transition to exhausted state immediately.
|
||||
* @return processing pipeline with attached [Filter](\ref iter_explorer::Filter) decorator
|
||||
*/
|
||||
template<class FUN>
|
||||
auto
|
||||
|
|
@ -1418,12 +1426,14 @@ namespace lib {
|
|||
* from the current element. Whenever the filter is remoulded, it is immediately re-evaluated,
|
||||
* possibly causing the underlying iterator to be pulled until an element matching the condition
|
||||
* is found.
|
||||
* @see MutableFilter::andFilter
|
||||
* @see MutableFilter::andNotFilter
|
||||
* @see MutableFilter::orFilter
|
||||
* @see MutableFilter::orNotFilter
|
||||
* @see MutableFilter::flipFilter
|
||||
* @see MutableFilter::setNewFilter
|
||||
* @return processing pipeline with attached [special MutableFilter](\ref iter_explorer::MutableFilter) decorator
|
||||
* @see \ref IterTreeExplorer_test::verify_FilterChanges()
|
||||
* @see \ref iter_explorer::MutableFilter::andFilter()
|
||||
* @see \ref iter_explorer::MutableFilter::andNotFilter()
|
||||
* @see \ref iter_explorer::MutableFilter::orFilter()
|
||||
* @see \ref iter_explorer::MutableFilter::orNotFilter()
|
||||
* @see \ref iter_explorer::MutableFilter::flipFilter()
|
||||
* @see \ref iter_explorer::MutableFilter::setNewFilter()
|
||||
*/
|
||||
template<class FUN>
|
||||
auto
|
||||
|
|
@ -1448,6 +1458,8 @@ namespace lib {
|
|||
* builder calls, into heap allocated memory and returns an [iterator front-end](\ref IterExploreSource).
|
||||
* Any iteration and manipulation on that front-end is passed through virtual function calls into
|
||||
* the back-end, thereby concealing all details of the processing pipeline.
|
||||
* @return an front-end handle object, which is an "Lumiera Forward Iterator",
|
||||
* while holding onto a heap allocated [abstracted data source](\ref lib::IterExplorer).
|
||||
*/
|
||||
IterExploreSource<value_type>
|
||||
asIterSource()
|
||||
|
|
@ -1473,6 +1485,44 @@ namespace lib {
|
|||
* be sure to understand that invoking any further builder operation on
|
||||
* TreeExplorer will invalidate that variable (by moving it into the
|
||||
* augmented iterator returned from such builder call).
|
||||
*
|
||||
* ## usage
|
||||
*
|
||||
* This function starts a *Builder* expression. It picks up the given source,
|
||||
* which can be something "sequence-like" or "iterable", and will automatically
|
||||
* wrapped and adapted.
|
||||
* - from a STL container, we retrieve a pair of STL iterators (`begin()`, `end()`)
|
||||
* - a "Lumiera Forward Iterator" is copied or moved into the wrapper and used as
|
||||
* data source, pulling results on demand until exhaustion
|
||||
* - a _State Core_ object is copied or moved into the wrapper and adapted to
|
||||
* be iterated as "Lumiera Forward Iterator". Any object with suitable extension
|
||||
* points and behaviour can be used, as explained [here](\ref lib::IterStateWrapper).
|
||||
*
|
||||
* The resulting TreeExplorer instance can be directly used as "Lumiera Forward Iterator".
|
||||
* However, typically you might want to invoke the builder functions to configure further
|
||||
* processing steps in a processing pipeline...
|
||||
* - to [filter](\ref TreeExplorer::filter) the results with a predicate (functor)
|
||||
* - to [transform](\ref TreeExplorer::transform) the yielded results
|
||||
* - to bind and configure a [child expansion operation](\ref TreeExplorer::expand), which
|
||||
* can then be triggered by explicitly invoking [.expandChildren()](\ref iter_explorer::Expander::expandChildren)
|
||||
* on the resulting pipeline; the generated child sequence is "flat mapped" into the results
|
||||
* (a *Monad* style usage).
|
||||
* - to [package](\ref TreeExplorer::asIterSource) the pipeline built thus far behind an opaque
|
||||
* interface and move the implementation into heap memory.
|
||||
*
|
||||
* A typical usage might be...
|
||||
* \code
|
||||
* auto multiply = [](int v){ return 2*v; };
|
||||
*
|
||||
* auto ii = treeExplore (CountDown{7,4})
|
||||
* .transform(multiply);
|
||||
*
|
||||
* CHECK (14 == *ii);
|
||||
* ++ii;
|
||||
* CHECK (12 == *ii);
|
||||
* ++ii;
|
||||
* \endcode
|
||||
* In this example, a `CountDown` _state core_ is used, as defined in iter-tree-explorer-test.cpp
|
||||
*/
|
||||
template<class IT>
|
||||
inline auto
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
*/
|
||||
|
||||
/** @file dependable-base.hpp
|
||||
/** @file zombie-check.hpp
|
||||
** Detector to set off alarm when (re)using deceased objects.
|
||||
** When implementing services based on static fields or objects,
|
||||
** an invocation after static shutdown can not be precluded -- be it by
|
||||
|
|
|
|||
|
|
@ -303,7 +303,7 @@ namespace test{
|
|||
|
||||
|
||||
|
||||
/** @test instance creation can be preconfigured with a closure
|
||||
/** @test instance creation can be preconfigured with a closure.
|
||||
* Both Singleton and Test-Mock creation can optionally be performed through a
|
||||
* user provided Lambda or Functor. To demonstrate this, we use a `Veryspecial` local class,
|
||||
* which takes an `int&` as constructor parameter -- and we create the actual instance through
|
||||
|
|
|
|||
|
|
@ -221,8 +221,8 @@ namespace test{
|
|||
* to build various functional evaluation pipelines,
|
||||
* based on the \ref TreeExplorer template.
|
||||
* - the adapter to wrap the source, which can either
|
||||
* [be a "state core"](\ref verify_wrappedState() ), or can
|
||||
* [be a "Lumiera Forward Iterator"](\ref verify_wrappedIterator() )
|
||||
* [be a state core](\ref verify_wrappedState() ), or can
|
||||
* [be a Lumiera Forward Iterator](\ref verify_wrappedIterator() )
|
||||
* - the defining use case for TreeExplorer is to build a
|
||||
* [pipeline for depth-first exploration](\ref verify_expandOperation() )
|
||||
* of a (functional) tree structure. This "tree" is created by invoking
|
||||
|
|
|
|||
Loading…
Reference in a new issue