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

#include <TypedPorts.h>

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

Public Member Functions

 TypedFunction (services::FuncService::Function *func)
 Implicit conversion from Function* (returned by getAs<>()).
 
 TypedFunction (const TypedFunction &)=delete
 
TypedFunctionoperator= (const TypedFunction &)=delete
 
void connect ()
 
std::future< ResultT > 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< ResultT > 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< ResultT, SkipTypeCheck > > resultPort
 
std::mutex callMutex
 

Detailed Description

template<typename ArgT, typename ResultT, bool SkipTypeCheck = false>
class esi::TypedFunction< ArgT, ResultT, SkipTypeCheck >

Definition at line 1016 of file TypedPorts.h.

Constructor & Destructor Documentation

◆ TypedFunction() [1/2]

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

Implicit conversion from Function* (returned by getAs<>()).

Definition at line 1020 of file TypedPorts.h.

◆ TypedFunction() [2/2]

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

Member Function Documentation

◆ call() [1/2]

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

◆ call() [2/2]

template<typename ArgT , typename ResultT , bool SkipTypeCheck = false>
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< ResultT > esi::TypedFunction< ArgT, ResultT, 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 1057 of file TypedPorts.h.

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

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

◆ connect()

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

◆ operator()()

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

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

Definition at line 1063 of file TypedPorts.h.

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

◆ operator=()

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

◆ raw() [1/2]

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

◆ raw() [2/2]

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

Member Data Documentation

◆ argPort

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

◆ callMutex

template<typename ArgT , typename ResultT , bool SkipTypeCheck = false>
std::mutex esi::TypedFunction< ArgT, ResultT, SkipTypeCheck >::callMutex
private

◆ inner

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

◆ resultPort

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

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