Open Lighting Architecture  Latest Git
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules 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:
Inheritance graph
[legend]
Collaboration diagram for ola::rdm::VariableFieldSizeCalculator:
Collaboration graph
[legend]

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 *)
 

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 message.
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: