Lumiera 0.pre.04~rc.1
»edit your freedom«
Loading...
Searching...
No Matches
lib Namespace Reference

Description

Implementation namespace for support and library code.

Namespaces

namespace  allo
 
namespace  anonymous_namespace{allocation-cluster.cpp}
 
namespace  anonymous_namespace{branch-case.hpp}
 
namespace  anonymous_namespace{hetero-data.hpp}
 
namespace  anonymous_namespace{iter-adapter.hpp}
 
namespace  anonymous_namespace{iter-explorer.hpp}
 
namespace  anonymous_namespace{lazy-init.hpp}
 
namespace  anonymous_namespace{opaque-holder.hpp}
 
namespace  anonymous_namespace{random.cpp}
 
namespace  anonymous_namespace{random.hpp}
 
namespace  anonymous_namespace{several-builder.hpp}
 
namespace  anonymous_namespace{symbol-impl.cpp}
 
namespace  anonymous_namespace{symbol.hpp}
 
namespace  anonymous_namespace{verb-visitor.hpp}
 
namespace  con
 
namespace  diff
 
namespace  dot_gen
 
namespace  factory
 
namespace  gnuplot_gen
 
namespace  hash
 Hash implementations usable for the HashIndexed mixin as well as key within std::unordered_map.
 
namespace  idi
 Identification Schemes.
 
namespace  iter
 
namespace  iter_explorer
 
namespace  iter_source
 
namespace  iter_stl
 
namespace  linked_elements
 
namespace  meta
 
namespace  polyvalue
 
namespace  query
 
namespace  random_draw
 
namespace  several
 
namespace  splitsplice
 
namespace  stat
 
namespace  sync
 Helpers and building blocks for Monitor based synchronisation.
 
namespace  test
 Unit tests for the Lumiera support library.
 
namespace  text_template
 
namespace  thread
 
namespace  time
 
namespace  variant
 
namespace  visitor
 
namespace  wrapper
 

Typedefs

typedef vector< string > VectS
 
typedef size_t HashVal
 a STL compatible hash value
 
typedef lumiera_uidLUID
 a Lumiera UID
 
using RawAddr = void const *
 
using Random = RandomSequencer< std::mt19937_64 >
 PRNG engine to use by default: 64bit Mersenne twister.
 
using SubMatch = std::smatch::value_type const &
 
typedef size_t IxID
 

Classes

class  AddressExposingIter
 wrapper for an existing Iterator type to expose the address of each value yielded. More...
 
class  AllocationCluster
 A pile of objects sharing common allocation and lifecycle. More...
 
class  AllocatorHandle
 Placeholder implementation for a custom allocator. More...
 
class  AutoRegistered
 Helper mixin template for implementing a type intended to participate in automatic element tracking. More...
 
class  BranchCase
 A Sum Type to hold alternative results from a branched evaluation. More...
 
class  BuilderQualifierSupport
 Mix-in to accept and apply an arbitrary sequence of qualifier functors. More...
 
class  CallQueue
 A threadsafe queue for bound void(void) functors. More...
 
class  CappedGen
 Adapter to protect against data corruption caused by concurrent access. More...
 
class  CheckedCore
 Adapter to add sanity checks to a »state core«. More...
 
class  ClassLock
 A synchronisation protection guard employing a lock scoped to the parameter type as a whole, not an individual instance. More...
 
class  Cmdline
 Abstraction of the usual int argc, int** argv-Commandline, to be able to treat it as a vector of strings. More...
 
class  ConstIter
 wrapper to expose values as const More...
 
class  ContainerCore
 Adapter to »piggy-back« a STL iterable container inline and expose it as »state core«. More...
 
class  DelStash
 Manage a collection of deleter functions. More...
 
class  Depend
 Access point to singletons and other kinds of dependencies designated by type. More...
 
class  DependencyFactory
 Helper to abstract creation and lifecycle of a dependency. More...
 
class  DependInject
 This framework allows to (re)configure the lib::Depend front-end for dependency-injection. More...
 
class  DiagnosticContext
 Diagnostic data frame to collect specific information concerning a scope. More...
 
class  ElementTracker
 Registry for tracking object instances. More...
 
struct  EmptyBase
 
class  ExtensibleFilterIter
 Additional capabilities for FilterIter, allowing to extend the filter condition underway. More...
 
class  FamilyMember
 Utility to produce member IDs for objects belonging to a "Family", as defined by a distinguishing type. More...
 
struct  FilterCore
 Implementation of the filter logic. More...
 
class  FilterIter
 Iterator tool filtering pulled data according to a predicate. More...
 
class  FunHashDispatch
 Dispatcher-table for state-less functions with a given signature. More...
 
class  Handle
 Generic opaque reference counting handle, for accessing a service and managing its lifecycle. More...
 
struct  HashIndexed
 A Mixin to add a private ID type to the target class, together with storage to hold an instance of this ID, getter and setter, and a templated version of the ID type which can be used to pass specific subclass type info. More...
 
class  HeteroData
 A setup with chained data tuples residing in distributed storage. More...
 
class  HeteroData< meta::Nil >
 
class  HeteroData< meta::Node< StorageFrame< seg, DATA... >, TAIL > >
 
struct  IdentityCore
 A neutral identity-function core, also serving as point-of reference how any core is intended to work. More...
 
class  IncidenceCount
 A recorder for concurrent incidences. More...
 
class  IndexIter
 Subscript-index based access to a container, packaged as iterator. More...
 
class  InPlaceAnyHolder
 Inline buffer to hold and own an object while concealing the concrete type. More...
 
struct  InPlaceAnyHolder_unrelatedTypes
 Alternative policy for accessing the contents without a common interface; use this policy if the intention is to use OpaqueHolder with a family of similar classes, without requiring all of them to be derived from a common base class. More...
 
struct  InPlaceAnyHolder_useCommonBase
 Standard policy for accessing the contents via a common base class interface. More...
 
class  InPlaceBuffer
 Buffer to place and maintain an object instance privately within another object. More...
 
class  IterableDecorator
 Decorator-Adapter to make a »*State Core*« iterable as Lumiera Forward Iterator. More...
 
class  IterAdapter
 Adapter for building an implementation of the »Lumiera Forward Iterator« concept. More...
 
class  IterCursor
 A cursor-like iterator with the ability to switch iteration direction. More...
 
class  IterExplorer
 Adapter to build a demand-driven tree expanding and exploring computation based on a custom opaque state core. More...
 
struct  IterExploreSource
 Iterator front-end to manage and operate a IterExplorer pipeline opaquely. More...
 
struct  IterQueue
 A Queue which can be pulled by iterating. More...
 
class  IterSource
 Iteration source interface to abstract a data source, which then can be accessed through IterAdapter as a frontend, allowing to pull individual elements until exhaustion. More...
 
struct  IterStack
 A Stack which can be popped by iterating. More...
 
class  IterStateCore
 Adapter to dress up an existing »Lumiera Forward Iterator« as »state core«. More...
 
class  IterStateWrapper
 Another Lumiera Forward Iterator building block, based on incorporating a state type as »*State Core*«, right into the iterator. More...
 
class  IterTool
 Standard functionality to build up any iterator tool. More...
 
struct  IterType
 Helper for type rewritings: get the element type for an iterator like entity. More...
 
struct  IterType< Iter< TY, CON > >
 
struct  IterType< RangeIter< IT > >
 
class  LazyInit
 Mix-in for lazy/delayed initialisation of an embedded functor. More...
 
struct  Limited
 A Result Value confined into fixed bounds. More...
 
class  LinkedElements
 Intrusive single linked list, possibly taking ownership of node elements. More...
 
class  Literal
 Inline string literal. More...
 
struct  NullValue
 Singleton holder for NIL or default value objects. More...
 
class  NumIter
 Enumerate all "numbers" within a range. More...
 
class  OpaqueHolder
 Inline buffer to hold and own an object while concealing the concrete type. More...
 
class  OptionalRef
 Optional or switchable link to an existing object. More...
 
class  P
 Customised refcounting smart pointer template, built upon std::shared_ptr, but forwarding type relationships and ordering operators to the pointee objects. More...
 
class  PathArray
 Abstraction for path-like topological coordinates. More...
 
class  PlantingHandle
 A handle to allow for safe »remote implantation« of an unknown subclass into a given opaque InPlaceBuffer, without having to disclose the concrete buffer type or size. More...
 
class  PolymorphicValue
 Template to build polymorphic value objects. More...
 
class  PtrDerefIter
 wrapper for an existing Iterator type, automatically dereferencing the output of the former. More...
 
class  QueryText
 Syntactical query representation. More...
 
class  RandomDraw
 A component and builder to draw limited parameter values based on some source of randomness (or hash input). More...
 
class  RandomSequencer
 Access point to a selection of random number sources. More...
 
class  RangeIter
 Accessing a STL element range through a Lumiera forward iterator, An instance of this iterator adapter is completely self-contained and allows to iterate once over the range of elements, until pos==end. More...
 
class  Result
 Representation of the result of some operation, EITHER a value or a failure. More...
 
class  Result< void >
 The base case is just to capture success or failure, without returning any value result. More...
 
class  ScopedCollection
 A fixed collection of non-copyable polymorphic objects. More...
 
class  ScopedPtrVect
 Simple vector based collection of pointers, managing lifecycle of the pointed-to objects. More...
 
class  SearchPathSplitter
 Helper: Access a path Specification as a sequence of filesystem Paths. More...
 
class  SeedNucleus
 Establishes a seed point for any instance or performance. More...
 
class  Several
 Abstraction: Fixed array of elements. More...
 
class  SeveralBuilder
 Builder to create and populate a lib::Several<I>. More...
 
class  SingleValCore
 Implementation of a singleton value holder, which discards the contained value once "iterated". More...
 
class  SingleValIter
 Pseudo-Iterator to yield just a single value. More...
 
class  SkipRepetition
 Helper: predicate returning true whenever the argument value changes during a sequence of invocations. More...
 
struct  StorageFrame
 individual storage frame in a chain, holding a data tuple More...
 
struct  StorageLoc
 linked list of StorageFrame elements More...
 
class  Symbol
 Token or Atom with distinct identity. More...
 
class  SymbolTable
 Table for automatically interned strings. More...
 
class  Sync
 Facility for monitor object based locking. More...
 
class  SyncBarrier
 A one time N-fold mutual synchronisation barrier. More...
 
class  Thread
 A thin convenience wrapper to simplify thread-handling. More...
 
class  ThreadHookable
 Extended variant of the standard case, allowing to install callbacks (hook functions) to be invoked during thread lifecycle: More...
 
class  ThreadJoinable
 Variant of the standard case, requiring to wait and join() on the termination of this thread. More...
 
class  TransformingCore
 Implementation of custom processing logic. More...
 
class  TransformIter
 Iterator tool treating pulled data by a custom transformation (function) More...
 
class  TrojanFun
 »Trojan Function« builder. More...
 
class  TypedAllocationManager
 Foundation for a custom allocation manager, tracking the created objects by smart-ptrs. More...
 
class  TypedContext
 Provide type-IDs for a specific context. More...
 
class  TypedCounter
 Utility providing a set of counters, each tied to a specific type. More...
 
class  UninitialisedDynBlock
 Managed uninitialised Heap-allocated storage with array like access. More...
 
class  UninitialisedStorage
 Block of raw uninitialised storage with array like access. More...
 
class  UniqueMallocOwner
 Ownership token for a piece of heap memory allocated in plain-C style. More...
 
class  Variant
 Typesafe union record. More...
 
class  VariantO
 A variant wrapper (typesafe union) capable of holding a value of any of a bounded collection of types. More...
 
struct  VerbHolder
 
struct  VerbHolder< REC, RET(ARGS...)>
 Building block: actual storage for a "verb" (function pointer), together with the pre-bound invocation arguments for this specific operation. More...
 
struct  VerbInvoker
 Building block: the Interface to cause the invocation. More...
 
class  VerbPack
 A self-contained token to embody a specific yet abstracted operation, together with a concrete set of suitable arguments. More...
 
class  VerbToken
 Action token implemented by double dispatch to a handler function, as defined in the "receiver" interface (parameter REC). More...
 
class  VerbToken< REC, RET(ARGS...)>
 
class  WrappedLumieraIter
 Standard implementation of the IterSource interface: a wrapped "Lumiera Forward Iterator". More...
 
class  ZombieCheck
 Automatic lifecycle tracker, to produce an alarm when accessing objects after deletion. More...
 

Functions

template<class FUN , typename PAR >
auto binarySearch_inner (FUN &&fun, PAR lower, PAR upper, PAR epsilon)
 binary search: actual search loop
 
template<class FUN , typename PAR >
auto binarySearch_upper (FUN &&fun, PAR lower, PAR upper, PAR epsilon)
 entrance point to binary search to ensure the upper point indeed fulfils the test.
 
template<class FUN , typename PAR >
auto binarySearch (FUN &&fun, PAR lower, PAR upper, PAR epsilon)
 
template<class I1 , class I2 >
bool operator== (PtrDerefIter< I1 > const &il, PtrDerefIter< I2 > const &ir)
 Supporting equality comparisons...
 
template<class I1 , class I2 >
bool operator!= (PtrDerefIter< I1 > const &il, PtrDerefIter< I2 > const &ir)
 
template<class IT >
auto ptrDeref (IT iter)
 Convenience shortcut to dereference pointers yielded from the wrapped iterator.
 
template<class I1 , class I2 >
bool operator== (AddressExposingIter< I1 > const &il, AddressExposingIter< I2 > const &ir)
 Supporting equality comparisons...
 
template<class I1 , class I2 >
bool operator!= (AddressExposingIter< I1 > const &il, AddressExposingIter< I2 > const &ir)
 
template<class P1 , class P2 , class CON >
bool operator== (IterAdapter< P1, CON > const &il, IterAdapter< P2, CON > const &ir)
 Supporting equality comparisons...
 
