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

Structs are an ordered collection of fields, each with a name and a type. More...

#include <Types.h>

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

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 FieldVectorgetFields () 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
 

Detailed Description

Structs are an ordered collection of fields, each with a name and a type.

Definition at line 204 of file Types.h.

Member Typedef Documentation

◆ FieldVector

using esi::StructType::FieldVector = std::vector<std::pair<std::string, const Type *> >

Definition at line 206 of file Types.h.

Constructor & Destructor Documentation

◆ StructType()

esi::StructType::StructType ( const ID id,
const FieldVector fields,
bool  reverse = true 
)
inline

Definition at line 209 of file Types.h.

Member Function Documentation

◆ deserialize() [1/3]

virtual std::any esi::Type::deserialize ( BitVector data) const
inlinevirtual

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 54 of file Types.h.

◆ deserialize() [2/3]

std::any esi::StructType::deserialize ( BitVector data) const
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().

◆ deserialize() [3/3]

std::any esi::Type::deserialize ( const MessageData data) const
inline

Definition at line 61 of file Types.h.

◆ ensureValid()

void esi::StructType::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 203 of file Types.cpp.

References fields.

Referenced by serialize().

◆ getBitWidth()

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

Reimplemented from esi::Type.

Definition at line 213 of file Types.h.

References getFields().

◆ getFields()

const FieldVector & esi::StructType::getFields ( ) const
inline

Definition at line 212 of file Types.h.

References fields.

Referenced by getBitWidth().

◆ isReverse()

bool esi::StructType::isReverse ( ) const
inline

Definition at line 233 of file Types.h.

References reverse.

Referenced by deserialize(), and serialize().

◆ serialize()

MutableBitVector esi::StructType::serialize ( const std::any &  obj) const
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().

Member Data Documentation

◆ fields

FieldVector esi::StructType::fields
private

◆ reverse

bool esi::StructType::reverse
private

Definition at line 237 of file Types.h.

Referenced by isReverse().


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