F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
Buffer.hpp
Go to the documentation of this file.
1 // ======================================================================
2 // \title Buffer.hpp
3 // \author mstarch
4 // \brief hpp file for Fw::Buffer definition
5 //
6 // \copyright
7 // Copyright 2009-2020, by the California Institute of Technology.
8 // ALL RIGHTS RESERVED. United States Government Sponsorship
9 // acknowledged.
10 //
11 // ======================================================================
12 #ifndef BUFFER_HPP_
13 #define BUFFER_HPP_
14 
15 #include <Fw/FPrimeBasicTypes.hpp>
17 #if FW_SERIALIZABLE_TO_STRING
18  #include <Fw/Types/StringType.hpp>
19  #ifdef BUILD_UT
20  #include <iostream>
21  #include <Fw/Types/String.hpp>
22  #endif
23 #endif
24 
25 namespace Fw {
26 
42 class Buffer : public Fw::Serializable {
43 
44 public:
45 
47  using SizeType = U32;
48 
49  enum {
50  SERIALIZED_SIZE = sizeof(SizeType) + sizeof(U32) + sizeof(U8*),
51  NO_CONTEXT = 0xFFFFFFFF
52  };
53 
58  Buffer();
59 
62  Buffer(const Buffer& src);
63 
71  Buffer(U8* data, SizeType size, U32 context=NO_CONTEXT);
72 
75  Buffer& operator=(const Buffer& src);
76 
84  bool operator==(const Buffer& src) const;
85 
86  // ----------------------------------------------------------------------
87  // Serialization functions
88  // ----------------------------------------------------------------------
89 
96  DEPRECATED(SerializeBufferBase& getSerializeRepr(), "Switch to .getSerializer() and .getDeserializer()");
97 
107 
108 
115 
125 
135 
136 
137  // ----------------------------------------------------------------------
138  // Accessor functions
139  // ----------------------------------------------------------------------
140 
143  bool isValid() const;
144 
147  U8* getData() const;
148 
151  SizeType getSize() const;
152 
155  U32 getContext() const;
156 
159  void setData(U8* data);
160 
163  void setSize(SizeType size);
164 
167  void setContext(SizeType context);
168 
173  void set(U8* data, SizeType size, U32 context=NO_CONTEXT);
174 
175 #if FW_SERIALIZABLE_TO_STRING || BUILD_UT
176  void toString(Fw::StringBase& text) const;
178 #endif
179 
180 #ifdef BUILD_UT
181  friend std::ostream& operator<<(std::ostream& os, const Buffer& obj);
184 #endif
185 
186 PRIVATE:
187  Fw::ExternalSerializeBuffer m_serialize_repr; //<! Representation for serialization and deserialization functions
188  U8* m_bufferData; //<! data - A pointer to the data
189  SizeType m_size; //<! size - The data size in bytes
190  U32 m_context;
191 
192 };
193 } // end namespace Fw
194 #endif /* BUFFER_HPP_ */
195 
void setData(U8 *data)
Definition: Buffer.cpp:80
Fw::SerializeStatus serialize(Fw::SerializeBufferBase &serialBuffer) const
Definition: Buffer.cpp:128
void setContext(SizeType context)
Definition: Buffer.cpp:94
void setSize(SizeType size)
Definition: Buffer.cpp:87
U32 getContext() const
Definition: Buffer.cpp:76
U8 * getData() const
Definition: Buffer.cpp:68
bool operator==(const Buffer &src) const
Definition: Buffer.cpp:60
SerializeStatus
forward declaration for string
ExternalSerializeBufferWithMemberCopy getDeserializer()
Definition: Buffer.cpp:117
Value representing no context.
Definition: Buffer.hpp:51
bool isValid() const
Definition: Buffer.cpp:64
External serialize buffer with no copy semantics.
Size of Fw::Buffer when serialized.
Definition: Buffer.hpp:50
uint8_t U8
8-bit unsigned integer
Definition: BasicTypes.h:56
DEPRECATED(SerializeBufferBase &getSerializeRepr(), "Switch to .getSerializer() and .getDeserializer()")
forward declaration
Fw::SerializeStatus deserialize(Fw::SerializeBufferBase &buffer)
Definition: Buffer.cpp:151
SizeType getSize() const
Definition: Buffer.cpp:72
U32 SizeType
The size type for a buffer.
Definition: Buffer.hpp:47
ExternalSerializeBufferWithMemberCopy getSerializer()
Definition: Buffer.cpp:107
Buffer & operator=(const Buffer &src)
Definition: Buffer.cpp:52