ifw-core  5.0.0-pre2
record.hpp
Go to the documentation of this file.
1 
6 #ifndef IFW_DIT_DID_RECORD_HPP_
7 #define IFW_DIT_DID_RECORD_HPP_
8 
9 #include <string>
10 
11 #include <core/dit/did/defines.hpp>
12 
13 namespace core::dit::did {
14 
18 public:
20  Reset();
21  };
22 
24 
26  void Reset() {
27  m_parameter = "";
28  m_flags = "";
29  m_width = 0;
30  m_precision = 0;
31  m_length = "";
32  m_type = "";
33  };
34 
35  void DecodeFormat(const std::string& did_format);
36 
37  std::string m_parameter;
38  std::string m_flags;
39  int8_t m_width{0};
40  int8_t m_precision{0};
41  std::string m_length;
42  std::string m_type;
43 };
44 
46 class Record {
47 public:
55  static std::string
56  PrintRecords(std::vector<dit::did::Record>& records, const RecField fields = RecField::ALL);
57 
58  Record();
59 
64  Record(const std::string& name,
65  const std::string& type,
66  const std::string& comment,
67  const std::string& description,
68  const std::string& format = "",
69  const std::string& unit = "");
70 
71  Record(const Record& source);
72 
73  ~Record();
74 
80  void Parse(const std::string& name,
81  const std::string& type,
82  const std::string& comment,
83  const std::string& description,
84  const std::string& format,
85  const std::string& unit);
86 
88  const std::string& GetName() const;
89 
91  const std::string& GetAltName() const;
92 
95 
97  const std::string& GetFormat() const;
98 
100  template <class TYPE>
101  std::string Format(TYPE& value) {
102  LOG4CPLUS_TRACE_METHOD(Logger(), __PRETTY_FUNCTION__);
103  if (m_field_format == "") {
104  return fmt::format("{}", value);
105  } else {
106  char buf[256];
107  snprintf(buf, sizeof(buf), ("%" + m_field_format), value);
108  return buf;
109  }
110  }
111 
113  const std::string& GetUnit() const;
114 
116  const std::string& GetComment() const;
117 
119  const std::string& GetDescription() const;
120 
122  const FormatSpecifier& GetFormatSpecifier() const;
123 
129  std::string ToString(const RecField fields = RecField::ALL, const bool compact = false) const;
130 
132  Record& operator=(const Record& source);
133 
134 protected:
135  std::string m_field_name;
136  std::string m_alt_field_name; // Name without optional indeces.
137  std::string m_org_name;
139  std::string m_field_comment;
140  std::string m_field_description;
141  std::string m_field_format;
143  std::string m_field_unit;
144 
145 private:
146  void _Copy(const Record& source);
147 };
148 
149 } // namespace core::dit::did
150 
151 #endif // !IFW_DIT_DID_RECORD_HPP_
class to handle the format specifier of a DID record. Format is: %[parameter][flags][width][....
Definition: record.hpp:17
int8_t m_precision
Definition: record.hpp:40
~FormatSpecifier()
Definition: record.hpp:23
std::string m_type
Definition: record.hpp:42
int8_t m_width
Definition: record.hpp:39
std::string m_flags
Definition: record.hpp:38
std::string m_length
Definition: record.hpp:41
FormatSpecifier()
Definition: record.hpp:19
void Reset()
Method to reset the object (reset the internal members).
Definition: record.hpp:26
void DecodeFormat(const std::string &did_format)
Definition: record.cpp:214
std::string m_parameter
Definition: record.hpp:37
Data Interface Dictionary keyword record class.
Definition: record.hpp:46
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:35
const std::string & GetAltName() const
Return name of the alternative keyword record (without the optional indeces).
Definition: record.cpp:87
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:205
std::string m_field_format
Definition: record.hpp:141
std::string m_field_name
Definition: record.hpp:135
std::string m_field_comment
Definition: record.hpp:139
const FormatSpecifier & GetFormatSpecifier() const
Return reference to the format specifier.
Definition: record.cpp:251
const std::string & GetName() const
Return name of the keyword record.
Definition: record.cpp:82
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:117
std::string m_field_description
Definition: record.hpp:140
core::dit::did::DataType GetDataType() const
Return data type defined for the keyword.
Definition: record.cpp:92
FormatSpecifier m_format_specifier
Definition: record.hpp:142
std::string Format(TYPE &value)
Printf the given value according to the format specifier.
Definition: record.hpp:101
std::string m_field_unit
Definition: record.hpp:143
const std::string & GetDescription() const
Get the description of the key.
Definition: record.cpp:112
DataType m_field_type
Definition: record.hpp:138
std::string m_alt_field_name
Definition: record.hpp:136
Record()
Definition: record.cpp:12
Record & operator=(const Record &source)
Copy operator.
Definition: record.cpp:186
const std::string & GetComment() const
Get the comment defined.
Definition: record.cpp:107
std::string m_org_name
Definition: record.hpp:137
~Record()
Definition: record.cpp:31
const std::string & GetUnit() const
Return the unit, if defined for the key.
Definition: record.cpp:102
const std::string & GetFormat() const
Return the output format defined for the keyword.
Definition: record.cpp:97
Definition: defines.cpp:11
DataType
Dictionary data types.
Definition: defines.hpp:60
log4cplus::Logger & Logger()
Definition: defines.cpp:13
@ ALL
Definition: did.hpp:25
RecField
Dictionary keyword record field types.
Definition: defines.hpp:82