template<class P1 , class P2 , class CON >
bool operator!= (IterAdapter< P1, CON > const &il, IterAdapter< P2, CON > const &ir)
 
template<class ST , class T1 , class T2 >
bool operator== (IterStateWrapper< ST, T1 > const &il, IterStateWrapper< ST, T2 > const &ir)
 Supporting equality comparisons of equivalent iterators (same state type)...
 
template<class ST , class T1 , class T2 >
bool operator!= (IterStateWrapper< ST, T1 > const &il, IterStateWrapper< ST, T2 > const &ir)
 
template<class I1 , class I2 >
bool operator== (RangeIter< I1 > const &il, RangeIter< I2 > const &ir)
 Supporting equality comparisons...
 
template<class I1 , class I2 >
bool operator!= (RangeIter< I1 > const &il, RangeIter< I2 > const &ir)
 
template<typename INT >
NumIter< INT > eachNum (INT start=std::numeric_limits< INT >::min(), INT end=std::numeric_limits< INT >::max())
 convenience function to iterate "each number"
 
template<class I1 , class I2 >
bool operator== (ConstIter< I1 > const &il, ConstIter< I2 > const &ir)
 Supporting equality comparisons...
 
template<class I1 , class I2 >
bool operator!= (ConstIter< I1 > const &il, ConstIter< I2 > const &ir)
 
template<class IT >
auto explore (IT &&srcSeq)
 start building a IterExplorer by suitably wrapping the given iterable source.
 
template<typename T >
IterQueue< T > elements (T const &elm)
 convenience free function to build an iterable sequence
 
template<typename T >
IterQueue< T > elements (T const &e0, T const &e1)
 
template<typename T >
IterQueue< T > elements (T const &e0, T const &e1, T const &e2)
 
template<typename T >
IterQueue< T > elements (T const &e0, T const &e1, T const &e2, T const &e3)
 
template<typename T >
IterQueue< T > elements (T const &e0, T const &e1, T const &e2, T const &e3, T const &e4)
 
template<class... ITS>
auto zip (ITS &&...iters)
 Build a tuple-combining iterator builder.
 
template<class... ITS>
auto izip (ITS &&...iters)
 tuple-combining iterator prefixed by index sequence
 
template<class CX >
bool operator== (IterTool< CX > const &it1, IterTool< CX > const &it2)
 
template<class CX >
bool operator!= (IterTool< CX > const &ito1, IterTool< CX > const &ito2)
 
template<class IT , typename PRED >
auto filterIterator (IT const &src, PRED filterPredicate)
 Build a FilterIter: convenience free function shortcut, picking up the involved types automatically.
 
template<class IT , typename PRED >
auto filterIterator (IT &&src, PRED filterPredicate)
 
template<class VAL >
auto singleValIterator (VAL &&something)
 Build a SingleValIter: convenience free function shortcut, to pick up just any value and wrap it as Lumiera Forward Iterator.
 
template<class VAL >
auto nilIterator ()
 not-anything-at-all iterator
 
template<class IT , typename FUN >
auto transformIterator (IT const &src, FUN processingFunc)
 Build a TransformIter: convenience free function shortcut, picking up the involved types automatically.
 
template<class IT , typename FUN >
auto transformIterator (IT &&src, FUN processingFunc)
 
template<class IT , class CON >
void append_all (IT iter, CON &container)
 
template<class IT >
IT::value_type pull_last (IT iter)
 
template<class IT >
auto filterRepetitions (IT const &source)
 filters away repeated values emitted by source iterator
 
template<class IT >
auto filterRepetitions (IT &&source)
 
template<class N >
auto & asLinkedElements (N *const &anchor)
 transiently reinterpret an element pointer as const LinkedElements, allowing to count, iterate or subscript a chain of elements
 
template<typename T >
OptionalRef< T > optionalRefTo (T &target)
 
template<typename X , typename... ARGS>
P< X > makeP (ARGS &&... ctorArgs)
 Helper to create and manage by lib::P.
 
template<size_t cl, size_t cr>
bool operator== (PathArray< cl > const &l, PathArray< cr > const &r)
 Equality comparison of arbitrary PathArray objects.
 
template<size_t cl, size_t cr>
bool operator!= (PathArray< cl > const &l, PathArray< cr > const &r)
 
HashVal hash_value (QueryText const &entry)
 support using queries in hashtables.
 
SeedNucleusseedFromDefaultGen ()
 draw seed another Generator from the default RandomSequencer

 
void randomiseRandomness ()
 inject true randomness into the defaultGen
 
int rani (uint bound=_iBOUND())
 
double ranRange (double start, double bound)
 
double ranNormal (double mean=0.0, double stdev=1.0)
 
lib::HashVal ranHash ()
 
template<class GEN >
auto buildCappedSubSequence (RandomSequencer< GEN > &src)
 
template<typename VAL , typename = lib::meta::disable_if<std::is_invocable<VAL>>>
 Result (VAL &&) -> Result< VAL >
 deduction guide: allow perfect forwarding of a any result into the ctor call.
 
template<typename FUN , typename... ARGS>
 Result (FUN &&, ARGS &&...) -> Result< std::invoke_result_t< FUN, ARGS... > >
 deduction guide: find out about result value to capture from a generic callable.
 
fs::path findExePath ()
 retrieve the location of the executable
 
string replaceMagicLinkerTokens (string const &src)
 replace $ORIGIN tokens in the given string
 
string resolveModulePath (fs::path moduleName, string searchPath="")
 helper to establish the location to search for loadable modules, configuration files, icons and further resources.
 
template<typename I , typename E = I>
SeveralBuilder< I, E > makeSeveral ()
 Entrance Point: start building a lib::Several instance.
 
template<typename X >
SeveralBuilder< X > makeSeveral (std::initializer_list< X > ili)
 
HashVal hash_value (Literal literal)
 generate hash value based on the Literal's contents.
 
HashVal hash_value (Symbol sym)
 hash value for Symbols is directly based on the symbol table entry
 
constexpr bool operator== (Literal const &s1, Literal const &s2)
 
constexpr bool operator== (Symbol const &s1, Symbol const &s2)
 
constexpr bool operator== (CStr s1, Literal s2)
 
constexpr bool operator== (Symbol s1, CStr s2)
 
constexpr bool operator== (Literal s1, Symbol s2)
 
constexpr bool operator== (Literal s1, std::string const &s2)
 
constexpr bool operator== (Symbol s1, std::string const &s2)
 
std::string operator+ (std::string str, Literal const &sym)
 string concatenation
 
std::string operator+ (Literal const &sym, std::string str)
 
template<typename FUN , typename... ARGS>
 ThreadJoinable (string const &, FUN &&, ARGS &&...) -> ThreadJoinable< std::invoke_result_t< FUN, ARGS... > >
 deduction guide: find out about result value to capture from a generic callable.
 
template<class TAR = ThreadHookable>
void launchDetached (ThreadHookable::Launch &&launchBuilder)
 Launch an autonomous self-managing thread (and forget about it).
 
template<class TAR = ThreadHookable, typename... INVO>
void launchDetached (string const &threadID, INVO &&...args)
 Launch an autonomous self-managing thread (and forget about it).
 
