CIRCT 24.0.0git
Loading...
Searching...
No Matches
Public Member Functions | Private Attributes | List of all members
esi::TypedFunction< ArgT, void, SkipTypeCheck > Class Template Reference

Partial specialization: typed argument, void result. More...

#include <TypedPorts.h>

Collaboration diagram for esi::TypedFunction< ArgT, void, SkipTypeCheck >:
Collaboration graph
[legend]

Public Member Functions

 TypedFunction (services::FuncService::Function *func)
 
 TypedFunction (const TypedFunction &)=delete
 
TypedFunctionoperator= (const TypedFunction &)=delete
 
void connect ()
 
std::future< void > call (const ArgT &arg)
 
template<typename First , typename... Rest, typename = std::enable_if_t< std::is_constructible_v<ArgT, First, Rest...> && (!std::is_same_v<std::decay_t<First>, ArgT> || sizeof...(Rest) != 0)>>
std::future< void > call (First &&first, Rest &&...rest)
 Emplace-style call: constructs ArgT in-place from the forwarded arguments and forwards to call(const ArgT &).
 
template<typename... Args>
auto operator() (Args &&...args) -> decltype(this->call(std::forward< Args >(args)...))
 Function-call operator overloads: forward to call().
 
services::FuncService::Functionraw ()
 
const services::FuncService::Functionraw () const
 

Private Attributes

services::FuncService::Functioninner
 
std::optional< TypedWritePort< ArgT, SkipTypeCheck > > argPort
 
std::optional< TypedReadPort< void > > resultPort
 
std::mutex callMutex
 

Detailed Description

template<typename ArgT, bool SkipTypeCheck>
class esi::TypedFunction< ArgT, void, SkipTypeCheck >

Partial specialization: typed argument, void result.

Definition at line 1122 of file TypedPorts.h.

Constructor & Destructor Documentation

◆ TypedFunction() [1/2]

template<typename ArgT , bool SkipTypeCheck>
esi::TypedFunction< ArgT, void, SkipTypeCheck >::TypedFunction ( services::FuncService::Function func)
inline

Definition at line 1125 of file TypedPorts.h.

◆ TypedFunction() [2/2]

template<typename ArgT , bool SkipTypeCheck>
esi::TypedFunction< ArgT, void, SkipTypeCheck >::TypedFunction ( const TypedFunction< ArgT, void, SkipTypeCheck > &  )
delete

Member Function Documentation

◆ call() [1/2]

template<typename ArgT , bool SkipTypeCheck>
std::future< void > esi::TypedFunction< ArgT, void, SkipTypeCheck >::call ( const ArgT &  arg)
inline

◆ call() [2/2]

template<typename ArgT , bool SkipTypeCheck>
template<typename First , typename... Rest, typename = std::enable_if_t< std::is_constructible_v<ArgT, First, Rest...> && (!std::is_same_v<std::decay_t<First>, ArgT> || sizeof...(Rest) != 0)>>
std::future< void > esi::TypedFunction< ArgT, void, SkipTypeCheck >::call ( First &&  first,
Rest &&...  rest 
)
inline

Emplace-style call: constructs ArgT in-place from the forwarded arguments and forwards to call(const ArgT &).

SFINAE-disabled for the single-ArgT-argument case so it does not shadow the lvalue overload.

Definition at line 1157 of file TypedPorts.h.

References esi::TypedFunction< ArgT, ResultT, SkipTypeCheck >::call().

Referenced by esiaccel.types.FunctionPort::__call__().

◆ connect()

template<typename ArgT , bool SkipTypeCheck>
void esi::TypedFunction< ArgT, void, SkipTypeCheck >::connect ( )
inline

◆ operator()()

template<typename ArgT , bool SkipTypeCheck>
template<typename... Args>
auto esi::TypedFunction< ArgT, void, SkipTypeCheck >::operator() ( Args &&...  args) -> decltype(this->call(std::forward<Args>(args)...))
inline

Function-call operator overloads: forward to call().

Definition at line 1163 of file TypedPorts.h.

References esi::TypedFunction< ArgT, ResultT, SkipTypeCheck >::call().

◆ operator=()

template<typename ArgT , bool SkipTypeCheck>
TypedFunction & esi::TypedFunction< ArgT, void, SkipTypeCheck >::operator= ( const TypedFunction< ArgT, void, SkipTypeCheck > &  )
delete

◆ raw() [1/2]

template<typename ArgT , bool SkipTypeCheck>
services::FuncService::Function & esi::TypedFunction< ArgT, void, SkipTypeCheck >::raw ( )
inline

◆ raw() [2/2]

template<typename ArgT , bool SkipTypeCheck>
const services::FuncService::Function & esi::TypedFunction< ArgT, void, SkipTypeCheck >::raw ( ) const
inline

Member Data Documentation

◆ argPort

template<typename ArgT , bool SkipTypeCheck>
std::optional<TypedWritePort<ArgT, SkipTypeCheck> > esi::TypedFunction< ArgT, void, SkipTypeCheck >::argPort
private

Definition at line 1173 of file TypedPorts.h.

◆ callMutex

template<typename ArgT , bool SkipTypeCheck>
std::mutex esi::TypedFunction< ArgT, void, SkipTypeCheck >::callMutex
private

Definition at line 1175 of file TypedPorts.h.

◆ inner

template<typename ArgT , bool SkipTypeCheck>
services::FuncService::Function* esi::TypedFunction< ArgT, void, SkipTypeCheck >::inner
private

Definition at line 1172 of file TypedPorts.h.

◆ resultPort

template<typename ArgT , bool SkipTypeCheck>
std::optional<TypedReadPort<void> > esi::TypedFunction< ArgT, void, SkipTypeCheck >::resultPort
private

Definition at line 1174 of file TypedPorts.h.


The documentation for this class was generated from the following file: