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 < 2048; 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 < 2048; i++) {
58  this->m_statements[i] = obj.m_statements[i];
59  }
60  }
61 
64  const Svc::Fpy::Header& header,
65  const Svc::Fpy::ArgSpec& 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 < 2048; 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 < 2048; 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 < 2048; 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 < 2048; 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  for (U32 index = 0; index < 16; index++) {
215  size += this->m_args[index].serializedSize();
216  }
217  for (U32 index = 0; index < 2048; index++) {
218  size += this->m_statements[index].serializedSize();
219  }
220  size += this->m_footer.serializedSize();
221  return size;
222  }
223 
224 #if FW_SERIALIZABLE_TO_STRING
225 
226  void Sequence ::
227  toString(Fw::StringBase& sb) const
228  {
229  Fw::String tmp;
230  sb = "( ";
231 
232  // Format header
233  sb += "header = ";
234  this->m_header.toString(tmp);
235  sb += tmp;
236  sb += ", ";
237 
238  // Format args
239  sb += "args = ";
240  sb += "[ ";
241  for (FwSizeType i = 0; i < 16; i++) {
242  this->m_args[i].toString(tmp);
243  if (i > 0) {
244  sb += ", ";
245  }
246  sb += tmp;
247  }
248  sb += " ]";
249  sb += ", ";
250 
251  // Format statements
252  sb += "statements = ";
253  sb += "[ ";
254  for (FwSizeType i = 0; i < 2048; i++) {
255  this->m_statements[i].toString(tmp);
256  if (i > 0) {
257  sb += ", ";
258  }
259  sb += tmp;
260  }
261  sb += " ]";
262  sb += ", ";
263 
264  // Format footer
265  sb += "footer = ";
266  this->m_footer.toString(tmp);
267  sb += tmp;
268  sb += " )";
269  }
270 
271 #endif
272 
273  // ----------------------------------------------------------------------
274  // Setter functions
275  // ----------------------------------------------------------------------
276 
277  void Sequence ::
279  const Svc::Fpy::Header& header,
280  const Type_of_args& args,
281  const Type_of_statements& statements,
282  const Svc::Fpy::Footer& footer
283  )
284  {
285  this->m_header = header;
286  this->m_footer = footer;
287 
288  for (FwSizeType i = 0; i < 16; i++) {
289  this->m_args[i] = args[i];
290  }
291  for (FwSizeType i = 0; i < 2048; i++) {
292  this->m_statements[i] = statements[i];
293  }
294  }
295 
296  void Sequence ::
298  {
299  this->m_header = header;
300  }
301 
302  void Sequence ::
304  {
305  for (FwSizeType i = 0; i < 16; i++) {
306  this->m_args[i] = args[i];
307  }
308  }
309 
310  void Sequence ::
312  {
313  for (FwSizeType i = 0; i < 2048; i++) {
314  this->m_statements[i] = statements[i];
315  }
316  }
317 
318  void Sequence ::
320  {
321  this->m_footer = footer;
322  }
323 
324  }
325 
326 }
Svc::Fpy::Statement m_statements[2048]
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.
FwSizeType serializedSize() const
Get the dynamic serialized size of the struct.
bool operator==(const Sequence &obj) const
Equality operator.
FwSizeType serializedSize() const
Get the dynamic serialized size of the struct.
void set_statements(const Type_of_statements &statements)
Set member statements.
Svc::Fpy::ArgSpec m_args[16]
Svc::Fpy::ArgSpec[16] Type_of_args
The type of args.
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.
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)
Svc::Fpy::Statement[2048] Type_of_statements
The type of statements.
FwSizeType serializedSize() const
Get the dynamic serialized size of the struct.
const char * toChar() const
Convert to a C-style char*.
void set_footer(const Svc::Fpy::Footer &footer)
Set member footer.
void set_args(const Type_of_args &args)
Set member args.
RateGroupDivider component implementation.
Endianness
Fw::SerializeStatus serializeTo(Fw::SerialBufferBase &buffer, Fw::Endianness mode=Fw::Endianness::BIG) const
Serialization.