template<class TAR , typename... ARGS>
void launchDetached (string const &threadID, void(TAR::*memFun)(ARGS...), ARGS ...args)
 Special variant bind a member function of the subclass into the autonomous thread.
 
template<class TAR , typename... ARGS>
void launchDetached (void(TAR::*memFun)(ARGS...), ARGS ...args)
 Special variant without explicitly given thread-ID.
 

Variables

Random defaultGen {eternalNucleus}
 a global default RandomSequencer for mundane purposes
 
Random entropyGen {entropyNucleus}
 a global RandomSequencer seeded with real entropy
 
const size_t STRING_MAX_RELEVANT = LUMIERA_IDSTRING_MAX_RELEVANT
 safety guard: maximum number of chars to process.
 

Typedef Documentation

◆ VectS

typedef vector<string> VectS

Definition at line 39 of file cmdline.hpp.

◆ HashVal

typedef size_t HashVal

a STL compatible hash value

Definition at line 52 of file hash-value.h.

◆ LUID

typedef lumiera_uid* LUID

a Lumiera UID

Definition at line 55 of file hash-value.h.

◆ RawAddr

using RawAddr = void const*

Definition at line 92 of file lazy-init.hpp.

◆ Random

using Random = RandomSequencer<std::mt19937_64>

PRNG engine to use by default: 64bit Mersenne twister.

Definition at line 120 of file random.hpp.

◆ SubMatch

using SubMatch = std::smatch::value_type const&

Definition at line 41 of file searchpath.hpp.

◆ IxID

typedef size_t IxID

Definition at line 67 of file typed-counter.hpp.


Class Documentation

◆ lib::IterType

struct lib::IterType
+ Inheritance diagram for IterType< TY >:
+ Collaboration diagram for IterType< TY >:

◆ lib::IterType< Iter< TY, CON > >

struct lib::IterType< Iter< TY, CON > >
Class Members
typedef CON Container
typedef TY ElemType
+ Collaboration diagram for IterType< Iter< TY, CON > >:

◆ lib::VerbHolder

struct lib::VerbHolder
+ Collaboration diagram for VerbHolder< REC, SIG >:

◆ lib::VerbToken

class lib::VerbToken
+ Collaboration diagram for VerbToken< REC, SIG >:

Function Documentation

◆ binarySearch_inner()

template<class FUN , typename PAR >
auto binarySearch_inner ( FUN &&  fun,
PAR  lower,
PAR  upper,
PAR  epsilon 
)
inline

binary search: actual search loop

  • search until (upper-lower) < epsilon
  • the FUN performs the actual test
  • the goal is to narrow down the breaking point
    Parameters
    funbool(PAR) perform probe and decide criterion.
    Note
    fun(lower) must be false and fun(upper) must be true

Definition at line 56 of file binary-search.hpp.

References ASSERT_VALID_SIGNATURE.

Referenced by binarySearch_upper().

+ Here is the caller graph for this function:

◆ binarySearch_upper()

template<class FUN , typename PAR >
auto binarySearch_upper ( FUN &&  fun,
PAR  lower,
PAR  upper,
PAR  epsilon 
)
inline

entrance point to binary search to ensure the upper point indeed fulfils the test.

If this is not the case, the search domain is shifted up, but also expanded so that the given upper point is still located within, but close to the lower end.

Note
fun(lower) must be false

Definition at line 81 of file binary-search.hpp.

References binarySearch_inner().

Referenced by binarySearch(), and BreakingPoint< CONF >::conductBinarySearch().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ binarySearch()

template<class FUN , typename PAR >
auto binarySearch ( FUN &&  fun,
PAR  lower,
PAR  upper,
PAR  epsilon 
)
inline

Definition at line 99 of file binary-search.hpp.

References binarySearch_upper().

+ Here is the call graph for this function:

◆ operator==() [1/15]

template<class I1 , class I2 >
bool operator== ( PtrDerefIter< I1 > const &  il,
PtrDerefIter< I2 > const &  ir 
)

Supporting equality comparisons...

Definition at line 195 of file iter-adapter-ptr-deref.hpp.

References PtrDerefIter< IT >::getBase().

+ Here is the call graph for this function:

◆ operator!=() [1/8]

template<class I1 , class I2 >
bool operator!= ( PtrDerefIter< I1 > const &  il,
PtrDerefIter< I2 > const &  ir 
)

Definition at line 198 of file iter-adapter-ptr-deref.hpp.

◆ ptrDeref()

template<class IT >
auto ptrDeref ( IT  iter)

Convenience shortcut to dereference pointers yielded from the wrapped iterator.

Definition at line 204 of file iter-adapter-ptr-deref.hpp.

Referenced by ViewHook_test::reOrderHooked().

+ Here is the caller graph for this function:

◆ operator==() [2/15]

template<class I1 , class I2 >
bool operator== ( AddressExposingIter< I1 > const &  il,
AddressExposingIter< I2 > const &  ir 
)

Supporting equality comparisons...

Definition at line 318 of file iter-adapter-ptr-deref.hpp.

References AddressExposingIter< IT >::getBase().

+ Here is the call graph for this function:

◆ operator!=() [2/8]

template<class I1 , class I2 >
bool operator!= ( AddressExposingIter< I1 > const &  il,
AddressExposingIter< I2 > const &  ir 
)

Definition at line 321 of file iter-adapter-ptr-deref.hpp.

◆ operator==() [3/15]

template<class P1 , class P2 , class CON >
bool operator== ( IterAdapter< P1, CON > const &  il,
IterAdapter< P2, CON > const &  ir 
)
inline

Supporting equality comparisons...

Definition at line 338 of file iter-adapter.hpp.

References IterAdapter< POS, CON >::pos_.

◆ operator!=() [3/8]

template<class P1 , class P2 , class CON >
bool operator!= ( IterAdapter< P1, CON > const &  il,
IterAdapter< P2, CON > const &  ir 
)
inline

Definition at line 341 of file iter-adapter.hpp.

◆ operator==() [4/15]

template<class ST , class T1 , class T2 >
bool operator== ( IterStateWrapper< ST, T1 > const &  il,
IterStateWrapper< ST, T2 > const &  ir 
)
inline

Supporting equality comparisons of equivalent iterators (same state type)...

Definition at line 474 of file iter-adapter.hpp.

References IterStateWrapper< ST, T >::core_, IterStateWrapper< ST, T >::empty(), and IterStateWrapper< ST, T >::isValid().

+ Here is the call graph for this function:

◆ operator!=() [4/8]

template<class ST , class T1 , class T2 >
bool operator!= ( IterStateWrapper< ST, T1 > const &  il,
IterStateWrapper< ST, T2 > const &  ir 
)
inline

Definition at line 482 of file iter-adapter.hpp.

◆ operator==() [5/15]

template<class I1 , class I2 >
bool operator== ( RangeIter< I1 > const &  il,
RangeIter< I2 > const &  ir 
)
inline

Supporting equality comparisons...

Definition at line 899 of file iter-adapter.hpp.

References RangeIter< IT >::getPos().

