F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
SequenceSerializableAc.cpp
Go to the documentation of this file.
1 // ======================================================================
2 // \title SequenceSerializableAc.cpp
3 // \author Generated by fpp-to-cpp
4 // \brief cpp file for Sequence struct
5 // ======================================================================
6 
7 #include "Fw/Types/Assert.hpp"
9 
10 namespace Svc {
11 
12  namespace Fpy {
13 
14  // ----------------------------------------------------------------------
15  // Constructors
16  // ----------------------------------------------------------------------
17 
20  Serializable(),
21  m_header(0, 0, 0, 0, 0, 0, 0),
22  m_footer(0)
23  {
24  for (FwSizeType i = 0; i < 16; i++) {
25  this->m_args[i] = 0;
26  }
27  for (FwSizeType i = 0; i < 1024; i++) {
29  }
30  }
31 
34  const Svc::Fpy::Header& header,
35  const Type_of_args& args,
36  const Type_of_statements& statements,
37  const Svc::Fpy::Footer& footer
38  ) :
39  Serializable(),
40  m_header(header),
41  m_footer(footer)
42  {
43  for (FwSizeType i = 0; i < 16; i++) {
44  this->m_args[i] = args[i];
45  }
46  for (FwSizeType i = 0; i < 1024; i++) {
47  this->m_statements[i] = statements[i];
48  }
49  }
50 
52  Sequence(const Sequence& obj) :
53  Serializable(),
54  m_header(obj.m_header),
55  m_footer(obj.m_footer)
56  {
57  for (FwSizeType i = 0; i < 16; i++) {
58  this->m_args[i] = obj.m_args[i];
59  }
60  for (FwSizeType i = 0; i < 1024; i++) {
61  this->m_statements[i] = obj.m_statements[i];
62  }
63  }
64 
67  const Svc::Fpy::Header& header,
68  U8 args,
69  const Svc::Fpy::Statement& statements,
70  const Svc::Fpy::Footer& footer
71  ) :
72  Serializable(),
73  m_header(header),
74  m_footer(footer)
75  {
76  for (FwSizeType i = 0; i < 16; i++) {
77  this->m_args[i] = args;
78  }
79  for (FwSizeType i = 0; i < 1024; i++) {
80  this->m_statements[i] = statements;
81  }
82  }
83 
84  // ----------------------------------------------------------------------
85  // Operators
86  // ----------------------------------------------------------------------
87 
89  operator=(const Sequence& obj)
90  {
91  if (this == &obj) {
92  return *this;
93  }
94 
95  set(obj.m_header, obj.m_args, obj.m_statements, obj.m_footer);
96  return *this;
97  }
98 
99  bool Sequence ::
100  operator==(const Sequence& obj) const
101  {
102  if (this == &obj) { return true; }
103 
104  // Compare non-array members
105  if (!(
106  (this->m_header == obj.m_header) &&
107  (this->m_footer == obj.m_footer)
108  )) {
109  return false;
110  }
111 
112  // Compare array members
113  for (FwSizeType i = 0; i < 16; i++) {
114  if (!(this->m_args[i] == obj.m_args[i])) {
115  return false;
116  }
117  }
118  for (FwSizeType i = 0; i < 1024; i++) {
119  if (!(this->m_statements[i] == obj.m_statements[i])) {
120  return false;
121  }
122  }
123 
124  return true;
125  }
126 
127  bool Sequence ::
128  operator!=(const Sequence& obj) const
129  {
130  return !(*this == obj);
131  }
132 
133 #ifdef BUILD_UT
134 
135  std::ostream& operator<<(std::ostream& os, const Sequence& obj) {
136  Fw::String s;
137  obj.toString(s);
138  os << s.toChar();
139  return os;
140  }
141 
142 #endif
143 
144  // ----------------------------------------------------------------------
145  // Member functions
146  // ----------------------------------------------------------------------
147 
150  Fw::SerialBufferBase& buffer,
151  Fw::Endianness mode
152  ) const
153  {
154  Fw::SerializeStatus status;
155 
156  status = buffer.serializeFrom(this->m_header, mode);
157  if (status != Fw::FW_SERIALIZE_OK) {
158  return status;
159  }
160  for (FwSizeType i = 0; i < 16; i++) {
161  status = buffer.serializeFrom(this->m_args[i], mode);
162  if (status != Fw::FW_SERIALIZE_OK) {
163  return status;
164  }
165  }
166  for (FwSizeType i = 0; i < 1024; i++) {
167  status = buffer.serializeFrom(this->m_statements[i], mode);
168  if (status != Fw::FW_SERIALIZE_OK) {
169  return status;
170  }
171  }
172  status = buffer.serializeFrom(this->m_footer, mode);
173  if (status != Fw::FW_SERIALIZE_OK) {
174  return status;
175  }
176 
177  return status;
178  }
179 
182  Fw::SerialBufferBase& buffer,
183  Fw::Endianness mode
184  )
185  {
186  Fw::SerializeStatus status;
187 
188  status = buffer.deserializeTo(this->m_header, mode);
189  if (status != Fw::FW_SERIALIZE_OK) {
190  return status;
191  }
192  for (FwSizeType i = 0; i < 16; i++) {
193  status = buffer.deserializeTo(this->m_args[i], mode);
194  if (status != Fw::FW_SERIALIZE_OK) {
195  return status;
196  }
197  }
198  for (FwSizeType i = 0; i < 1024; i++) {
199  status = buffer.deserializeTo(this->m_statements[i], mode);
200  if (status != Fw::FW_SERIALIZE_OK) {
201  return status;
202  }
203  }
204  status = buffer.deserializeTo(this->m_footer, mode);
205  if (status != Fw::FW_SERIALIZE_OK) {
206  return status;
207  }
208 
209  return status;
210  }
211 
214  {
215  FwSizeType size = 0;
216  size += this->m_header.serializedSize();
217  size += sizeof(U8) * 16;
218  for (U32 index = 0; index < 1024; index++) {
219  size += this->m_statements[index].serializedSize();
220  }
221  size += this->m_footer.serializedSize();
222  return size;
223  }
224 
225 #if FW_SERIALIZABLE_TO_STRING
226 
227  void Sequence ::
228  toString(Fw::StringBase& sb) const
229  {
230  Fw::String tmp;
231  sb = "( ";
232 
233  // Format header
234  sb += "header = ";
235  this->m_header.toString(tmp);
236  sb += tmp;
237  sb += ", ";
238 
239  // Format args
240  sb += "args = ";
241  sb += "[ ";
242  for (FwSizeType i = 0; i < 16; i++) {
243  tmp.format("%" PRIu8 "", this->m_args[i]);
244  if (i > 0) {
245  sb += ", ";
246  }
247  sb += tmp;
248  }
249  sb += " ]";
250  sb += ", ";
251 
252  // Format statements
253  sb += "statements = ";
254  sb += "[ ";
255  for (FwSizeType i = 0; i < 1024; i++) {
256  this->m_statements[i].toString(tmp);
257  if (i > 0) {
258  sb += ", ";
259  }
260  sb += tmp;
261  }
262  sb += " ]";
263  sb += ", ";
264 
265  // Format footer
266  sb += "footer = ";
267  this->m_footer.toString(tmp);
268  sb += tmp;
269  sb += " )";
270  }
271 
272 #endif
273 
274  // ----------------------------------------------------------------------
275  // Setter functions
276  // ----------------------------------------------------------------------
277 
278  void Sequence ::
280  const Svc::Fpy::Header& header,
281  const Type_of_args& args,
282  const Type_of_statements& statements,
283  const Svc::Fpy::Footer& footer
284  )
285  {
286  this->m_header = header;
287  this->m_footer = footer;
288 
289  for (FwSizeType i = 0; i < 16; i++) {
290  this->m_args[i] = args[i];
291  }
292  for (FwSizeType i = 0; i < 1024; i++) {
293  this->m_statements[i] = statements[i];
294  }
295  }
296 
297  void Sequence ::
299  {
300  this->m_header = header;
301  }
302 
303  void Sequence ::
305  {
306  for (FwSizeType i = 0; i < 16; i++) {
307  this->m_args[i] = args[i];
308  }
309  }
310 
311  void Sequence ::
313  {
314  for (FwSizeType i = 0; i < 1024; i++) {
315  this->m_statements[i] = statements[i];
316  }
317  }
318 
319  void Sequence ::
321  {
322  this->m_footer = footer;
323  }
324 
325  }
326 
327 }
void set_header(const Svc::Fpy::Header &header)
Set member header.
Serialization/Deserialization operation was successful.
FwSizeType serializedSize() const
Get the dynamic serialized size of the struct.
PlatformSizeType FwSizeType
void set(const Svc::Fpy::Header &header, const Type_of_args &args, const Type_of_statements &statements, const Svc::Fpy::Footer &footer)
Set all members.
const char * toChar() const
Convert to a C-style char*.
Definition: String.hpp:50
FwSizeType serializedSize() const
Get the dynamic serialized size of the struct.
bool operator==(const Sequence &obj) const
Equality operator.
Svc::Fpy::Statement[1024] Type_of_statements
The type of statements.
void set_statements(const Type_of_statements &statements)
Set member statements.
virtual SerializeStatus serializeFrom(U8 val, Endianness mode=Endianness::BIG)=0
Serialize an 8-bit unsigned integer value.
bool operator!=(const Sequence &obj) const
Inequality operator.
SerializeStatus
forward declaration for string
virtual SerializeStatus deserializeTo(U8 &val, Endianness mode=Endianness::BIG)=0
Deserialize an 8-bit unsigned integer value.
U8[16] Type_of_args
The type of args.
a statement is a directive opcode paired with an argument buffer
Sequence & operator=(const Sequence &obj)
Copy assignment operator.
Fw::SerializeStatus deserializeFrom(Fw::SerialBufferBase &buffer, Fw::Endianness mode=Fw::Endianness::BIG)
Deserialization.
Sequence()
Constructor (default value)
FwSizeType serializedSize() const
Get the dynamic serialized size of the struct.
void set_footer(const Svc::Fpy::Footer &footer)
Set member footer.
FormatStatus format(const CHAR *formatString,...)
write formatted string to buffer
Definition: StringBase.cpp:39
uint8_t U8
8-bit unsigned integer
Definition: BasicTypes.h:53
void set_args(const Type_of_args &args)
Set member args.
RateGroupDivider component implementation.
Svc::Fpy::Statement m_statements[1024]
Endianness
Fw::SerializeStatus serializeTo(Fw::SerialBufferBase &buffer, Fw::Endianness mode=Fw::Endianness::BIG) const
Serialization.