byte_array.h
Go to the documentation of this file.
1 /*
2  * Software License Agreement (BSD License)
3  *
4  * Copyright (c) 2015, Southwest Research Institute
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions are met:
9  *
10  * * Redistributions of source code must retain the above copyright
11  * notice, this list of conditions and the following disclaimer.
12  * * Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  * * Neither the name of the Southwest Research Institute, nor the names
16  * of its contributors may be used to endorse or promote products derived
17  * from this software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29  * POSSIBILITY OF SUCH DAMAGE.
30  */
31 
32 #ifndef BYTE_ARRAY_H
33 #define BYTE_ARRAY_H
34 
35 #ifndef FLATHEADERS
37 #else
38 #include "shared_types.h"
39 #endif
40 
41 #include <deque>
42 #include <vector>
43 #include "string.h"
44 
45 namespace industrial
46 {
47 namespace simple_serialize
48 {
49 // Class declaration required for function prototypes below
50 class SimpleSerialize;
51 }
52 }
53 
54 namespace industrial
55 {
56 namespace byte_array
57 {
58 
80 class ByteArray
81 {
82 public:
83 
84  // Provides SimpleSerialize access to byte array internals
85  friend class SimpleSerialize;
86 
93  ByteArray(void);
94 
99  ~ByteArray(void);
100 
107  void init();
108 
120  bool init(const char* buffer, const industrial::shared_types::shared_int byte_size);
121 
131  void copyFrom(ByteArray & buffer);
132 
141  void copyTo(std::vector<char> & out);
142 
152 
164 
175 
185 
194  bool load(ByteArray &value);
195 
206  bool load(void* value, const industrial::shared_types::shared_int byte_size);
207 
216 
226 
236 
245 
255  bool unload(ByteArray &value, const industrial::shared_types::shared_int byte_size);
256 
266  bool unload(void* value, const industrial::shared_types::shared_int byteSize);
267 
277 
287 
297  bool unloadFront(void* value, const industrial::shared_types::shared_int byteSize);
298 
308  #ifndef _MSC_VER
309  __attribute__((deprecated("This ptr will be invalid once buffer is changed. Please use: copyTo(vector<char>) instead.")))
310  #endif
311  char* getRawDataPtr();
312 
318  unsigned int getBufferSize();
319 
325  unsigned int getMaxBufferSize();
326 
334  static bool isByteSwapEnabled();
335 
336 private:
337 
341  std::deque<char> buffer_;
342 
346  std::vector<char> getRawDataPtr_buffer_;
347 
348 #ifdef BYTE_SWAPPING
349 
356  void swap(void *value, industrial::shared_types::shared_int byteSize);
357 #endif
358 
359 };
360 
361 } // namespace industrial
362 } // namespace byte_array
363 
364 #endif //BYTE_ARRAY_H
industrial::shared_types::shared_bool
bool shared_bool
Definition: shared_types.h:71
industrial::byte_array::ByteArray::ByteArray
ByteArray(void)
Default constructor.
Definition: byte_array.cpp:50
industrial::byte_array::ByteArray::copyTo
void copyTo(std::vector< char > &out)
Copy to std::vector, for raw-ptr access.
Definition: byte_array.cpp:98
industrial
Definition: byte_array.h:45
industrial::byte_array::ByteArray::unload
bool unload(industrial::shared_types::shared_bool &value)
unloads a boolean value from the byte array
Definition: byte_array.cpp:233
industrial::byte_array::ByteArray::getMaxBufferSize
unsigned int getMaxBufferSize()
gets current buffer size
Definition: byte_array.cpp:392
industrial::byte_array::ByteArray::isByteSwapEnabled
static bool isByteSwapEnabled()
returns true if byte swapping is enabled (this is a global option set by compiler flag)....
Definition: byte_array.cpp:398
industrial::byte_array::ByteArray::~ByteArray
~ByteArray(void)
Destructor.
Definition: byte_array.cpp:58
industrial::shared_types::shared_real
float shared_real
Definition: shared_types.h:66
industrial::byte_array::ByteArray
The byte array wraps a dynamic array of bytes (i.e. char).
Definition: byte_array.h:80
industrial::byte_array::ByteArray::init
void init()
Initializes or Reinitializes an empty buffer.
Definition: byte_array.cpp:62
shared_types.h
industrial::byte_array::ByteArray::copyFrom
void copyFrom(ByteArray &buffer)
Deep-Copy.
Definition: byte_array.cpp:86
industrial::byte_array::ByteArray::getRawDataPtr_buffer_
std::vector< char > getRawDataPtr_buffer_
temporary continuous buffer for getRawDataPtr() use
Definition: byte_array.h:346
industrial::simple_serialize::SimpleSerialize
Interface for loading and unloading a class to/from a ByteArray.
Definition: simple_serialize.h:52
industrial::shared_types::shared_int
int shared_int
Definition: shared_types.h:62
industrial::byte_array::ByteArray::load
bool load(industrial::shared_types::shared_bool value)
loads a boolean into the byte array
Definition: byte_array.cpp:142
industrial::byte_array::ByteArray::__attribute__
__attribute__((deprecated("This ptr will be invalid once buffer is changed. Please use: copyTo(vector<char>) instead."))) char *getRawDataPtr()
returns a char* pointer to the raw data. WARNING: This method is meant for read-only operations
industrial::byte_array::ByteArray::unloadFront
bool unloadFront(industrial::shared_types::shared_real &value)
unloads a double value from the beginning of the byte array. If byte swapping is enabled,...
Definition: byte_array.cpp:334
industrial::byte_array::ByteArray::getBufferSize
unsigned int getBufferSize()
gets current buffer size
Definition: byte_array.cpp:387
industrial::byte_array::ByteArray::buffer_
std::deque< char > buffer_
internal data buffer
Definition: byte_array.h:341


simple_message
Author(s): Shaun Edwards
autogenerated on Wed Mar 2 2022 00:24:53