GCC Code Coverage Report


Directory: ./
File: src/FieldParser.h
Date: 2026-01-15 15:40:41
Exec Total Coverage
Lines: 1 1 100.0%
Functions: 0 0 -%
Branches: 4 4 100.0%

Line Branch Exec Source
1 /***************************************
2 Auteur : Pierre Aubert
3 Mail : pierre.aubert@lapp.in2p3.fr
4 Licence : CeCILL-C
5 ****************************************/
6
7 #ifndef __FIELDPARSER_H__
8 #define __FIELDPARSER_H__
9
10 #include <map>
11 #include "AbtractField.h"
12 #include "phoenix_field.h"
13
14 class FieldParser;
15 typedef std::vector<FieldParser*> VecFieldParser;
16 typedef std::map<size_t, FieldParser *> MapFieldParser;
17
18 ///@brief Parser of Field
19 class FieldParser{
20 public:
21 FieldParser();
22 virtual ~FieldParser();
23
24 FieldParser * addSubMessage(size_t fieldId, const PString & fieldName = "");
25 FieldParser * addSubMessage(const FieldConfig & field);
26 FieldParser * addSubMessage(const FieldConfig & field, const PString & childName);
27 FieldParser * addSubMessage(FieldConfig & childConfig, const FieldConfig & field, const PString & childName);
28
29 template<typename T>
30 void addParseFieldValue(T* varPtr, size_t fieldId, const PString & fieldName = "");
31 template<typename T>
32 void addParseFieldArray(T** tabPtr, size_t * nbElement, size_t fieldId, const PString & fieldName = "");
33
34 template<typename T>
35 bool addParseFieldValue(T* varPtr, const FieldConfig & field);
36 template<typename T>
37 bool addParseFieldValue(T* varPtr, const FieldConfig & field, const PString & childName);
38 template<typename T>
39 bool addParseFieldArray(T** tabPtr, size_t * nbElement, const FieldConfig & field);
40 template<typename T>
41 bool addParseFieldArray(T** tabPtr, size_t * nbElement, const FieldConfig & field, const PString & childName);
42
43 void addParseFieldEnum(size_t* varPtr, size_t fieldId, const PString & fieldName = "");
44 bool addParseFieldEnum(size_t* varPtr, const FieldConfig & field);
45 bool addParseFieldEnum(size_t* varPtr, const FieldConfig & field, const PString & childName);
46
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);
49
50 void resetOffset();
51 void clear();
52
4/4
✓ Branch 0 (54→55) taken 4 times.
✓ Branch 2 (286→287) taken 4 times.
✓ Branch 4 (289→290) taken 3 times.
✓ Branch 6 (292→293) taken 3 times.
22 void print(std::ostream & out = std::cout, const PString & indentation = "") const;
53 private:
54 void initialisationFieldParser();
55 FieldParser * createSubFieldParser(size_t fieldId, const PString & fieldName);
56 void setBaseField(size_t fieldId, const PString & fieldName);
57 template<typename T>
58 bool checkInputType(const FieldConfig & field);
59 bool checkInputType(FieldType::FieldType type, const FieldConfig & field);
60
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);
63 bool loadComputeFieldOffsetArray(char* & iter, const char* endMessage, const char * message, std::ostream & out);
64 void createMapFieldParser(MapFieldParser & mapFieldParser);
65 bool loadFromOffset(char* & iter);
66 bool loadFieldFromOffset(char* & iter);
67
68 ///Field to be parsed
69 AbtractField p_field;
70 ///Children used to parse other field and sub messages
71 VecFieldParser p_vecChildren;
72 };
73
74
75
76 #include "FieldParser_impl.h"
77
78 #endif
79
80