7#ifndef __FIELDPARSER_H__
8#define __FIELDPARSER_H__
32 void addParseFieldArray(T** tabPtr,
size_t * nbElement,
size_t fieldId,
const PString & fieldName =
"");
43 void addParseFieldEnum(
size_t* varPtr,
size_t fieldId,
const PString & fieldName =
"");
47 bool load(
const std::vector<char> & message, std::ostream & out = std::cerr);
48 bool load(
const char * message,
size_t nbByte, std::ostream & out = std::cerr);
52 void print(std::ostream & out = std::cout,
const PString & indentation =
"")
const;
56 void setBaseField(
size_t fieldId,
const PString & fieldName);
61 bool loadComputeOffset(
char* & iter,
const char* endMessage,
const char * message, std::ostream & out);
62 bool loadComputeFieldOffset(
char* & iter,
const char* endMessage,
const char * message,
size_t fieldId,
size_t fieldType, std::ostream & out);
std::vector< FieldParser * > VecFieldParser
std::map< size_t, FieldParser * > MapFieldParser
Abtract field to be read from a protocol buffer message.
Configuration to be used to create a field from a yml file.
void resetOffset()
Reset the offset of the FieldParser.
void createMapFieldParser(MapFieldParser &mapFieldParser)
Create the map of Field parser.
AbtractField p_field
Field to be parsed.
void print(std::ostream &out=std::cout, const PString &indentation="") const
Print the FieldParser.
void setBaseField(size_t fieldId, const PString &fieldName)
Set the basis of a Field to be parsed.
bool checkInputType(const FieldConfig &field)
Check the template type with the FieldConfig.
virtual ~FieldParser()
Destructor of FieldParser.
bool load(const std::vector< char > &message, std::ostream &out=std::cerr)
Load the Fields of the FieldParser (without offset on the first time and with offsets after)
bool loadComputeFieldOffset(char *&iter, const char *endMessage, const char *message, size_t fieldId, size_t fieldType, std::ostream &out)
Compute FIeld offset.
void clear()
Clear all the children of the FieldParser.
FieldParser * addSubMessage(size_t fieldId, const PString &fieldName="")
Add a sub message into the FieldParser.
bool loadFromOffset(char *&iter)
Load the Fields directly from the offset.
void addParseFieldEnum(size_t *varPtr, size_t fieldId, const PString &fieldName="")
Add a sub FieldParser for a enum type.
void addParseFieldArray(T **tabPtr, size_t *nbElement, size_t fieldId, const PString &fieldName="")
Add a sub FieldParser for a Array type.
bool loadComputeFieldOffsetArray(char *&iter, const char *endMessage, const char *message, std::ostream &out)
Compute FIeld offset of an array.
void initialisationFieldParser()
Initialisation function of the class FieldParser.
bool loadComputeOffset(char *&iter, const char *endMessage, const char *message, std::ostream &out)
Load the Fields and compute the offset.
void addParseFieldValue(T *varPtr, size_t fieldId, const PString &fieldName="")
Add a sub FieldParser for a scalar type.
FieldParser()
Default constructor of FieldParser.
bool loadFieldFromOffset(char *&iter)
Load the Field directly from the offset.
VecFieldParser p_vecChildren
Children used to parse other field and sub messages.
FieldParser * createSubFieldParser(size_t fieldId, const PString &fieldName)
Add a sub FieldParser.
FieldType
Type of the Field.