+ Here is the call graph for this function:

◆ operator!=() [5/8]

template<class I1 , class I2 >
bool operator!= ( RangeIter< I1 > const &  il,
RangeIter< I2 > const &  ir 
)
inline

Definition at line 902 of file iter-adapter.hpp.

◆ eachNum()

template<typename INT >
NumIter< INT > eachNum ( INT  start = std::numeric_limits<INT>::min(),
INT  end = std::numeric_limits<INT>::max() 
)
inline

convenience function to iterate "each number"

Definition at line 1016 of file iter-adapter.hpp.

References eachNum().

Referenced by eachNum(), IterAdapter_test::enumerate(), IterZip_test::verify_exploration(), and IterZip_test::verify_iteration().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ operator==() [6/15]

template<class I1 , class I2 >
bool operator== ( ConstIter< I1 > const &  il,
ConstIter< I2 > const &  ir 
)
inline

Supporting equality comparisons...

Definition at line 1134 of file iter-adapter.hpp.

References ConstIter< IT >::getBase().

+ Here is the call graph for this function:

◆ operator!=() [6/8]

template<class I1 , class I2 >
bool operator!= ( ConstIter< I1 > const &  il,
ConstIter< I2 > const &  ir 
)
inline

Definition at line 1137 of file iter-adapter.hpp.

◆ explore()

template<class IT >
auto explore ( IT &&  srcSeq)
inline

start building a IterExplorer by suitably wrapping the given iterable source.

Returns
a TreeEplorer, which is an Iterator to yield all the source elements, but may also be used to build up a complex processing pipeline.
Warning
if you capture the result of this call by an auto variable, be sure to understand that invoking any further builder operation on IterExplorer will invalidate that variable (by moving it into the augmented iterator returned from such builder call).
Todo:
this framework should be retrofitted to fit in with C++20 pipelines

Usage

This function starts a Builder expression. It picks up the given source, which can be something "sequence-like" or "iterable", and will automatically be 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, when 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.

The resulting IterExplorer instance can directly be 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 the results with a predicate (functor)
  • to transform the yielded results
  • to bind and configure a child expansion operation, which can then be triggered by explicitly invoking .expandChildren() on the resulting pipeline; the generated child sequence is "flat mapped" into the results (a Monad style usage).
  • to package the pipeline built thus far behind an opaque interface and move the implementation into heap memory.

A typical usage might be...

auto multiply = [](int v){ return 2*v; };
auto ii = explore (CountDown{7,4})
.transform(multiply);
CHECK (14 == *ii);
++ii;
CHECK (12 == *ii);
++ii;
_TransformIterT< IT, FUN >::Iter transform(IT &&source, FUN processingFunc)
pipes a given Lumiera Forward Iterator through a transformation function and wraps the resulting tran...

In this example, a CountDown state core is used, as defined in iter-explorer-test.cpp

Definition at line 2189 of file iter-explorer.hpp.

References explore().

Referenced by Dummy< i >::Dummy(), Dummy< i >::~Dummy(), Num< i >::~Num(), FlowDiagnostic< CONF >::allEpochs(), TestChainLoad< maxFan >::allNodes(), FakeCanvas::allWidgetIDs(), SeveralBuilder< I, E, POL >::appendAll(), VerbVisitorDispatch_test::apply_different_receivers(), TreeStructureNavigator::buildIterator(), lib::iter::buildIterTuple(), IterZip_test::buildIterTuple(), lib::iter::anonymous_namespace{iter-chain-search.hpp}::buildSearchFilter(), Num< i >::calc(), MemoryPool::calcAllocSize(), SyncLocking_test::can_calc_without_Error(), IterZip_test::demo_construction(), Statistic_test::demonstrate_DataSpan(), IterExplorer_test::demonstrate_LayeredEvaluation(), IncidenceCount::evaluate(), explore(), TrackProfile::filterSegment(), TestChainLoad< maxFan >::ScheduleCtx::getScheduleSeq(), SeveralBuilder< I, E, POL >::moveAll(), lib::test::anonymous_namespace{iter-zip-test.cpp}::numS(), SyncBarrier_test::run(), IndexIter_test::simpleIteration(), lib::test::anonymous_namespace{sync-barrier-test.cpp}::sumLocals(), Dispatcher::PipelineBuilder< SRC >::timeRange(), AllocationCluster_test::use_as_Allocator(), IterExplorer_test::verify_aggregatingGroupItration(), IterExplorer_test::verify_asIterSource(), IterExplorer_test::verify_combinedExpandTransform(), IterExplorer_test::verify_customProcessingLayer(), IterExplorer_test::verify_dedup(), IterExplorer_test::verify_depthFirstExploration(), IterExplorer_test::verify_effuse(), IterExplorer_test::verify_elementGroupingOperation(), IterExplorer_test::verify_expand_rootCurrent(), IterExplorer_test::verify_expandOperation(), IterZip_test::verify_exploration(), IterExplorer_test::verify_FilterChanges(), IterExplorer_test::verify_FilterIterator(), DiagnosticContext_test::verify_heavilyParallelUsage(), IterZip_test::verify_iteration(), IterExplorer_test::verify_IterSource(), MockSupport_test::verify_MockPrerequisites(), TextTemplate_test::verify_parsing(), IterExplorer_test::verify_reduceVal(), IterZip_test::verify_references(), IterExplorer_test::verify_scheduledExpansion(), IterExplorer_test::verify_transformOperation(), IterExplorer_test::verify_untilStopTrigger(), IterExplorer_test::verify_wrappedIterator(), IterExplorer_test::verify_wrappedState(), ThreadWrapper_test::verifyConcurrentExecution(), and zip().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ elements() [1/5]

template<typename T >
IterQueue< T > elements ( T const &  elm)
inline

convenience free function to build an iterable sequence

Definition at line 292 of file iter-stack.hpp.

References IterQueue< TY >::feed().

Referenced by LinkedElements< N, ALO >::LinkedElements(), ScopedPtrVect< T >::allPtrs(), LinkedElements_test::iterating(), LinkedElements_test::populate_by_iterator(), LinkedElements< N, ALO >::pushAll(), IterQueue_test::run(), LinkedElements_test::simpleUsage(), LinkedElements_test::verify_customAllocator(), LinkedElements_test::verify_ExceptionSafety(), LinkedElements_test::verify_nonOwnership(), and LinkedElements_test::verify_RAII_safety().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ elements() [2/5]

template<typename T >
IterQueue< T > elements ( T const &  e0,
T const &  e1 
)
inline

Definition at line 299 of file iter-stack.hpp.

References IterQueue< TY >::feed().

+ Here is the call graph for this function:

◆ elements() [3/5]

template<typename T >
IterQueue< T > elements ( T const &  e0,
T const &  e1,
T const &  e2 
)
inline

Definition at line 306 of file iter-stack.hpp.

References IterQueue< TY >::feed().

+ Here is the call graph for this function:

◆ elements() [4/5]

template<typename T >
IterQueue< T > elements ( T const &  e0,
T const &  e1,
T const &  e2,
T const &  e3 
)
inline

Definition at line 313 of file iter-stack.hpp.

References IterQueue< TY >::feed().

+ Here is the call graph for this function:

◆ elements() [5/5]

template<typename T >
IterQueue< T > elements ( T const &  e0,
T const &  e1,
T const &  e2,
T const &  e3,
T const &  e4 
)
inline

Definition at line 320 of file iter-stack.hpp.

References IterQueue< TY >::feed().

+ Here is the call graph for this function:

◆ zip()

template<class... ITS>
auto zip ( ITS &&...  iters)
inline

Build a tuple-combining iterator builder.

Parameters
itersan arbitrary sequence of iterable entities
Returns
an IterExplorer to yield result tuples on iteration
Remarks
IterExplorer is both a »Lumiera Forward Iterator« and a Pipeline Builder
  • as Lumiera iterator, it can be used directly in for-each and while loops
  • result components can be picked up conveniently through structural bindings for tuples
  • using the builder API, results can be postprocessed (apply a function), filtered, searched, reduced...

Definition at line 138 of file iter-zip.hpp.

References explore(), lib::meta::mapEach(), and zip().

Referenced by izip(), IterZip_test::simpleUsage(), IterZip_test::verify_exploration(), IterZip_test::verify_iteration(), IterZip_test::verify_pipelining(), and zip().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ izip()

template<class... ITS>
auto izip ( ITS &&...  iters)
inline

tuple-combining iterator prefixed by index sequence

Definition at line 152 of file iter-zip.hpp.

References izip(), and zip().

Referenced by izip(), IterZip_test::simpleUsage(), IterZip_test::verify_iteration(), and IterZip_test::verify_references().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ operator==() [7/15]

template<class CX >
bool operator== ( IterTool< CX > const &  it1,
IterTool< CX > const &  it2 
)
inline

Definition at line 249 of file itertools.hpp.

◆ operator!=() [7/8]

template<class CX >
bool operator!= ( IterTool< CX > const &  ito1,
IterTool< CX > const &  ito2 
)
inline

Definition at line 258 of file itertools.hpp.

◆ filterIterator() [1/2]

template<class IT , typename PRED >
auto filterIterator ( IT const &  src,
PRED  filterPredicate 
)
inline

Build a FilterIter: convenience free function shortcut, picking up the involved types automatically.

Parameters
filterPredicateto be invoked for each source element
Returns
Iterator filtering contents of the source

Definition at line 372 of file itertools.hpp.

Referenced by IterTools_test::buildFilterIterator(), filterRepetitions(), and filterRepetitions().

+ Here is the caller graph for this function:

◆ filterIterator() [2/2]

template<class IT , typename PRED >
auto filterIterator ( IT &&  src,
PRED  filterPredicate 
)
inline

Definition at line 379 of file itertools.hpp.

◆ singleValIterator()

template<class VAL >
auto singleValIterator ( VAL &&  something)
inline

Build a SingleValIter: convenience free function shortcut, to pick up just any value and wrap it as Lumiera Forward Iterator.

Returns
Iterator to yield the value once
Warning
be sure to understand that we literally pick up and wrap anything provided as argument. If you pass a reference, we wrap a reference. If you want to wrap a copy, you have to do the copy yourself inline

Definition at line 655 of file itertools.hpp.

References singleValIterator().

Referenced by IterTools_test::buildWrappedSingleElement(), lib::iter_source::singleVal(), singleValIterator(), and IterExplorer_test::verify_depthFirstExploration().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ nilIterator()

template<class VAL >
auto nilIterator ( )
inline

not-anything-at-all iterator

Definition at line 664 of file itertools.hpp.

◆ transformIterator() [1/2]

template<class IT , typename FUN >
auto transformIterator ( IT const &  src,
FUN  processingFunc 
)
inline

Build a TransformIter: convenience free function shortcut, picking up the involved types automatically.

Template Parameters
processingFuncto be invoked for each source element
Returns
Iterator processing the source feed

Definition at line 788 of file itertools.hpp.

References transformIterator().

Referenced by JobPlanning::buildDependencyPlanning(), IterTools_test::buildTransformingIterator(), lib::diff::test::anonymous_namespace{diff-tree-application-simple-test.cpp}::contents(), JobTicket::getPrerequisites(), Record< VAL >::keys(), Record< VAL >::operator std::string(), lib::diff::renderCompact(), lib::diff::anonymous_namespace{test-mutation-target.hpp}::renderRecord(), TestMutationTarget::showContent(), TestMutationTarget::showSrcBuffer(), util::stringify(), lib::iter_source::anonymous_namespace{iter-source.hpp}::takePairFirst(), lib::iter_source::anonymous_namespace{iter-source.hpp}::takePairSecond(), lib::iter_source::transform(), transformIterator(), transformIterator(), and Record< VAL >::vals().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ transformIterator() [2/2]

template<class IT , typename FUN >
auto transformIterator ( IT &&  src,
FUN  processingFunc 
)
inline

Definition at line 796 of file itertools.hpp.

References transformIterator().

+ Here is the call graph for this function:

◆ append_all()

template<class IT , class CON >
void append_all ( IT  iter,
CON &  container 
)
inline

Definition at line 810 of file itertools.hpp.

References append_all().

Referenced by append_all(), lib::diff::test::anonymous_namespace{generic-record-test.cpp}::contents(), DiffListGeneration_test::run(), and MutationMessage_test::verify_builder().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ pull_last()

template<class IT >
IT::value_type pull_last ( IT  iter)
inline

Definition at line 819 of file itertools.hpp.

Referenced by GenNodeLocationQuery::getCurrentWindow(), and IterTools_test::verifyPullLast().

+ Here is the caller graph for this function:

◆ filterRepetitions() [1/2]

template<class IT >
auto filterRepetitions ( IT const &  source)
inline

filters away repeated values emitted by source iterator

Definition at line 846 of file itertools.hpp.

References filterIterator().

Referenced by lib::iter_source::eachDistinctKey(), and IterTools_test::verify_filterRepetitions().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ filterRepetitions() [2/2]

template<class IT >
auto filterRepetitions ( IT &&  source)
inline

Definition at line 854 of file itertools.hpp.

References filterIterator().

+ Here is the call graph for this function:

◆ asLinkedElements()

template<class N >
auto & asLinkedElements ( N *const &  anchor)

transiently reinterpret an element pointer as const LinkedElements, allowing to count, iterate or subscript a chain of elements

Definition at line 413 of file linked-elements.hpp.

Referenced by AllocationCluster::StorageManager::determineExtentCnt().

+ Here is the caller graph for this function:

◆ optionalRefTo()

template<typename T >
OptionalRef< T > optionalRefTo ( T &  target)

Definition at line 143 of file optional-ref.hpp.

◆ makeP()

template<typename X , typename... ARGS>
P< X > makeP ( ARGS &&...  ctorArgs)
inline

Helper to create and manage by lib::P.

Template Parameters
Xthe type of the new object to create on the heap
Parameters
ctorArgsarbitrary arguments to pass to ctor of X
Returns
managing smart-ptr of type P<X>, holding onto the object just created on the heap.

Definition at line 142 of file p.hpp.

References makeP().

Referenced by makeP().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ operator==() [8/15]

template<size_t cl, size_t cr>
bool operator== ( PathArray< cl > const &  l,
PathArray< cr > const &  r 
)

Equality comparison of arbitrary PathArray objects.

Definition at line 559 of file path-array.hpp.

References PathArray< chunk_size >::begin(), and PathArray< chunk_size >::size().

+ Here is the call graph for this function:

◆ operator!=() [8/8]

template<size_t cl, size_t cr>
bool operator!= ( PathArray< cl > const &  l,
PathArray< cr > const &  r 
)

Definition at line 576 of file path-array.hpp.

◆ hash_value() [1/3]

HashVal hash_value ( QueryText const &  entry)

support using queries in hashtables.

Warning
right now (2012) the dummy implementation of QueryText doesn't normalise the query in any way, which makes the generated hash value dependent on the actual textual form used to build the QueryText. This is not how it's intended to work, it should rely on a normalised form after parsing the query definition.

Definition at line 52 of file query-text.cpp.

Referenced by SymbolHashtable_test::checkHashFunction(), Symbol_test::checkLiteral(), Symbol_test::checkSymbolCreation(), and QueryText_test::useHashValue().

+ Here is the caller graph for this function:

◆ seedFromDefaultGen()

SeedNucleus & seedFromDefaultGen ( )

draw seed another Generator from the default RandomSequencer

Definition at line 74 of file random.cpp.

Referenced by TestThread::TestThread(), Test::makeRandGen(), and BusTerm_test::pushDiff().

+ Here is the caller graph for this function:

◆ randomiseRandomness()

void randomiseRandomness ( )

inject true randomness into the defaultGen

Definition at line 83 of file random.cpp.

References defaultGen, entropyGen, and RandomSequencer< GEN >::reseed().

+ Here is the call graph for this function:

◆ rani()

int rani ( uint  bound = _iBOUND())
inline
Returns
a random integer ∈ [0 ... bound[
Examples
/Werk/devel/lumi/src/lib/test/test-helper.hpp.

Definition at line 135 of file random.hpp.

References defaultGen, RandomSequencer< GEN >::i(), and rani().

Referenced by Dummy::Dummy(), DummyObj< siz >::DummyObj(), DummyType::DummyType(), N< n >::N(), Probe< siz >::Probe(), ShortBlocker::ShortBlocker(), Sub::Sub(), Sub< i >::Sub(), DiagnosticContext_test::TestThread::TestThread(), Tracker::Tracker(), Variant_test::accessVariant(), Imp< ii, BASE >::apiFunc(), RandomConcurrent_test::benchmark_random_gen(), ScopedCollection_test::building_RAII_Style(), ScopedCollection_test::building_StackStyle(), TimeBasics_test::checkComponentBreakdown(), DelStash_test::checkCustomKill(), SymbolHashtable_test::checkHashFunction(), QuantiserBasics_test::checkSimpleQuantisation(), Checker< POLICY >::createVal(), LateBindInstance_test::demonstrateUsage(), lib::test::anonymous_namespace{allocation-cluster-test.cpp}::fill(), lib::query::test::garbage_query(), lib::query::test::garbage_term(), lib::time::test::anonymous_namespace{time-formats-test.cpp}::generateRandomFrameNr(), TestControl::Page2::pickDummyID(), ItemWrapper_test::produceResult(), TimeQuantisation_test::random_or_get(), TimeValue_test::random_or_get(), TimeControl_test::random_or_get(), TimeMutation_test::random_or_get(), lib::time::test::anonymous_namespace{digxel-test.cpp}::randomFrac(), lib::test::randStr(), lib::test::randTime(), rani(), ThreadWrapperJoin_test::returnValue(), RandomSeq::rndLetter(), SingletonTestMock_test::run(), ItemWrapper_test::run(), SyncWaiting_test::run(), Random_test::simpleUsage(), LateBindInstance_test::theMember(), Random_test::verify_distributionVariants(), IterTools_test::verify_filterRepetitions(), HashGenerator_test::verify_Knuth_workaround(), LazyInit_test::verify_lazyInitialisation(), IterSource_test::verify_MultimapIters(), LazyInit_test::verify_TargetRelocation(), LazyInit_test::verify_triggerMechanism(), LazyInit_test::verify_trojanLambda(), ThreadWrapper_test::verifyConcurrentExecution(), and AllocationCluster_test::verifyInternals().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ranRange()

double ranRange ( double  start,
double  bound 
)
inline
Returns
a random double ∈ [start ... bound[

Definition at line 142 of file random.hpp.

References defaultGen, RandomSequencer< GEN >::range(), and ranRange().

Referenced by Statistic_test::check_TimeSeriesLinearRegression(), and ranRange().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ranNormal()

double ranNormal ( double  mean = 0.0,
double  stdev = 1.0 
)
inline

Definition at line 148 of file random.hpp.

References defaultGen, RandomSequencer< GEN >::normal(), and ranNormal().

Referenced by ranNormal(), and Random_test::verify_distributionVariants().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ranHash()

lib::HashVal ranHash ( )
inline
Returns
a random non-zero HashVal

Definition at line 155 of file random.hpp.

References defaultGen, and RandomSequencer< GEN >::hash().

Referenced by Random_test::verify_distributionVariants().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ buildCappedSubSequence()

template<class GEN >
auto buildCappedSubSequence ( RandomSequencer< GEN > &  src)

Definition at line 295 of file random.hpp.

Referenced by SyncClasslock_test::run().

+ Here is the caller graph for this function:

◆ Result() [1/2]

template<typename VAL , typename = lib::meta::disable_if<std::is_invocable<VAL>>>
Result ( VAL &&  ) -> Result< VAL >

deduction guide: allow perfect forwarding of a any result into the ctor call.

◆ Result() [2/2]

template<typename FUN , typename... ARGS>
Result ( FUN &&  ,
ARGS &&  ... 
) -> Result< std::invoke_result_t< FUN, ARGS... > >

deduction guide: find out about result value to capture from a generic callable.

◆ findExePath()

fs::path findExePath ( )

retrieve the location of the executable

helper to figure out the installation directory, as given by the absolute path of the currently executing program

Warning
this is Linux specific code

Definition at line 46 of file searchpath.cpp.

References GET_PATH_TO_EXECUTABLE.

Referenced by replaceMagicLinkerTokens(), and SearchPathSplitter_test::resolveEmbeddedOriginToken().

+ Here is the caller graph for this function:

◆ replaceMagicLinkerTokens()

string replaceMagicLinkerTokens ( string const &  src)

replace $ORIGIN tokens in the given string

helper to replace all $ORIGIN prefixes in a given string by the directory holding the current executable

Note
also picks ORIGIN, $ORIGIN/, ORIGIN/
Returns
copy with expansions applied

Definition at line 60 of file searchpath.cpp.

References findExePath().

Referenced by SearchPathSplitter::operator*().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ resolveModulePath()

string resolveModulePath ( fs::path  moduleName,
string  searchPath = "" 
)

helper to establish the location to search for loadable modules, configuration files, icons and further resources.

After first trying the moduleName directly, the given search path is walked using the SearchPathSplitter, until encountering an existing file with the given name.

Returns
the absolute pathname of the module file found
Exceptions
error::Configwhen the resolution fails

Definition at line 74 of file searchpath.cpp.

References cStr(), and resolveModulePath().

Referenced by resolveModulePath(), and UiStyle::setTheme().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ makeSeveral() [1/2]

template<typename I , typename E = I>
SeveralBuilder< I, E > makeSeveral ( )

Entrance Point: start building a lib::Several instance.

Template Parameters
IInterface type to use for element access
E(optional) standard element implementation type
Returns
a builder instance with methods to create or copy data elements to populate the container...

Definition at line 898 of file several-builder.hpp.

Referenced by SeveralBuilder_test::check_ElementStorage(), and SeveralBuilder_test::simpleUsage().

+ Here is the caller graph for this function:

◆ makeSeveral() [2/2]

template<typename X >
SeveralBuilder< X > makeSeveral ( std::initializer_list< X >  ili)

Definition at line 905 of file several-builder.hpp.

References SeveralBuilder< I, E, POL >::appendAll(), and SeveralBuilder< I, E, POL >::reserve().

+ Here is the call graph for this function:

◆ hash_value() [2/3]

HashVal hash_value ( Literal  literal)

generate hash value based on the Literal's contents.

This function is intended to be picked up by ADL, and should be usable both with std::hash and <boost/functional/hash.hpp>. It is implemented similar as the boost::hash specialisation for std::string

Definition at line 84 of file symbol-impl.cpp.

References hash, and STRING_MAX_RELEVANT.

◆ hash_value() [3/3]

HashVal hash_value ( Symbol  sym)

hash value for Symbols is directly based on the symbol table entry

Definition at line 100 of file symbol-impl.cpp.

References Literal::c().

+ Here is the call graph for this function:

◆ operator==() [9/15]

constexpr bool operator== ( Literal const &  s1,
Literal const &  s2 
)
inlineconstexpr

Definition at line 199 of file symbol.hpp.

References Literal::c().

+ Here is the call graph for this function:

◆ operator==() [10/15]

constexpr bool operator== ( Symbol const &  s1,
Symbol const &  s2 
)
inlineconstexpr
Note
comparison of symbol table entries

Definition at line 200 of file symbol.hpp.

References Literal::c().

+ Here is the call graph for this function:

◆ operator==() [11/15]

constexpr bool operator== ( CStr  s1,
Literal  s2 
)
inlineconstexpr

Definition at line 204 of file symbol.hpp.

◆ operator==() [12/15]

constexpr bool operator== ( Symbol  s1,
CStr  s2 
)
inlineconstexpr

Definition at line 205 of file symbol.hpp.

◆ operator==() [13/15]

constexpr bool operator== ( Literal  s1,
Symbol  s2 
)
inlineconstexpr

Definition at line 206 of file symbol.hpp.

References Literal::c().

+ Here is the call graph for this function:

◆ operator==() [14/15]

constexpr bool operator== ( Literal  s1,
std::string const &  s2 
)
inlineconstexpr

Definition at line 207 of file symbol.hpp.

◆ operator==() [15/15]

constexpr bool operator== ( Symbol  s1,
std::string const &  s2 
)
inlineconstexpr

Definition at line 208 of file symbol.hpp.

◆ operator+() [1/2]

std::string operator+ ( std::string  str,
Literal const &  sym 
)
inline

string concatenation

Definition at line 214 of file symbol.hpp.

◆ operator+() [2/2]

std::string operator+ ( Literal const &  sym,
std::string  str 
)
inline

Definition at line 221 of file symbol.hpp.

◆ ThreadJoinable()

template<typename FUN , typename... ARGS>
ThreadJoinable ( string const &  ,
FUN &&  ,
ARGS &&  ... 
) -> ThreadJoinable< std::invoke_result_t< FUN, ARGS... > >

deduction guide: find out about result value to capture from a generic callable.

◆ launchDetached() [1/4]

template<class TAR = ThreadHookable>
void launchDetached ( ThreadHookable::Launch &&  launchBuilder)
inline

Launch an autonomous self-managing thread (and forget about it).

The thread-object is allocated to the heap and will delete itself on termination.

Template Parameters
TARconcrete type of the subclass to be started as autonomous detached thread.
Parameters
launchBuildera flexible thread launch configuration to be used for starting; especially this contains the thread function and arguments to run in the thread.
Note
hooks atExit and onOrphan defined in the launchBuilder will be overridden.
Remarks
the atExit hook is the last piece of code executed within the thread; here it takes a pointer to the allocated instance of type TAR and deletes it from heap. Obviously this will invoke the destructor of the thread-wrapper eventually, at which point the onOrphan hook is invoked (since the thread is still running); at this point the C++ thread-handle is detached, so that invoking the dtor of std::thread will not terminate the system, rather just let the thread go away. The net result is an object of type TAR placed on the heap and kept there precisely as long as the thread runs.

Definition at line 742 of file thread.hpp.

References ThreadWrapper::detach_thread_from_wrapper(), and launchDetached().

Referenced by ThreadWrapperAutonomous_test::demonstrateSimpleUsage(), launchDetached(), launchDetached(), launchDetached(), and launchDetached().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ launchDetached() [2/4]

template<class TAR = ThreadHookable, typename... INVO>
void launchDetached ( string const &  threadID,
INVO &&...  args 
)
inline

Launch an autonomous self-managing thread (and forget about it).

Template Parameters
TARconcrete type of the subclass to be started as autonomous detached thread.
Parameters
argsa valid argument list to call the ctor of thread::ThreadLifecycle

Definition at line 765 of file thread.hpp.

References launchDetached().

+ Here is the call graph for this function:

◆ launchDetached() [3/4]

template<class TAR , typename... ARGS>
void launchDetached ( string const &  threadID,
void(TAR::*)(ARGS...)  memFun,
ARGS ...  args 
)
inline

Special variant bind a member function of the subclass into the autonomous thread.

Definition at line 775 of file thread.hpp.

References launchDetached().

+ Here is the call graph for this function:

◆ launchDetached() [4/4]

template<class TAR , typename... ARGS>
void launchDetached ( void(TAR::*)(ARGS...)  memFun,
ARGS ...  args 
)
inline

Special variant without explicitly given thread-ID.

Definition at line 788 of file thread.hpp.

References util::joinDash(), and launchDetached().

+ Here is the call graph for this function:

Variable Documentation

◆ defaultGen

◆ entropyGen

◆ STRING_MAX_RELEVANT

const size_t STRING_MAX_RELEVANT = LUMIERA_IDSTRING_MAX_RELEVANT

safety guard: maximum number of chars to process.

For comparisons, hash calculations etc., when dealing with raw char ptrs (typically literal values)

Definition at line 41 of file symbol-impl.cpp.

Referenced by SymbolHashtable_test::checkHashFunction(), hash_value(), and Literal::operator==().