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(),
22  m_args(),
23  m_statements(),
24  m_footer()
25  {
26 
27  }
28 
31  const Svc::Fpy::Header& header,
32  const Type_of_args& args,
33  const Type_of_statements& statements,
34  const Svc::Fpy::Footer& footer
35  ) :
36  Serializable(),
37  m_header(header),
38  m_footer(footer)
39  {
40  for (FwSizeType i = 0; i < 16; i++) {
41  this->m_args[i] = args[i];
42  }
43  for (FwSizeType i = 0; i < 1024; i++) {
44  this->m_statements[i] = statements[i];
45  }
46  }
47 
49  Sequence(const Sequence& obj) :
50  Serializable(),
51  m_header(obj.m_header),
52  m_footer(obj.m_footer)
53  {
54  for (FwSizeType i = 0; i < 16; i++) {
55  this->m_args[i] = obj.m_args[i];
56  }
57  for (FwSizeType i = 0; i < 1024; i++) {
58  this->m_statements[i] = obj.m_statements[i];
59  }
60  }
61 
64  const Svc::Fpy::Header& header,
65  U8 args,
66  const Svc::Fpy::Statement& statements,
67  const Svc::Fpy::Footer& footer
68  ) :
69  Serializable(),
70  m_header(header),
71  m_footer(footer)
72  {
73  for (FwSizeType i = 0; i < 16; i++) {
74  this->m_args[i] = args;
75  }
76  for (FwSizeType i = 0; i < 1024; i++) {
77  this->m_statements[i] = statements;
78  }
79  }
80 
81  // ----------------------------------------------------------------------
82  // Operators
83  // ----------------------------------------------------------------------
84 
86  operator=(const Sequence& obj)
87  {
88  if (this == &obj) {
89  return *this;
90  }
91 
92  set(obj.m_header, obj.m_args, obj.m_statements, obj.m_footer);
93  return *this;
94  }
95 
96  bool Sequence ::
97  operator==(const Sequence& obj) const
98  {
99  if (this == &obj) { return true; }
100 
101  // Compare non-array members
102  if (!(
103  (this->m_header == obj.m_header) &&
104  (this->m_footer == obj.m_footer)
105  )) {
106  return false;
107  }
108 
109  // Compare array members
110  for (FwSizeType i = 0; i < 16; i++) {
111  if (!(this->m_args[i] == obj.m_args[i])) {
112  return false;
113  }
114  }
115  for (FwSizeType i = 0; i < 1024; i++) {
116  if (!(this->m_statements[i] == obj.m_statements[i])) {
117  return false;
118  }
119  }
120 
121  return true;
122  }
123 
124  bool Sequence ::
125  operator!=(const Sequence& obj) const
126  {
127  return !(*this == obj);
128  }
129 
130 #ifdef BUILD_UT
131 
132  std::ostream& operator<<(std::ostream& os, const Sequence& obj) {
133  Fw::String s;
134  obj.toString(s);
135  os << s.toChar();
136  return os;
137  }
138 
139 #endif
140 
141  // ----------------------------------------------------------------------
142  // Member functions
143  // ----------------------------------------------------------------------
144 
147  Fw::SerialBufferBase& buffer,
148  Fw::Endianness mode
149  ) const
150  {
151  Fw::SerializeStatus status;
152 
153  status = buffer.serializeFrom(this->m_header, mode);
154  if (status != Fw::FW_SERIALIZE_OK) {
155  return status;
156  }
157  for (FwSizeType i = 0; i < 16; i++) {
158  status = buffer.serializeFrom(this->m_args[i], mode);
159  if (status != Fw::FW_SERIALIZE_OK) {
160  return status;
161  }
162  }
163  for (FwSizeType i = 0; i < 1024; i++) {
164  status = buffer.serializeFrom(this->m_statements[i], mode);
165  if (status != Fw::FW_SERIALIZE_OK) {
166  return status;
167  }
168  }
169  status = buffer.serializeFrom(this->m_footer, mode);
170  if (status != Fw::FW_SERIALIZE_OK) {
171  return status;
172  }
173 
174  return status;
175  }
176 
179  Fw::SerialBufferBase& buffer,
180  Fw::Endianness mode
181  )
182  {
183  Fw::SerializeStatus status;
184 
185  status = buffer.deserializeTo(this->m_header, mode);
186  if (status != Fw::FW_SERIALIZE_OK) {
187  return status;
188  }
189  for (FwSizeType i = 0; i < 16; i++) {
190  status = buffer.deserializeTo(this->m_args[i], mode);
191  if (status != Fw::FW_SERIALIZE_OK) {
192  return status;
193  }
194  }
195  for (FwSizeType i = 0; i < 1024; i++) {
196  status = buffer.deserializeTo(this->m_statements[i], mode);
197  if (status != Fw::FW_SERIALIZE_OK) {
198  return status;
199  }
200  }
201  status = buffer.deserializeTo(this->m_footer, mode);
202  if (status != Fw::FW_SERIALIZE_OK) {
203  return status;
204  }
205 
206  return status;
207  }
208 
211  {
212  FwSizeType size = 0;
213  size += this->m_header.serializedSize();
214  size += sizeof(U8) * 16;
215  for (U32 index = 0; index < 1024; index++) {
216  size += this->m_statements[index].serializedSize();
217  }
218  size += this->m_footer.serializedSize();
219  return size;
220  }
221 
222 #if FW_SERIALIZABLE_TO_STRING
223 
224  void Sequence ::
225  toString(Fw::StringBase& sb) const
226  {
227  Fw::String tmp;
228  sb = "( ";
229 
230  // Format header
231  sb += "header = ";
232  this->m_header.toString(tmp);
233  sb += tmp;
234  sb += ", ";
235 
236  // Format args
237  sb += "args = ";
238  sb += "[ ";
239  for (FwSizeType i = 0; i < 16; i++) {
240  tmp.format("%" PRIu8 "", this->m_args[i]);
241  if (i > 0) {
242  sb += ", ";
243  }
244  sb += tmp;
245  }
246  sb += " ]";
247  sb += ", ";
248 
249  // Format statements
250  sb += "statements = ";
251  sb += "[ ";
252  for (FwSizeType i = 0; i < 1024; i++) {
253  this->m_statements[i].toString(tmp);
254  if (i > 0) {
255  sb += ", ";
256  }
257  sb += tmp;
258  }
259  sb += " ]";
260  sb += ", ";
261 
262  // Format footer
263  sb += "footer = ";
264  this->m_footer.toString(tmp);
265  sb += tmp;
266  sb += " )";
267  }
268 
269 #endif
270 
271  // ----------------------------------------------------------------------
272  // Setter functions
273  // ----------------------------------------------------------------------
274 
275  void Sequence ::
277  const Svc::Fpy::Header& header,
278  const Type_of_args& args,
279  const Type_of_statements& statements,
280  const Svc::Fpy::Footer& footer
281  )
282  {
283  this->m_header = header;
284  this->m_footer = footer;
285 
286  for (FwSizeType i = 0; i < 16; i++) {
287  this->m_args[i] = args[i];
288  }
289  for (FwSizeType i = 0; i < 1024; i++) {
290  this->m_statements[i] = statements[i];
291  }
292  }
293 
294  void Sequence ::
296  {
297  this->m_header = header;
298  }
299 
300  void Sequence ::
302  {
303  for (FwSizeType i = 0; i < 16; i++) {
304  this->m_args[i] = args[i];
305  }
306  }
307 
308  void Sequence ::
310  {
311  for (FwSizeType i = 0; i < 1024; i++) {
312  this->m_statements[i] = statements[i];
313  }
314  }
315 
316  void Sequence ::
318  {
319  this->m_footer = footer;
320  }
321 
322  }
323 
324 }
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.