ifw-core 7.0.0
 
Loading...
Searching...
No Matches
record.hpp
Go to the documentation of this file.
1
6
7#ifndef IFW_DIT_DID_RECORD_HPP_
8#define IFW_DIT_DID_RECORD_HPP_
9
10#include <string>
11
12#include <fmt/format.h>
13
15
16namespace ifw::core::dit::did {
17
21public:
23 Reset();
24 };
25
27
29 void Reset() {
30 m_parameter = "";
31 m_flags = "";
32 m_width = 0;
33 m_precision = 0;
34 m_length = "";
35 m_type = "";
36 };
37
38 void DecodeFormat(const std::string& did_format);
39
40 std::string m_parameter;
41 std::string m_flags;
42 int8_t m_width{0};
43 int8_t m_precision{0};
44 std::string m_length;
45 std::string m_type;
46};
47
49class Record {
50public:
56
58 static std::string
59 PrintRecords(std::vector<dit::did::Record>& records, const RecField fields = RecField::ALL);
60
61 Record();
62
67 Record(const std::string& name,
68 const std::string& type,
69 const std::string& comment,
70 const std::string& description,
71 const std::string& format = "",
72 const std::string& unit = "");
73
74 Record(const Record& source);
75
76 ~Record();
77
83 void Parse(const std::string& name,
84 const std::string& type,
85 const std::string& comment,
86 const std::string& description,
87 const std::string& format,
88 const std::string& unit);
89
91 const std::string& GetName() const;
92
94 const std::string& GetAltName() const;
95
98
100 const std::string& GetFormat() const;
101
103 template <class TYPE>
104 std::string Format(TYPE& value) {
105 LOG4CPLUS_TRACE_METHOD(Logger(), __PRETTY_FUNCTION__);
106 if (m_field_format == "") {
107 return fmt::format("{}", value);
108 } else {
109 char buf[256];
110 snprintf(buf, sizeof(buf), ("%" + m_field_format), value);
111 return buf;
112 }
113 }
114
116 const std::string& GetUnit() const;
117
119 const std::string& GetComment() const;
120
122 const std::string& GetDescription() const;
123
125 const FormatSpecifier& GetFormatSpecifier() const;
126
132 std::string ToString(const RecField fields = RecField::ALL, const bool compact = false) const;
133
135 Record& operator=(const Record& source);
136
137protected:
138 std::string m_field_name;
139 std::string m_alt_field_name; // Name without optional indeces.
140 std::string m_org_name;
142 std::string m_field_comment;
144 std::string m_field_format;
146 std::string m_field_unit;
147
148private:
149 void _Copy(const Record& source);
150};
151
152} // namespace ifw::core::dit::did
153
154#endif // !IFW_DIT_DID_RECORD_HPP_
class to handle the format specifier of a DID record. Format is: %[parameter][flags][width][....
Definition record.hpp:20
std::string m_length
Definition record.hpp:44
~FormatSpecifier()
Definition record.hpp:26
int8_t m_precision
Definition record.hpp:43
void Reset()
Method to reset the object (reset the internal members).
Definition record.hpp:29
std::string m_type
Definition record.hpp:45
FormatSpecifier()
Definition record.hpp:22
std::string m_parameter
Definition record.hpp:40
void DecodeFormat(const std::string &did_format)
Definition record.cpp:219
std::string m_flags
Definition record.hpp:41
int8_t m_width
Definition record.hpp:42
Data Interface Dictionary keyword record class.
Definition record.hpp:49
std::string ToString(const RecField fields=RecField::ALL, const bool compact=false) const
Get string copy of one or more header fields.
Definition record.cpp:121
Record & operator=(const Record &source)
Copy operator.
Definition record.cpp:191
ifw::core::dit::did::DataType GetDataType() const
Return data type defined for the keyword.
Definition record.cpp:96
std::string m_field_unit
Definition record.hpp:146
DataType m_field_type
Definition record.hpp:141
std::string m_field_description
Definition record.hpp:143
const std::string & GetName() const
Return name of the keyword record.
Definition record.cpp:86
~Record()
Definition record.cpp:34
std::string m_org_name
Definition record.hpp:140
std::string Format(TYPE &value)
Printf the given value according to the format specifier.
Definition record.hpp:104
Record()
Definition record.cpp:15
std::string m_field_format
Definition record.hpp:144
const std::string & GetFormat() const
Return the output format defined for the keyword.
Definition record.cpp:101
const std::string & GetComment() const
Get the comment defined.
Definition record.cpp:111
const FormatSpecifier & GetFormatSpecifier() const
Return reference to the format specifier.
Definition record.cpp:257
FormatSpecifier m_format_specifier
Definition record.hpp:145
std::string m_field_comment
Definition record.hpp:142
std::string m_field_name
Definition record.hpp:138
const std::string & GetDescription() const
Get the description of the key.
Definition record.cpp:116
static std::string PrintRecords(std::vector< dit::did::Record > &records, const RecField fields=RecField::ALL)
Decode the format in a DID record.
Definition record.cpp:210
std::string m_alt_field_name
Definition record.hpp:139
const std::string & GetAltName() const
Return name of the alternative keyword record (without the optional indeces).
Definition record.cpp:91
const std::string & GetUnit() const
Return the unit, if defined for the key.
Definition record.cpp:106
void Parse(const std::string &name, const std::string &type, const std::string &comment, const std::string &description, const std::string &format, const std::string &unit)
Parse Parse/extract the fields of a keyword record from a Yaml object.
Definition record.cpp:38
Definition defines.cpp:15
log4cplus::Logger & Logger()
Definition defines.cpp:17
RecField
Dictionary keyword record field types.
Definition defines.hpp:78
@ ALL
Definition defines.hpp:85
@ TYPE
Definition defines.hpp:83
DataType
Dictionary data types.
Definition defines.hpp:56