WSF
WsfXIO_SerializeTypes.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2003-2015 The Boeing Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11
12#ifndef WSFXIO_SERIALIZETYPES_HPP
13#define WSFXIO_SERIALIZETYPES_HPP
14
15#include "wsf_export.h"
16
17#include <map>
18#include <string>
19#include <vector>
20
21#include "UtVec3.hpp"
22#include "WsfStringId.hpp"
23#include "WsfTrackId.hpp"
24#include "WsfXIO_Defines.hpp"
25
26// Implement serialization for some basic types
27class DisEntityId;
29class WsfLocalTrack;
30class WsfTaskData;
31class WsfTrack;
32class WsfWaypoint;
34
35#define WSFXIO_DEFINE_LOAD_SAVE(TYPE) \
36 void WSF_EXPORT Load(PakI& aBuff, TYPE& aObject); \
37 void WSF_EXPORT Save(PakO& aBuff, TYPE& aObject)
38
43{
46 : mStringId()
47 {
48 }
49 template<typename AR>
50 void Serialize(AR& aAr)
51 {
52 aAr& mStringId;
53 }
54
55protected:
56 WsfXIO_StringId(int aStringId)
57 : mStringId(aStringId)
58 {
59 }
61};
62
64{
65 template<typename AR>
66 void Serialize(AR& aAr)
67 {
69 }
70 template<typename ENTITY_TYPE>
71 WsfXIO_EntityId& operator=(ENTITY_TYPE& aRhs)
72 {
73 mSite = aRhs.GetSite();
74 mApplication = aRhs.GetApplication();
75 mEntity = aRhs.GetEntity();
76 return *this;
77 }
79 : mSite(0)
80 , mApplication(0)
81 , mEntity(0)
82 {
83 }
84 template<typename ENTITY_TYPE>
85 WsfXIO_EntityId(const ENTITY_TYPE& aSrc)
86 {
87 (*this) = aSrc;
88 }
89 template<typename ENTITY_TYPE>
90 ENTITY_TYPE Convert() const
91 {
92 return ENTITY_TYPE(mSite, mApplication, mEntity);
93 }
94 bool operator==(const WsfXIO_EntityId& aRhs) const
95 {
96 return mSite == aRhs.mSite && mApplication == aRhs.mApplication && mEntity == aRhs.mEntity;
97 }
98 bool operator<(const WsfXIO_EntityId& aRhs) const
99 {
100 if (mSite < aRhs.mSite)
101 {
102 return true;
103 }
104 if (mSite > aRhs.mSite)
105 {
106 return false;
107 }
108 if (mApplication < aRhs.mApplication)
109 {
110 return true;
111 }
112 if (mApplication > aRhs.mApplication)
113 {
114 return false;
115 }
116 return mEntity < aRhs.mEntity;
117 }
118
119 uint16_t GetSite() const { return mSite; }
120 uint16_t GetApplication() const { return mApplication; }
121 uint16_t GetEntity() const { return mEntity; }
122
123 uint16_t mSite;
124 uint16_t mApplication;
125 uint16_t mEntity;
126};
127
129{
130 template<typename AR>
131 void Serialize(AR& aAr)
132 {
134 }
135 template<typename ENTITY_TYPE>
136 WsfXIO_EntityType& operator=(ENTITY_TYPE& aRhs)
137 {
138 mEntityKind = aRhs.GetEntityKind();
139 mDomain = aRhs.GetDomain();
140 mCountry = aRhs.GetCountry();
141 mCategory = aRhs.GetCategory();
142 mSubcategory = aRhs.GetSubcategory();
143 mSpecific = aRhs.GetSpecific();
144 mExtra = aRhs.GetExtra();
145 return *this;
146 }
148 : mEntityKind(0)
149 , mDomain(0)
150 , mCountry(0)
151 , mCategory(0)
152 , mSubcategory(0)
153 , mSpecific(0)
154 , mExtra(0)
155 {
156 }
157 template<typename ENTITY_TYPE>
158 WsfXIO_EntityType(const ENTITY_TYPE& aSrc)
159 {
160 (*this) = aSrc;
161 }
162 template<typename ENTITY_TYPE>
163 ENTITY_TYPE Convert()
164 {
166 }
167
168 uint8_t GetEntityKind() const { return mEntityKind; }
169 uint8_t GetDomain() const { return mDomain; }
170 uint16_t GetCountry() const { return mCountry; }
171 uint8_t GetCategory() const { return mCategory; }
172 uint8_t GetSubcategory() const { return mSubcategory; }
173 uint8_t GetSpecific() const { return mSpecific; }
174 uint8_t GetExtra() const { return mExtra; }
175
176 uint8_t mEntityKind;
177 uint8_t mDomain;
178 uint16_t mCountry;
179 uint8_t mCategory;
181 uint8_t mSpecific;
182 uint8_t mExtra;
183};
184
188{
189public:
191 void Save(PakO& aAr);
192 void Load(PakI& aAr);
193
195 std::string Decode(WsfXIO_StringId& aXIO_Id);
196 void Clear();
197
198protected:
200 void ComputeStrings();
201 std::map<WsfStringId, int> mEncodingMap;
202 // Maps WsfXIO_StringId to std::string
203 std::vector<std::string> mStrings;
204};
205
209// WSFXIO_DEFINE_LOAD_SAVE(PakSerialization::WsfXIO_StringIdSerialize);
215
216template<typename BUFF>
217inline void Serialize(BUFF& aBuff, UtVec3d& aVec3)
218{
219 aBuff& PakSerialization::Array(aVec3.GetData(), 3);
220}
221
222#endif
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
void Load(PakI &aBuff, WsfXIO_PlatformPartInfo *&aPtr)
Definition WsfXIO_ObjectInfo.cpp:345
void Save(PakO &aBuff, WsfXIO_PlatformPartInfo *&aPtr)
Definition WsfXIO_ObjectInfo.cpp:352
#define WSFXIO_DEFINE_LOAD_SAVE(TYPE)
Definition WsfXIO_SerializeTypes.hpp:35
void Serialize(BUFF &aBuff, UtVec3d &aVec3)
Definition WsfXIO_SerializeTypes.hpp:217
Definition WsfAttributeContainer.hpp:24
Definition WsfLocalTrack.hpp:32
Definition WsfTaskData.hpp:23
An object that represents an 'track' (perception) of something.
Definition WsfTrack.hpp:120
Definition WsfWaypoint.hpp:57
Definition WsfXIO_SerializeTypes.hpp:188
std::vector< std::string > mStrings
Definition WsfXIO_SerializeTypes.hpp:203
void Clear()
Definition WsfXIO_SerializeTypes.cpp:66
WsfXIO_StringId Encode(WsfStringId aStringId)
Definition WsfXIO_SerializeTypes.cpp:113
std::map< WsfStringId, int > mEncodingMap
Definition WsfXIO_SerializeTypes.hpp:201
std::string Decode(WsfXIO_StringId &aXIO_Id)
Definition WsfXIO_SerializeTypes.cpp:102
WsfXIO_StringDictionary()
Definition WsfXIO_SerializeTypes.cpp:61
void ComputeStrings()
Definition WsfXIO_SerializeTypes.cpp:81
uint16_t GetSite() const
Definition WsfXIO_SerializeTypes.hpp:119
ENTITY_TYPE Convert() const
Definition WsfXIO_SerializeTypes.hpp:90
void Serialize(AR &aAr)
Definition WsfXIO_SerializeTypes.hpp:66
uint16_t GetApplication() const
Definition WsfXIO_SerializeTypes.hpp:120
uint16_t mEntity
Definition WsfXIO_SerializeTypes.hpp:125
WsfXIO_EntityId()
Definition WsfXIO_SerializeTypes.hpp:78
bool operator<(const WsfXIO_EntityId &aRhs) const
Definition WsfXIO_SerializeTypes.hpp:98
uint16_t mSite
Definition WsfXIO_SerializeTypes.hpp:123
uint16_t mApplication
Definition WsfXIO_SerializeTypes.hpp:124
WsfXIO_EntityId(const ENTITY_TYPE &aSrc)
Definition WsfXIO_SerializeTypes.hpp:85
WsfXIO_EntityId & operator=(ENTITY_TYPE &aRhs)
Definition WsfXIO_SerializeTypes.hpp:71
uint16_t GetEntity() const
Definition WsfXIO_SerializeTypes.hpp:121
bool operator==(const WsfXIO_EntityId &aRhs) const
Definition WsfXIO_SerializeTypes.hpp:94
uint16_t GetCountry() const
Definition WsfXIO_SerializeTypes.hpp:170
uint8_t mCategory
Definition WsfXIO_SerializeTypes.hpp:179
uint8_t GetEntityKind() const
Definition WsfXIO_SerializeTypes.hpp:168
uint8_t mEntityKind
Definition WsfXIO_SerializeTypes.hpp:176
uint8_t GetExtra() const
Definition WsfXIO_SerializeTypes.hpp:174
uint16_t mCountry
Definition WsfXIO_SerializeTypes.hpp:178
uint8_t GetCategory() const
Definition WsfXIO_SerializeTypes.hpp:171
uint8_t GetSpecific() const
Definition WsfXIO_SerializeTypes.hpp:173
uint8_t mSpecific
Definition WsfXIO_SerializeTypes.hpp:181
WsfXIO_EntityType(const ENTITY_TYPE &aSrc)
Definition WsfXIO_SerializeTypes.hpp:158
WsfXIO_EntityType()
Definition WsfXIO_SerializeTypes.hpp:147
uint8_t GetSubcategory() const
Definition WsfXIO_SerializeTypes.hpp:172
uint8_t mSubcategory
Definition WsfXIO_SerializeTypes.hpp:180
uint8_t mExtra
Definition WsfXIO_SerializeTypes.hpp:182
uint8_t GetDomain() const
Definition WsfXIO_SerializeTypes.hpp:169
void Serialize(AR &aAr)
Definition WsfXIO_SerializeTypes.hpp:131
WsfXIO_EntityType & operator=(ENTITY_TYPE &aRhs)
Definition WsfXIO_SerializeTypes.hpp:136
uint8_t mDomain
Definition WsfXIO_SerializeTypes.hpp:177
ENTITY_TYPE Convert()
Definition WsfXIO_SerializeTypes.hpp:163
Definition WsfXIO_SerializeTypes.hpp:43
WsfXIO_StringId()
Definition WsfXIO_SerializeTypes.hpp:45
friend class WsfXIO_StringDictionary
Definition WsfXIO_SerializeTypes.hpp:44
int mStringId
Definition WsfXIO_SerializeTypes.hpp:60
void Serialize(AR &aAr)
Definition WsfXIO_SerializeTypes.hpp:50
WsfXIO_StringId(int aStringId)
Definition WsfXIO_SerializeTypes.hpp:56
Copyrights Multiple, All Rights Reserved