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 
151  bool load(industrial::shared_types::shared_bool value);
152 
163  bool load(industrial::shared_types::shared_real value);
164 
174  bool load(industrial::shared_types::shared_int value);
175 
185 
194  bool load(ByteArray &value);
195 
206  bool load(void* value, const industrial::shared_types::shared_int byte_size);
207 
215  bool unload(industrial::shared_types::shared_bool &value);
216 
225  bool unload(industrial::shared_types::shared_real &value);
226 
235  bool unload(industrial::shared_types::shared_int &value);
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 
276  bool unloadFront(industrial::shared_types::shared_real &value);
277 
286  bool unloadFront(industrial::shared_types::shared_int &value);
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
std::deque< char > buffer_
internal data buffer
Definition: byte_array.h:341
std::vector< char > getRawDataPtr_buffer_
temporary continuous buffer for getRawDataPtr() use
Definition: byte_array.h:346
void init(const M_string &remappings)
Interface for loading and unloading a class to/from a ByteArray.
The byte array wraps a dynamic array of bytes (i.e. char).
Definition: byte_array.h:80


simple_message
Author(s): Shaun Edwards
autogenerated on Mon Jul 19 2021 12:45:18