CIRCT 23.0.0git
Loading...
Searching...
No Matches
Classes | Namespaces | Typedefs | Functions | Variables
TypedPorts.h File Reference
#include "esi/Design.h"
#include "esi/Ports.h"
#include "esi/Services.h"
#include "esi/Types.h"
#include <algorithm>
#include <array>
#include <cstdint>
#include <cstring>
#include <functional>
#include <future>
#include <map>
#include <memory>
#include <mutex>
#include <optional>
#include <queue>
#include <stdexcept>
#include <string>
#include <string_view>
#include <type_traits>
#include <typeinfo>
Include dependency graph for TypedPorts.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  esi::AcceleratorMismatchError
 
struct  esi::WireInfo
 Compute the wire byte count for a port type. More...
 
struct  esi::detail::has_type_deserializer< T, typename >
 
struct  esi::detail::has_type_deserializer< T, std::void_t< typename T::TypeDeserializer > >
 
class  esi::detail::PODTypeDeserializer< T >
 Default deserializer for simple 1:1 typed reads. More...
 
struct  esi::detail::DeserializerSelector< T, typename >
 
struct  esi::detail::DeserializerSelector< T, std::void_t< typename T::TypeDeserializer > >
 
class  esi::QueuedDecodeTypeDeserializer< T >
 Helper base class for stateful deserializers which may emit zero, one, or many typed outputs for each raw input message. More...
 
class  esi::SerialListTypeDeserializer< T >
 Reusable serial-list window deserializer. More...
 
struct  esi::has_esi_id< T, typename >
 
struct  esi::has_esi_id< T, std::void_t< decltype(T::_ESI_ID)> >
 
struct  esi::has_esi_window_id< T, typename >
 
struct  esi::has_esi_window_id< T, std::void_t< decltype(T::_ESI_WINDOW_ID)> >
 
struct  esi::is_std_array< T >
 
struct  esi::is_std_array< std::array< T, N > >
 
class  esi::TypedWritePort< T, SkipTypeCheck >
 
class  esi::TypedWritePort< void >
 Specialization for void — write takes no data argument. More...
 
class  esi::TypedReadPort< T, SkipTypeCheck >
 Strongly typed wrapper around a raw read channel. More...
 
class  esi::TypedReadPort< void >
 Specialization for void — read discards data and returns nothing. More...
 
class  esi::TypedFunction< ArgT, ResultT, SkipTypeCheck >
 
class  esi::TypedFunction< void, ResultT, SkipTypeCheck >
 Partial specialization: void argument, typed result. More...
 
class  esi::TypedFunction< ArgT, void, SkipTypeCheck >
 Partial specialization: typed argument, void result. More...
 
class  esi::TypedFunction< void, void, SkipTypeCheck >
 Full specialization: void argument, void result. More...
 
class  esi::TypedCallback< ArgT, ResultT, SkipTypeCheck >
 
class  esi::TypedCallback< void, ResultT, SkipTypeCheck >
 Partial specialization: void argument, typed result. More...
 
class  esi::TypedCallback< ArgT, void, SkipTypeCheck >
 Partial specialization: typed argument, void result. More...
 
class  esi::TypedCallback< void, void, SkipTypeCheck >
 Full specialization: void argument, void result. More...
 
class  esi::IndexedPorts< T >
 

Namespaces

namespace  esi
 
namespace  esi::detail
 

Typedefs

template<typename T >
using esi::detail::TypedReadOwnedCallback = std::function< bool(std::unique_ptr< T > &)>
 Owning callback used by typed read deserializers.
 
template<typename T >
using esi::detail::DeserializerFor = typename DeserializerSelector< T >::type
 
template<typename T >
using esi::detail::DeserializerOutputCallback = typename DeserializerFor< T >::OutputCallback
 

Functions

const Typeesi::unwrapTypeAlias (const Type *t)
 Unwrap TypeAliasType (possibly recursively) to get the underlying type.
 
WireInfo esi::getWireInfo (const Type *portType)
 
template<typename T >
MessageData esi::toMessageData (const T &data, WireInfo wi)
 Pack a C++ integral value into a MessageData with the given wire byte count.
 
template<typename T >
MessageData esi::toMessageData (const T &data, const Type *portType)
 
template<typename T >
esi::fromMessageData (const MessageData &msg, WireInfo wi)
 Unpack a MessageData into a C++ integral value with the given wire info.
 
template<typename T >
esi::fromMessageData (const MessageData &msg, const Type *portType)
 
template<typename T >
const MessageDataesi::detail::getMessageDataRef (const SegmentedMessageData &msg, MessageData &scratch)
 
template<typename T >
void esi::verifyTypeCompatibility (const Type *portType)
 
template<typename T >
void esi::verifyTypeCompatibility (const ChannelPort *port)
 
ChannelPort::ConnectOptions esi::detail::typedFunctionConnectOptions ()
 Standard ConnectOptions for typed function ports: untranslated frames so the deserializer can see raw frame boundaries.
 
template<typename T >
std::future< T > esi::detail::awaitDecoded (std::future< std::unique_ptr< T > > inner)
 Convert a std::future<std::unique_ptr<T>> (as returned by TypedReadPort::readAsync()) into a std::future<T>.
 
void esi::detail::throwNullFunction ()
 Throw the standard "null Function pointer" error used by every TypedFunction specialization.
 
void esi::detail::throwNotConnected ()
 Throw a clear "not connected" error from call() paths.
 
void esi::detail::throwAlreadyConnected ()
 Throw a clear "already connected" error from connect() paths.
 
void esi::detail::throwNullCallback ()
 Throw the standard "null Callback pointer" error used by every TypedCallback specialization.
 
void esi::detail::throwCallbackAlreadyConnected ()
 Throw a clear "already connected" error from TypedCallback connect() paths.
 
BundlePortesi::findPortOrThrow (HWModule *module, const AppID &id)
 Look up a BundlePort by AppID in module.
 
template<typename T >
T * esi::findPortAsOrThrow (HWModule *module, const AppID &id)
 Look up a BundlePort by AppID and cast it to T.
 
std::vector< uint32_t > esi::findPortIndices (HWModule *module, const std::string &name)
 Return a sorted vector of the idx values for every port whose AppID name matches name.
 

Variables

template<typename T >
constexpr bool esi::detail::has_type_deserializer_v = has_type_deserializer<T>::value
 
template<typename T >
constexpr bool esi::has_esi_id_v = has_esi_id<T>::value
 
template<typename T >
constexpr bool esi::has_esi_window_id_v = has_esi_window_id<T>::value
 
template<typename T >
constexpr bool esi::is_std_array_v = is_std_array<T>::value