distortos  v0.7.0
object-oriented C++ RTOS for microcontrollers
estd::internal Namespace Reference

Internals of estd namespace - should not be used directly! More...

Classes

struct  DoubledIntegerSequence
 TypedSequence with doubled number of elements. More...
 
struct  DoubledIntegerSequence< TypedSequence< T, Integers... > >
 TypedSequence with doubled number of elements. More...
 
struct  ExtendedIntegerSequence
 TypedSequence optionally extended by one element. More...
 
struct  ExtendedIntegerSequence< true, TypedSequence< T, Integers... > >
 TypedSequence optionally extended by one element. More...
 
class  IntrusiveForwardListBase
 IntrusiveForwardListBase class provides base functionalities for IntrusiveForwardList class, but without any knowledge about types. More...
 
class  IntrusiveListBase
 IntrusiveListBase class provides base functionalities for IntrusiveList class, but without any knowledge about types. More...
 
struct  MakeIntegerSequenceImplementation
 Implementation of generator of IntegerSequence types. More...
 
struct  MakeIntegerSequenceImplementation< T, 0 >
 Implementation of generator of IntegerSequence types. More...
 
struct  TypedSequence
 IntegerSequence with two internal type aliases. More...
 
struct  TypeFromSize
 Implementation of TypeFromSize. More...
 

Functions

template<typename Function , typename Tuple , std::size_t... Indexes>
constexpr auto apply (Function &&function, Tuple &&tuple, estd::IndexSequence< Indexes... >) -> decltype(estd::invoke(std::forward< Function >(function), std::get< Indexes >(std::forward< Tuple >(tuple))...))
 Implementation of apply() More...
 
void swap (IntrusiveForwardListBase &left, IntrusiveForwardListBase &right)
 Swaps contents of two lists. More...
 
void swap (IntrusiveListBase &left, IntrusiveListBase &right)
 Swaps contents of two lists. More...
 
template<typename Function , typename... Args>
auto invoke (Function &&function, Args &&... args) -> decltype(std::forward< Function >(function)(std::forward< Args >(args)...))
 Implementation of invoke() for function objects. More...
 
template<typename T , typename Base , typename Derived , typename... Args>
auto invoke (T Base::*memberFunction, Derived &&object, Args &&... args) -> decltype((std::forward< Derived >(object).*memberFunction)(std::forward< Args >(args)...))
 Implementation of invoke() for member functions. More...
 
template<typename MemberFunction , typename Pointer , typename... Args>
auto invoke (MemberFunction memberFunction, Pointer &&pointer, Args &&... args) -> decltype(((*std::forward< Pointer >(pointer)).*memberFunction)(std::forward< Args >(args)...))
 Implementation of invoke() for member functions. More...
 
template<typename T , typename Base , typename Derived >
auto invoke (T Base::*dataMember, Derived &&object) -> decltype(std::forward< Derived >(object).*dataMember)
 Implementation of invoke() for data members. More...
 
template<typename DataMember , typename Pointer >
auto invoke (DataMember dataMember, Pointer &&pointer) -> decltype((*std::forward< Pointer >(pointer)).*dataMember)
 Implementation of invoke() for data members. More...
 

Detailed Description

Internals of estd namespace - should not be used directly!

Function Documentation

◆ apply()

template<typename Function , typename Tuple , std::size_t... Indexes>
constexpr auto estd::internal::apply ( Function &&  function,
Tuple &&  tuple,
estd::IndexSequence< Indexes... >   
) -> decltype(estd::invoke(std::forward<Function>(function), std::get<Indexes>(std::forward<Tuple>(tuple))...))

Implementation of apply()

Template Parameters
Functionis the function object that will be invoked
Tupleis the type of tuple of arguments
Indexesis a sequence of std::size_t indexes for Tuple
Parameters
[in]functionis the function object that will be executed
[in]tupleis the tuple of arguments
Returns
value returned by call to function with arguments from tuple
Here is the call graph for this function:

