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  {
151  Fw::SerializeStatus status;
152 
153  status = buffer.serialize(this->m_header);
154  if (status != Fw::FW_SERIALIZE_OK) {
155  return status;
156  }
157  for (FwSizeType i = 0; i < 16; i++) {
158  status = buffer.serialize(this->m_args[i]);
159  if (status != Fw::FW_SERIALIZE_OK) {
160  return status;
161  }
162  }
163  for (FwSizeType i = 0; i < 1024; i++) {
164  status = buffer.serialize(this->m_statements[i]);
165  if (status != Fw::FW_SERIALIZE_OK) {
166  return status;
167  }
168  }
169  status = buffer.serialize(this->m_footer);
170  if (status != Fw::FW_SERIALIZE_OK) {
171  return status;
172  }
173 
174  return status;
175  }
176 
179  {
180  Fw::SerializeStatus status;
181 
182  status = buffer.deserialize(this->m_header);
183  if (status != Fw::FW_SERIALIZE_OK) {
184  return status;
185  }
186  for (FwSizeType i = 0; i < 16; i++) {
187  status = buffer.deserialize(this->m_args[i]);
188  if (status != Fw::FW_SERIALIZE_OK) {
189  return status;
190  }
191  }
192  for (FwSizeType i = 0; i < 1024; i++) {
193  status = buffer.deserialize(this->m_statements[i]);
194  if (status != Fw::FW_SERIALIZE_OK) {
195  return status;
196  }
197  }
198  status = buffer.deserialize(this->m_footer);
199  if (status != Fw::FW_SERIALIZE_OK) {
200  return status;
201  }
202 
203  return status;
204  }
205 
206 #if FW_SERIALIZABLE_TO_STRING
207 
208  void Sequence ::
209  toString(Fw::StringBase& sb) const
210  {
211  static const char* formatString =
212  "( "
213  "header = %s, "
214  "args = [ %s ], "
215  "statements = [ %s ], "
216  "footer = %s"
217  " )";
218 
219  // Declare strings to hold any serializable toString() arguments
220  Fw::String headerStr;
221  Fw::String argsStr;
222  Fw::String statementsStr;
223  Fw::String footerStr;
224 
225  // Call toString for arrays and serializable types
226  this->m_header.toString(headerStr);
227  for (FwSizeType i = 0; i < 16; i++) {
228  Fw::String argsTmp;
229  argsTmp.format("%" PRIu8 "", this->m_args[i]);
230 
231  FwSizeType size = argsTmp.length() + (i > 0 ? 2 : 0);
232  if ((size + argsStr.length()) <= argsStr.maxLength()) {
233  if (i > 0) {
234  argsStr += ", ";
235  }
236  argsStr += argsTmp;
237  } else {
238  break;
239  }
240  }
241  for (FwSizeType i = 0; i < 1024; i++) {
242  Fw::String statementsTmp;
243  this->m_statements[i].toString(statementsTmp);
244 
245  FwSizeType size = statementsTmp.length() + (i > 0 ? 2 : 0);
246  if ((size + statementsStr.length()) <= statementsStr.maxLength()) {
247  if (i > 0) {
248  statementsStr += ", ";
249  }
250  statementsStr += statementsTmp;
251  } else {
252  break;
253  }
254  }
255  this->m_footer.toString(footerStr);
256 
257  sb.format(
258  formatString,
259  headerStr.toChar(),
260  argsStr.toChar(),
261  statementsStr.toChar(),
262  footerStr.toChar()
263  );
264  }
265 
266 #endif
267 
268  // ----------------------------------------------------------------------
269  // Setter functions
270  // ----------------------------------------------------------------------
271 
272  void Sequence ::
274  const Svc::Fpy::Header& header,
275  const Type_of_args& args,
276  const Type_of_statements& statements,
277  const Svc::Fpy::Footer& footer
278  )
279  {
280  this->m_header = header;
281  this->m_footer = footer;
282 
283  for (FwSizeType i = 0; i < 16; i++) {
284  this->m_args[i] = args[i];
285  }
286  for (FwSizeType i = 0; i < 1024; i++) {
287  this->m_statements[i] = statements[i];
288  }
289  }
290 
291  void Sequence ::
293  {
294  this->m_header = header;
295  }
296 
297  void Sequence ::
298  setargs(const Type_of_args& args)
299  {
300  for (FwSizeType i = 0; i < 16; i++) {
301  this->m_args[i] = args[i];
302  }
303  }
304 
305  void Sequence ::
307  {
308  for (FwSizeType i = 0; i < 1024; i++) {
309  this->m_statements[i] = statements[i];
310  }
311  }
312 
313  void Sequence ::
315  {
316  this->m_footer = footer;
317  }
318 
319  }
320 
321 }
Serialization/Deserialization operation was successful.
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.
SerializeStatus serialize(U8 val)
serialize 8-bit unsigned int
void setargs(const Type_of_args &args)
Set member args.
const char * toChar() const
Definition: String.hpp:50
bool operator==(const Sequence &obj) const
Equality operator.
void setstatements(const Type_of_statements &statements)
Set member statements.
void setfooter(const Svc::Fpy::Footer &footer)
Set member footer.
Svc::Fpy::Statement[1024] Type_of_statements
The type of statements.
bool operator!=(const Sequence &obj) const
Inequality operator.
SerializeStatus
forward declaration for string
SizeType maxLength() const
Get the maximum length of a string that the buffer can hold (which is capacity - 1) ...
Definition: StringBase.cpp:128
U8[16] Type_of_args
The type of args.
Sequence & operator=(const Sequence &obj)
Copy assignment operator.
Sequence()
Constructor (default value)
Fw::SerializeStatus deserialize(Fw::SerializeBufferBase &buffer)
Deserialization.
SizeType length() const
Get length of string.
Definition: StringBase.cpp:121
FormatStatus format(const CHAR *formatString,...)
write formatted string to buffer
Definition: StringBase.cpp:55
uint8_t U8
8-bit unsigned integer
Definition: BasicTypes.h:56
void setheader(const Svc::Fpy::Header &header)
Set member header.
SerializeStatus deserialize(U8 &val)
deserialize 8-bit unsigned int
RateGroupDivider component implementation.
Svc::Fpy::Statement m_statements[1024]
Fw::SerializeStatus serialize(Fw::SerializeBufferBase &buffer) const
Serialization.