CIRCT 22.0.0git
Loading...
Searching...
No Matches
Public Member Functions | Private Attributes | List of all members
esi::ChannelType Class Reference

Channels are the basic communication primitives. More...

#include <Types.h>

Inheritance diagram for esi::ChannelType:
Inheritance graph
[legend]
Collaboration diagram for esi::ChannelType:
Collaboration graph
[legend]

Public Member Functions

 ChannelType (const ID &id, const Type *inner)
 
const TypegetInner () const
 
std::ptrdiff_t getBitWidth () const override
 
void ensureValid (const std::any &obj) const override
 Ensure that a std::any object is valid for this type.
 
MessageData serialize (const std::any &obj) const override
 Serialize an object to MessageData.
 
std::pair< std::any, std::span< const uint8_t > > deserialize (std::span< const uint8_t > data) const override
 Deserialize from a span of bytes to an object.
 
- Public Member Functions inherited from esi::Type
 Type (const ID &id)
 
virtual ~Type ()=default
 
ID getID () const
 
std::optional< std::string > isValid (const std::any &obj) const
 

Private Attributes

const Typeinner
 

Additional Inherited Members

- Public Types inherited from esi::Type
using ID = std::string
 
- Protected Attributes inherited from esi::Type
ID id
 

Detailed Description

Channels are the basic communication primitives.

They are unidirectional and carry one values of one type.

Definition at line 102 of file Types.h.

Constructor & Destructor Documentation

◆ ChannelType()

esi::ChannelType::ChannelType ( const ID id,
const Type inner 
)
inline

Definition at line 104 of file Types.h.

Member Function Documentation

◆ deserialize()

std::pair< std::any, std::span< const uint8_t > > esi::ChannelType::deserialize ( std::span< const uint8_t >  data) const
overridevirtual

Deserialize from a span of bytes to an object.

Returns the deserialized object as a std::any and a span to the remaining bytes.

Reimplemented from esi::Type.

Definition at line 41 of file Types.cpp.

References esi::Type::deserialize(), and inner.

◆ ensureValid()

void esi::ChannelType::ensureValid ( const std::any &  obj) const
overridevirtual

Ensure that a std::any object is valid for this type.

Throws std::runtime_error if the object is not valid.

Reimplemented from esi::Type.

Definition at line 32 of file Types.cpp.

References esi::Type::ensureValid(), and inner.

◆ getBitWidth()

std::ptrdiff_t esi::ChannelType::getBitWidth ( ) const
inlineoverridevirtual

Reimplemented from esi::Type.

Definition at line 106 of file Types.h.

References esi::Type::getBitWidth(), and inner.

◆ getInner()

const Type * esi::ChannelType::getInner ( ) const
inline

Definition at line 105 of file Types.h.

References inner.

◆ serialize()

MessageData esi::ChannelType::serialize ( const std::any &  obj) const
overridevirtual

Serialize an object to MessageData.

The object should be passed as a std::any to provide type erasure. Returns a MessageData containing the serialized representation.

Reimplemented from esi::Type.

Definition at line 36 of file Types.cpp.

References inner, and esi::Type::serialize().

Member Data Documentation

◆ inner

const Type* esi::ChannelType::inner
private

Definition at line 114 of file Types.h.

Referenced by deserialize(), ensureValid(), getBitWidth(), getInner(), and serialize().


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