◆ invoke() [1/5]

template<typename Function , typename... Args>
auto estd::internal::invoke ( Function &&  function,
Args &&...  args 
) -> decltype(std::forward<Function>(function)(std::forward<Args>(args)...))
inline

Implementation of invoke() for function objects.

Template Parameters
Functionis the function object that will be executed
Argsare the arguments for Function
Parameters
[in]functionis the function object that will be executed
[in]argsare arguments for function
Returns
value returned by call to function with args
Here is the caller graph for this function:

◆ invoke() [2/5]

template<typename T , typename Base , typename Derived , typename... Args>
auto estd::internal::invoke ( T Base::*  memberFunction,
Derived &&  object,
Args &&...  args 
) -> decltype((std::forward<Derived>(object).*memberFunction)(std::forward<Args>(args)...))
inline

Implementation of invoke() for member functions.

Template Parameters
Tis the type returned by call to member function
Baseis the type of base class
Derivedis the type of derived class
Argsare the arguments for member function
Parameters
[in]memberFunctionis a pointer to member function of object that will be executed
[in]objectis an object or a reference to object on which memberFunction will be executed
[in]argsare arguments for memberFunction
Returns
value returned by call to memberFunction on object with args

◆ invoke() [3/5]

template<typename MemberFunction , typename Pointer , typename... Args>
auto estd::internal::invoke ( MemberFunction  memberFunction,
Pointer &&  pointer,
Args &&...  args 
) -> decltype(((*std::forward<Pointer>(pointer)).*memberFunction)(std::forward<Args>(args)...))
inline

Implementation of invoke() for member functions.

Template Parameters
MemberFunctionis the type or pointer to member function
Pointeris the type of pointer to object
Argsare the arguments for member function
Parameters
[in]memberFunctionis a pointer to member function of object that will be executed
[in]pointeris a pointer to object on which memberFunction will be executed
[in]argsare arguments for memberFunction
Returns
value returned by call to memberFunction on (*pointer) with args

◆ invoke() [4/5]

template<typename T , typename Base , typename Derived >
auto estd::internal::invoke ( T Base::*  dataMember,
Derived &&  object 
) -> decltype(std::forward<Derived>(object).*dataMember)
inline

Implementation of invoke() for data members.

Template Parameters
Tis the type of data member
Baseis the type of base class
Derivedis the type of derived class
Parameters
[in]dataMemberis a pointer to data member of object that will be accessed
[in]objectis an object or a reference to object in which dataMember will be accessed
Returns
value returned by access to dataMember in object

◆ invoke() [5/5]

template<typename DataMember , typename Pointer >
auto estd::internal::invoke ( DataMember  dataMember,
Pointer &&  pointer 
) -> decltype((*std::forward<Pointer>(pointer)).*dataMember)
inline

Implementation of invoke() for data members.

Template Parameters
DataMemberis the type or pointer to data member
Pointeris the type of pointer to object
Parameters
[in]dataMemberis a pointer to data member of object that will be accessed
[in]pointeris a pointer to object in which dataMember will be accessed
Returns
value returned by access to dataMember in (*pointer)

◆ swap() [1/2]

void estd::internal::swap ( IntrusiveForwardListBase left,
IntrusiveForwardListBase right 
)
inline

Swaps contents of two lists.

Parameters
[in]leftis a reference to IntrusiveForwardListBase with which contents of right will be swapped
[in]rightis a reference to IntrusiveForwardListBase with which contents of left will be swapped
Here is the call graph for this function:

◆ swap() [2/2]

void estd::internal::swap ( IntrusiveListBase left,
IntrusiveListBase right 
)
inline

Swaps contents of two lists.

Parameters
[in]leftis a reference to IntrusiveListBase with which contents of right will be swapped
[in]rightis a reference to IntrusiveListBase with which contents of left will be swapped
Here is the call graph for this function: