|
CIRCT 22.0.0git
|
Structs are an ordered collection of fields, each with a name and a type. More...
#include <Types.h>


Public Types | |
| using | FieldVector = std::vector< std::pair< std::string, const Type * > > |
Public Types inherited from esi::Type | |
| using | ID = std::string |
Public Member Functions | |
| StructType (const ID &id, const FieldVector &fields, bool reverse=true) | |
| const FieldVector & | getFields () 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). | |
| bool | isReverse () const |
| 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 | |
| FieldVector | fields |
| bool | reverse |
Additional Inherited Members | |
Protected Attributes inherited from esi::Type | |
| ID | id |
Structs are an ordered collection of fields, each with a name and a type.
| using esi::StructType::FieldVector = std::vector<std::pair<std::string, const Type *> > |
|
inline |
|
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 250 of file Types.cpp.
References esi::Type::deserialize(), fields, and isReverse().
|
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 203 of file Types.cpp.
References fields.
Referenced by serialize().
|
inlineoverridevirtual |
|
inline |
|
inline |
Definition at line 233 of file Types.h.
References reverse.
Referenced by deserialize(), and serialize().
|
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 229 of file Types.cpp.
References ensureValid(), fields, isReverse(), esi::Type::serialize(), and esi::BitVector::width().
|
private |
Definition at line 236 of file Types.h.
Referenced by esiaccel.types.StructType::bit_width(), deserialize(), esiaccel.types.StructType::deserialize(), ensureValid(), getFields(), esiaccel.types.StructType::is_valid(), serialize(), and esiaccel.types.StructType::serialize().
|
private |
Definition at line 237 of file Types.h.
Referenced by isReverse().