Open Lighting Architecture  0.9.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | List of all members
ola::rdm::VariableFieldSizeCalculator Class Reference

Detailed Description

Calculate the size of a variable field when unpacking a Message from a raw data stream.

Inheritance diagram for ola::rdm::VariableFieldSizeCalculator:
ola::messaging::FieldDescriptorVisitor

Public Types

enum  calculator_state {
  TOO_SMALL, TOO_LARGE, FIXED_SIZE, VARIABLE_STRING,
  VARIABLE_GROUP, MULTIPLE_VARIABLE_FIELDS, NESTED_VARIABLE_GROUPS, MISMATCHED_SIZE
}

Public Member Functions

bool Descend () const
calculator_state CalculateFieldSize (unsigned int data_size, const class ola::messaging::Descriptor *, unsigned int *variable_field_repeat_count)
void Visit (const ola::messaging::BoolFieldDescriptor *)
void Visit (const ola::messaging::IPV4FieldDescriptor *)
void Visit (const ola::messaging::MACFieldDescriptor *)
void Visit (const ola::messaging::UIDFieldDescriptor *)
void Visit (const ola::messaging::StringFieldDescriptor *)
void Visit (const ola::messaging::UInt8FieldDescriptor *)
void Visit (const ola::messaging::UInt16FieldDescriptor *)
void Visit (const ola::messaging::UInt32FieldDescriptor *)
void Visit (const ola::messaging::Int8FieldDescriptor *)
void Visit (const ola::messaging::Int16FieldDescriptor *)
void Visit (const ola::messaging::Int32FieldDescriptor *)
void Visit (const ola::messaging::FieldDescriptorGroup *)
void PostVisit (const ola::messaging::FieldDescriptorGroup *)
- Public Member Functions inherited from ola::messaging::FieldDescriptorVisitor
virtual void Visit (const IntegerFieldDescriptor< uint8_t > *)=0
virtual void Visit (const IntegerFieldDescriptor< uint16_t > *)=0
virtual void Visit (const IntegerFieldDescriptor< uint32_t > *)=0
virtual void Visit (const IntegerFieldDescriptor< int8_t > *)=0
virtual void Visit (const IntegerFieldDescriptor< int16_t > *)=0
virtual void Visit (const IntegerFieldDescriptor< int32_t > *)=0

Member Function Documentation

VariableFieldSizeCalculator::calculator_state ola::rdm::VariableFieldSizeCalculator::CalculateFieldSize ( unsigned int  data_size,
const class ola::messaging::Descriptor descriptor,
unsigned int *  variable_field_size 
)

Figure out the size of a variable-length field in a descriptor. The variable field may be a string or a repeated group of fields. Multiple-variable length fields are not supported as this doesn't allow us to determine the boundary of the individual fields within a message.

This method is not re-entrant.

Parameters
data_sizethe size in bytes of the data in this message
descriptorThe descriptor to use to build the Message
variable_field_sizea pointer to a int which is set to the length of the variable field within this mesage.
Returns
A enum which indicates if one (or more) variable length fields exist, and if only one exists, what type it is.

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