VR-Forces 5.0.1 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
bufferSerialize.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2006 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
12 
13 #pragma once
14 
16 #include <vlutil/vlString.h>
17 #include <vlutil/vlMachineTypes.h>
18 #include <matrix/vlVector.h>
19 #include <matrix/vlTaitBryan.h>
20 #include <vlutil/vlFilename.h>
22 #include <vector>
23 #include <set>
24 #include <list>
25 #include <string>
26 #include "readerWriter/rwBoolean.h"
27 #include "readerWriter/rwInt.h"
29 #include "readerWriter/rwReal.h"
32 #include "readerWriter/rwReal.h"
35 
36 #include <vlpi/entityIdentifier.h>
37 #include <vlpi/appearance.h>
38 #include <vlutil/vlInetAddr.h>
39 
40 #include <boost/unordered_map.hpp>
41 #include <boost/unordered_set.hpp>
42 
48 namespace DtBufferSerialize
49 {
57 
58  DT_DLL_readerWriter char *encode(const DtFilename& val, char *buffer);
59  DT_DLL_readerWriter char *encode(const DtString& val, char *buffer);
60  DT_DLL_readerWriter char *encode(const std::string& val, char *buffer);
61  DT_DLL_readerWriter char *encode(const char *val, unsigned nSize, char *buffer);
62  DT_DLL_readerWriter char *encode(const int& val, char *buffer);
63  DT_DLL_readerWriter char *encode(const DtInt16& val, char *buffer);
64 #ifndef DT_HAVE_64BIT_LONGS
65  DT_DLL_readerWriter char *encode(const DtInt32& val, char *buffer);
66 #endif
67  DT_DLL_readerWriter char *encode(const DtU8& val, char *buffer);
68  DT_DLL_readerWriter char *encode(const DtU16& val, char *buffer);
69  DT_DLL_readerWriter char *encode(const DtU32& val, char *buffer);
70  DT_DLL_readerWriter char *encode(const DtU64& val, char *buffer);
71  DT_DLL_readerWriter char *encode(const DtFloat32& val, char *buffer);
72  DT_DLL_readerWriter char *encode(const DtFloat64& val, char *buffer);
73  DT_DLL_readerWriter char *encode(const DtVector& val, char *buffer);
74  DT_DLL_readerWriter char *encode(const DtTaitBryan& val, char *buffer);
75  DT_DLL_readerWriter char *encode(const bool& val, char *buffer);
76  DT_DLL_readerWriter char *encode(const DtObjectType& val, char *buffer);
77  DT_DLL_readerWriter char *encode(const std::vector<char>& val, char *buffer);
78  DT_DLL_readerWriter char *encode(const DtRwBoolean& val, char *buffer);
79  DT_DLL_readerWriter char *encode(const DtEntityType& val, char *buffer);
80  DT_DLL_readerWriter char *encode(const DtEntityIdentifier& val, char *buffer);
81  DT_DLL_readerWriter char *encode(const DtSimulationAddress& val, char *buffer);
82  DT_DLL_readerWriter char *encode(const DtAppearance& val, char *buffer);
83  DT_DLL_readerWriter char *encode(const DtForceType& val, char *buffer);
84  DT_DLL_readerWriter char *encode(const DtInetAddr& val, char *buffer);
85  DT_DLL_readerWriter char *encode(const DtRwInt& val, char* buffer);
86  DT_DLL_readerWriter char *encode(const DtRwVariableBindings& val, char* buffer);
87  DT_DLL_readerWriter char *encode(const DtRwStringAttribute& v, char* buffer);
88  DT_DLL_readerWriter char *encode(const DtRwStringAttributeList& val, char* buffer);
89 
90  template <typename T>
91  char* encode(const std::vector<T>& val, char* buffer);
92  template <typename T>
93  char* encode(const std::set<T>& val, char* buffer);
94  template <typename T>
95  char* encode(const std::list<T>& val, char* buffer);
96  template <typename T1, typename T2>
97  char* encode(const std::map<T1, T2>& val, char* buffer);
98  template <typename T1, typename T2>
99  char* encode(const boost::unordered_map<T1, T2>& val, char* buffer);
100  template <typename T1>
101  char* encode(const boost::unordered_set<T1>& val, char* buffer);
102  template <typename T1, typename T2>
103  char* encode(const std::pair<T1, T2>& val, char* buffer);
104 
105  //specialized version of decode for std::vector<bool> due to problems with c++
106  //standard on how vector<bool> is defined
107  DT_DLL_readerWriter char *encode(const std::vector<bool>& val, char *buffer);
109 
110 
118 
119  DT_DLL_readerWriter const char *decode(DtString& val, const char *buffer) ;
120  DT_DLL_readerWriter const char *decode(std::string& val, const char *buffer) ;
121  DT_DLL_readerWriter const char *decode(DtFilename& val, const char *buffer) ;
122  DT_DLL_readerWriter const char *decode(int& val, const char *buffer);
123  DT_DLL_readerWriter const char *decode(DtInt16& val, const char *buffer);
124 #ifndef DT_HAVE_64BIT_LONGS
125  DT_DLL_readerWriter const char *decode(DtInt32& val, const char *buffer);
126 #endif
127  DT_DLL_readerWriter const char *decode(DtU8& val, const char *buffer) ;
128  DT_DLL_readerWriter const char *decode(DtU16& val, const char *buffer) ;
129  DT_DLL_readerWriter const char *decode(DtU32& val, const char *buffer) ;
130  DT_DLL_readerWriter const char *decode(DtU64& val, const char *buffer) ;
131  DT_DLL_readerWriter const char *decode(DtFloat32& val, const char *buffer) ;
132  DT_DLL_readerWriter const char *decode(DtFloat64& val, const char *buffer) ;
133  DT_DLL_readerWriter const char *decode(DtVector& val, const char *buffer) ;
134  DT_DLL_readerWriter const char *decode(DtTaitBryan& val, const char *buffer) ;
135  DT_DLL_readerWriter const char *decode(bool &val, const char *buffer) ;
136  DT_DLL_readerWriter const char *decode(DtObjectType &val, const char *buffer) ;
137  DT_DLL_readerWriter const char *decode(std::vector<char>& val, const char *buffer) ;
138  DT_DLL_readerWriter const char *decode(DtRwBoolean &val, const char *buffer) ;
139  DT_DLL_readerWriter const char *decode(DtEntityType& val, const char *buffer);
140  DT_DLL_readerWriter const char *decode(DtEntityIdentifier& val, const char *buffer);
141  DT_DLL_readerWriter const char *decode(DtSimulationAddress& val, const char *buffer);
142  DT_DLL_readerWriter const char *decode(DtAppearance& val, const char *buffer);
143  DT_DLL_readerWriter const char *decode(DtForceType& val, const char *buffer);
144  DT_DLL_readerWriter const char *decode(DtInetAddr& val, const char *buffer);
145  DT_DLL_readerWriter const char *decode(DtRwInt& val, const char *buffer);
146  DT_DLL_readerWriter const char *decode(DtRwStringAttributeList& v, const char* buffer);
147  DT_DLL_readerWriter const char *decode(DtRwStringAttribute& v, const char* buffer);
148  DT_DLL_readerWriter const char *decode(DtRwVariableBindings& val, const char *buffer);
149 
150  template <typename T>
151  const char *decode(std::vector<T>& val, const char *buffer);
152  template <typename T>
153  const char *decode(std::set<T>& val, const char *buffer);
154  template <typename T>
155  const char *decode(std::list<T>& val, const char *buffer);
156  template <typename T1, typename T2>
157  const char *decode(std::map<T1, T2>& val, const char *buffer);
158  template <typename T1, typename T2>
159  const char *decode(boost::unordered_map<T1, T2>& val, const char *buffer);
160  template <typename T1>
161  const char *decode(boost::unordered_set<T1>& val, const char *buffer);
162  template <typename T1, typename T2>
163  const char *decode(std::pair<T1, T2>& val, const char *buffer);
164 
165  //specialized version of decode for std::vector<bool> due to problems with c++
166  //standard on how vector<bool> is defined
167  DT_DLL_readerWriter const char *decode(std::vector<bool>& val, const char *buffer);
168 
172 
173  DT_DLL_readerWriter int getSize(const DtString& val) ;
174  DT_DLL_readerWriter int getSize(const std::string& val);
175  DT_DLL_readerWriter int getSize(const DtFilename& val) ;
176  DT_DLL_readerWriter int getSize(const DtVector& v) ;
177  DT_DLL_readerWriter int getSize(const int& v);
178  DT_DLL_readerWriter int getSize(const DtInt16& v);
179 #ifndef DT_HAVE_64BIT_LONGS
180  DT_DLL_readerWriter int getSize(const DtInt32& v);
181 #endif
182  DT_DLL_readerWriter int getSize(const DtU8& v) ;
183  DT_DLL_readerWriter int getSize(const DtU16& v) ;
184  DT_DLL_readerWriter int getSize(const DtU32& v) ;
185  DT_DLL_readerWriter int getSize(const DtU64& v) ;
186  DT_DLL_readerWriter int getSize(const DtFloat32& v) ;
187  DT_DLL_readerWriter int getSize(const DtFloat64& v) ;
188  DT_DLL_readerWriter int getSize(const bool&v) ;
190  DT_DLL_readerWriter int getSize(const DtTaitBryan& v) ;
191  DT_DLL_readerWriter int getSize(const std::vector<char>& v) ;
192  DT_DLL_readerWriter int getSize(const DtRwBoolean& v) ;
193  DT_DLL_readerWriter int getSize(const DtEntityType& v);
194  DT_DLL_readerWriter int getSize(const DtEntityIdentifier& v);
195  DT_DLL_readerWriter int getSize(const DtSimulationAddress& v);
196  DT_DLL_readerWriter int getSize(const DtAppearance& v);
197  DT_DLL_readerWriter int getSize(const DtForceType& v);
198  DT_DLL_readerWriter int getSize(const DtInetAddr& v);
199  DT_DLL_readerWriter int getSize(const DtRwInt& v);
203 
204  template <typename T>
205  int getSize(const std::vector<T>& v) ;
206  template <typename T>
207  int getSize(const std::list<T>& v) ;
208  template <typename T1, typename T2>
209  int getSize(const std::map<T1, T2>& v) ;
210  template <typename T1, typename T2>
211  int getSize(const boost::unordered_map<T1, T2>& v) ;
212  template <typename T1>
213  int getSize(const boost::unordered_set<T1>& v) ;
214  template <typename T1, typename T2>
215  int getSize(const std::pair<T1, T2>& v) ;
216  template <typename T>
217  int getSize(const std::set<T>& v) ;
218 
219  //specialized version of decode for std::vector<bool> due to problems with c++
220  //standard on how vector<bool> is defined
221  DT_DLL_readerWriter int getSize(const std::vector<bool>& v);
223 }
224 
225 #define bufferSerialize_INL_
226 #include "readerWriter/bufferSerialize.inl"
227 #undef bufferSerialize_INL_
228 
DT_DLL_readerWriter int getSize(const DtString &val)
The number of bytes required to encode the value.
#define DT_DLL_readerWriter
This file is used to determine how to build Disable inconsistent dll linkage warning Visual Studio 6...
Definition: readerWriterDefines.h:34
Defines ReaderWriter classes for varying sized integers In most cases the DtRwInt class is the prefer...
Definition: objectType.h:27
ReaderWriter object that maintains a list of reader-writer variable bindings. It keeps a list of name...
Definition: rwVariableBindings.h:27
float DtFloat32
Definition: vrvControlStructTypes.h:35
int DtInt32
Definition: vrvControlStructTypes.h:31
Description: Readable, Writable int.
Definition: rwInt.h:25
double DtFloat64
Definition: vrvControlStructTypes.h:36
DT_DLL_readerWriter char * encode(const DtFilename &val, char *buffer)
Serializes the provided value val into buffer. buffer must have at least the number of bytes returned...
short DtInt16
Definition: vrvControlStructTypes.h:29
Defines ReaderWriter classes for varying sized reals In most cases the DtRwReal class is the preferre...
class DtRwStringAttribute:
Definition: rwStringAttribute.h:19
Description: Readable, Writable bool.
Definition: rwBoolean.h:26
DT_DLL_readerWriter const char * decode(DtString &val, const char *buffer)
Decodes a value from buffer and places the result in val of the type specified by val...
class DtRwStringAttributeList:
Definition: rwStringAttributeList.h:29

Document ID: Generated on Mon Jun 20 00:38:30 EDT 2022 from SVN revision 244029
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)