#include <bit/fieldvector.h>
This class extends FieldBase by including a name and a description.
Public Types | |
typedef BitPointer< FieldVector > | pointer |
Public Member Functions | |
FieldVector (std::string name="", size_t vector_size=0, size_t element_length=0, size_t element_length_units=BITS, int offset=0, size_t offset_units=BITS, std::string descr="") | |
Contains a vector of fields. | |
virtual | ~FieldVector () |
virtual const std::string & | xml () |
size_t | length () const |
size_t | length (size_t units) const |
size_t | element_length () const |
size_t | vector_size () const |
void | set_vector_size (size_t vector_size) |
virtual iterator | begin () |
virtual iterator | end () |
virtual size_t | subfields () |
Returns the size of this vector. | |
virtual FieldBase::pointer | subfield (const std::string &subfield_name) |
Subfield name must the unsigned integer index of the subfield element to return. | |
virtual FieldBase::pointer | subfield (size_t i) |
The element index of the subfield to return. | |
virtual FieldBase::pointer | clone () |
virtual Container | container_type () |
Static Public Member Functions | |
static FieldVector::pointer | create (std::string name="", size_t vector_size=0, size_t element_length=0, size_t element_length_units=BITS, int offset=0, size_t offset_units=BITS, std::string descr="") |
Protected Types | |
typedef std::vector < Element::pointer > | Elements |
Protected Member Functions | |
virtual FieldBase::pointer | previous_field (FieldBase::pointer current_field) throw (exception::invalid_container_op) |
virtual FieldBase::pointer | next_field (FieldBase::pointer current_field) throw (exception::invalid_container_op) |
Protected Attributes | |
size_t | m_size |
Elements | m_elements |
Classes | |
class | Element |
Element is an base element in a field vector. More... |
typedef BitPointer<FieldVector> bit::FieldVector::pointer |
Reimplemented from bit::Field.
typedef std::vector<Element::pointer> bit::FieldVector::Elements [protected] |
bit::FieldVector::FieldVector | ( | std::string | name = "" , |
|
size_t | vector_size = 0 , |
|||
size_t | element_length = 0 , |
|||
size_t | element_length_units = BITS , |
|||
int | offset = 0 , |
|||
size_t | offset_units = BITS , |
|||
std::string | descr = "" | |||
) |
Contains a vector of fields.
This class is provided to allow for efficient implementation of large arrays without allocating a field instance for each element of the vector.
name | The base name of this vector | |
vector_size | The number of elements of this vector | |
element_length | The length of each element in units | |
offset | The offset of the vector only, not of each element. After the initial offset the vector is considered to be packed. |
References set_vector_size().
Referenced by create().
bit::FieldVector::~FieldVector | ( | ) | [virtual] |
FieldVector::pointer bit::FieldVector::create | ( | std::string | name = "" , |
|
size_t | vector_size = 0 , |
|||
size_t | element_length = 0 , |
|||
size_t | element_length_units = BITS , |
|||
int | offset = 0 , |
|||
size_t | offset_units = BITS , |
|||
std::string | descr = "" | |||
) | [static] |
const std::string & bit::FieldVector::xml | ( | ) | [virtual] |
Reimplemented from bit::Field.
References bit::Field::m_length, bit::Field::m_length_units, bit::Field::m_name, bit::Field::m_offset, bit::Field::m_offset_units, m_size, bit::Field::m_type, bit::FieldBase::m_xml, bit::FieldType::type(), bit::TYPE_NONE, and bit::FieldType::xml().
size_t bit::FieldVector::length | ( | ) | const [virtual] |
size_t bit::FieldVector::length | ( | size_t | units | ) | const [virtual] |
size_t bit::FieldVector::element_length | ( | ) | const |
References bit::Field::m_length.
Referenced by bit::FieldVector::Element::length(), and bit::FieldVector::Element::offset().
size_t bit::FieldVector::vector_size | ( | ) | const |
References m_size.
void bit::FieldVector::set_vector_size | ( | size_t | vector_size | ) |
References bit::FieldVector::Element::create(), m_elements, and m_size.
Referenced by FieldVector().
FieldBase::iterator bit::FieldVector::begin | ( | ) | [virtual] |
FieldBase::iterator bit::FieldVector::end | ( | ) | [virtual] |
size_t bit::FieldVector::subfields | ( | ) | [virtual] |
FieldBase::pointer bit::FieldVector::subfield | ( | const std::string & | subfield_name | ) | [virtual] |
Subfield name must the unsigned integer index of the subfield element to return.
The index may be included in [], as in '[0]' or '[11]' or may simply be the numeric representation as in '0' or '11'.
Reimplemented from bit::FieldBase.
FieldBase::pointer bit::FieldVector::subfield | ( | size_t | i | ) | [virtual] |
The element index of the subfield to return.
Reimplemented from bit::FieldBase.
References m_elements, and m_size.
FieldBase::pointer bit::FieldVector::clone | ( | ) | [virtual] |
Reimplemented from bit::Field.
References create(), bit::Field::m_description, bit::Field::m_length, bit::Field::m_length_units, bit::Field::m_name, bit::Field::m_offset, bit::Field::m_offset_units, m_size, and bit::Field::m_type.
virtual Container bit::FieldVector::container_type | ( | ) | [inline, virtual] |
FieldBase::pointer bit::FieldVector::previous_field | ( | FieldBase::pointer | current_field | ) | throw (exception::invalid_container_op) [protected, virtual] |
FieldBase::pointer bit::FieldVector::next_field | ( | FieldBase::pointer | current_field | ) | throw (exception::invalid_container_op) [protected, virtual] |
size_t bit::FieldVector::m_size [protected] |
Referenced by begin(), clone(), length(), next_field(), set_vector_size(), subfield(), subfields(), vector_size(), and xml().
Elements bit::FieldVector::m_elements [protected] |
Referenced by begin(), next_field(), previous_field(), set_vector_size(), and subfield().