|
CIRCT 22.0.0git
|
Channels are the basic communication primitives. More...
#include <Types.h>


Public Member Functions | |
| ChannelType (const ID &id, const Type *inner) | |
| const Type * | getInner () 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. | |
| MutableBitVector | serialize (const std::any &obj) const override |
| Serialize an object to a MutableBitVector (LSB-first stream). | |
| std::any | deserialize (BitVector &data) const override |
| Deserialize from a BitVector stream (LSB-first). | |
| virtual std::any | deserialize (BitVector &data) const |
| Deserialize from a BitVector stream (LSB-first). | |
| std::any | deserialize (const MessageData &data) const |
Public Member Functions inherited from esi::Type | |
| Type (const ID &id) | |
| virtual | ~Type ()=default |
| ID | getID () const |
| std::any | deserialize (const MessageData &data) const |
| std::optional< std::string > | isValid (const std::any &obj) const |
Private Attributes | |
| const Type * | inner |
Additional Inherited Members | |
Public Types inherited from esi::Type | |
| using | ID = std::string |
Protected Attributes inherited from esi::Type | |
| ID | id |
Channels are the basic communication primitives.
They are unidirectional and carry one values of one type.
|
inlinevirtual |
|
overridevirtual |
Deserialize from a BitVector stream (LSB-first).
Implementations consume bits from 'data' in-place (via logical right shifts) and return the reconstructed value. Remaining bits stay in 'data'.
Reimplemented from esi::Type.
Definition at line 41 of file Types.cpp.
References esi::Type::deserialize(), and inner.
|
inline |
|
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 33 of file Types.cpp.
References esi::Type::ensureValid(), and inner.
|
inlineoverridevirtual |
Reimplemented from esi::Type.
Definition at line 117 of file Types.h.
References esi::Type::getBitWidth(), and inner.
|
inline |
|
overridevirtual |
Serialize an object to a MutableBitVector (LSB-first stream).
The object should be passed via std::any. Implementations append fields in the order they are iterated (the first serialized field occupies the least-significant bits of the result).
Reimplemented from esi::Type.
Definition at line 37 of file Types.cpp.
References inner, and esi::Type::serialize().
|
private |
Definition at line 124 of file Types.h.
Referenced by deserialize(), ensureValid(), getBitWidth(), getInner(), and serialize().