VR-Forces 4.2 Class Documentation
msdlScenarioDescriptionImporterExporter.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2012 MaK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 #pragma once
10 
14 #include <libxml/xmlmemory.h>
15 #include <libxml/parser.h>
16 #include <matrix/vlVector.h>
17 #include <vlpi/entityType.h>
18 #include <geometry/tdbextent.h>
19 
20 #include <iostream>
21 #include <fstream>
22 
29 
30 class DtVrfObject;
31 
32 #define DtImportDataSetCountryForForce "DtImportDataSetCountryForForce"
33 
34 
35 
36 
37 
39 typedef std::string MSDL_UUID;
40 
47 {
48 public:
49  std::string myName;
50  std::string myValue;
51 
52  std::map<std::string, DtMSDLScenarioContentsItem> myChildren;
53 };
54 
57 {
58 public:
60  std::string myName;
62  std::string myEnumeration;
63  std::string mySymbolIdentifier;
64  std::string myMilitaryEnumeration;
65  std::string myOneSAFName;
66  std::string myFormation;
67 
70 
72  double myHeading;
73  double mySpeed;
74 
76 
77  std::string mySuperiorHandle;
78 
80 
81  std::map<std::string, DtMSDLScenarioContentsItem> myContents;
82  std::map<MSDL_UUID, DtMSDLSimulatedElement*> mySubordinates;
83 };
84 
87 {
88 public:
89  std::string myObjectHandle;
90  std::string mySymbolIdentifier;
91  std::string myAffiliation;
92  std::string myOverlayHandle;
93  std::string mySymbolClassChoice;
94  std::string myName;
95  std::string myEnumeration;
96  std::string myForceHandle;
98  std::map<std::string, DtMSDLScenarioContentsItem> myContents;
99  int myColor;
101 
103 
105  std::vector<DtVector> myLocations;
106 };
107 
111 {
112 public:
114  std::string myName;
115  bool myVisible;
116  std::string myType;
117 
118  std::string mySuperiorHandle;
119 
120  std::map<std::string, DtMSDLScenarioContentsItem> myContents;
121  std::map<MSDL_UUID, DtMSDLSimulatedTacticalGraphic> myTacticalGraphics;
122 };
123 
124 typedef std::map<MSDL_UUID, std::string> Associations;
125 
128 {
129 public:
131 
132  std::string myType;
133  std::string myName;
134  std::string myCountryCode;
137 };
139 
144 {
145 public:
146  typedef std::map<MSDL_UUID, DtForceSide> ForceSides;
147  typedef std::map<MSDL_UUID, DtMSDLSimulatedElement*> OrganizationPtr;
148  typedef std::map<MSDL_UUID, DtMSDLSimulatedElement*> EquipmentPtr;
149  typedef std::map<MSDL_UUID, DtMSDLOverlayLayer> OverlayLayer;
150 
151 public:
154 
157 
159  virtual bool loadScenarioDescription(const DtFilename& file, const std::map<std::string, std::string>& importData,
161 
163  virtual bool saveScenarioDescription(const DtFilename& file, const DtScenario&) const;
164 
167 
170  virtual bool importIntoSimulation(DtSimManager*);
171 
174  virtual bool importFromSimulation(DtSimManager*, const std::map<std::string, std::string>& exportData,
176 
178  virtual const EquipmentPtr& equipment() const;
179 
181  virtual const OrganizationPtr& organizedOrganization() const;
182 
184  virtual const OrganizationPtr& flatOrganization() const;
185 
187  virtual const OverlayLayer& overlayLayers() const;
188 
190  virtual const ForceSides& forces() const;
191 
193  virtual std::string findValue(const std::map<std::string, DtMSDLScenarioContentsItem>&, const std::string& path) const;
194  virtual bool hasValue(const std::map<std::string, DtMSDLScenarioContentsItem>&, const std::string& path) const;
195 
197  virtual bool organizationUsesForce(MSDL_UUID) const;
198 
200  virtual std::string supportedExtensions();
201 
203  virtual bool canImportFile(const DtFilename&);
204 
205 protected:
207  virtual std::string pad(int) const;
208 
210  virtual bool parseMilitaryScenario(xmlNodePtr, const std::map<std::string, std::string>& importData);
211 
213  virtual bool parseScenarioID(xmlNodePtr, const std::map<std::string, std::string>& importData);
214 
216  virtual bool parseOptions(xmlNodePtr, const std::map<std::string, std::string>& importData);
217 
219  virtual bool parseEnvironment(xmlNodePtr, const std::map<std::string, std::string>& importData);
220 
223  virtual bool parseForces(xmlNodePtr,const std::map<std::string, std::string>& importData);
224 
226  virtual bool parseForce(xmlNodePtr, const std::map<std::string, std::string>& importData);
227 
229  virtual bool parsePOC(xmlNodePtr);
230 
232  virtual std::string content(xmlNodePtr) const;
233 
235  virtual bool parseAssociations(xmlNodePtr, Associations&);
236 
238  virtual bool parseAssociation(xmlNodePtr, Associations&);
239 
242  virtual bool parseOrganizations(xmlNodePtr, const std::map<std::string, std::string>& importData);
243 
247  virtual bool parseUnits(xmlNodePtr, const std::map<std::string, std::string>& importData);
248 
252  virtual bool parseUnit(xmlNodePtr, const std::map<std::string, std::string>& importData, DtMSDLSimulatedElement& unit);
253 
255  virtual bool parseEquipmentItem(xmlNodePtr, const std::map<std::string, std::string>& importData, DtMSDLSimulatedElement& unit);
256 
259  virtual void addUnitToFlatOrganization(const DtMSDLSimulatedElement&);
260 
262  virtual void addEquipmentToOrganization(const DtMSDLSimulatedElement&);
263 
267  virtual bool parseEquipment(xmlNodePtr, const std::map<std::string, std::string>& importData);
268 
271  virtual bool parseContents(xmlNodePtr, DtMSDLScenarioContentsItem&);
272 
274  virtual bool parseDisposition(xmlNodePtr, DtMSDLSimulatedElement&);
275 
277  virtual bool parseOverlays(xmlNodePtr, const std::map<std::string, std::string>& importData);
278 
280  virtual bool parseOverlay(xmlNodePtr, const std::map<std::string, std::string>& importData, DtMSDLOverlayLayer&);
281 
284  virtual bool parseTacticalGraphics(xmlNodePtr, const std::map<std::string, std::string>& importData);
285 
288  virtual bool parseTacticalGraphic(xmlNodePtr, const std::map<std::string, std::string>& importData, DtMSDLSimulatedTacticalGraphic&);
289 
291  virtual std::vector<DtVector> parseAnchorPoints(xmlNodePtr, const std::map<std::string, std::string>& importData);
292 
294  virtual DtVector parseAnchorPoint(xmlNodePtr, const std::map<std::string, std::string>& importData);
295 
297  virtual DtVector parseLocation(xmlNodePtr);
298 
300  virtual DtVector parseLocationGCC(xmlNodePtr);
301 
303  virtual DtVector parseLocationMGRS(xmlNodePtr);
304 
306  virtual DtVector parseLocationUTM(xmlNodePtr);
307 
309  virtual DtVector parseLocationGDC(xmlNodePtr);
310 
312  virtual void convertFlatOrganizationToOrganizationHierarchy();
313 
315  virtual std::string enumerationForUnit(const std::string& symbolIdentifier, const DtMSDLSimulatedElement&);
316 
320  virtual int forceTypeFromName(const std::string&, int curForce, const std::map<std::string, std::string>&) const;
321 
323  virtual std::string countryCodeForForce(MSDL_UUID forceHandle) const;
324 
326  virtual void saveScenarioId(std::ostream&, const DtScenario&) const;
327 
329  virtual void saveOptions(std::ostream&) const;
330 
332  virtual void saveEnvironment(std::ostream&) const;
333 
335  virtual void saveForceSides(std::ostream&) const;
336 
338  virtual void saveForceSide(std::ostream&, const MSDL_UUID&, const DtForceSide&) const;
339 
341  virtual void saveOverlayLayers(std::ostream&) const;
342  virtual void saveOverlayLayer(std::ostream&, const DtMSDLOverlayLayer&) const;
343 
345  virtual void saveTacticalGraphics(std::ostream&) const;
346  virtual void saveTacticalGraphic(std::ostream&, const DtMSDLSimulatedTacticalGraphic&) const;
347 
349  virtual void saveAnchorPoints(std::ostream&, const DtMSDLSimulatedTacticalGraphic&, int indent) const;
350  virtual void saveAnchorPoint(std::ostream&, const DtVector&, int indent) const;
351 
353  virtual void saveOrganizations(std::ostream&) const;
354 
356  virtual void saveUnits(std::ostream&) const;
357  virtual void saveUnit(std::ostream&, DtMSDLSimulatedElement*) const;
358 
360  virtual void saveDisposition(std::ostream&, DtMSDLSimulatedElement*, int indent) const;
361 
363  virtual void saveLocation(std::ostream&, DtMSDLSimulatedElement*, int indent) const;
364  virtual void saveLocation(std::ostream&, const DtVector&, int indent) const;
365 
367  virtual void saveUnitRelations(std::ostream&, DtMSDLSimulatedElement*) const;
368 
370  virtual void saveEquipmentRelations(std::ostream&, DtMSDLSimulatedElement*) const;
371 
373  virtual void saveUnitModel(std::ostream&, DtMSDLSimulatedElement*) const;
374 
376  virtual void saveEquipmentModel(std::ostream&, DtMSDLSimulatedElement*) const;
377 
380  virtual void saveOneSAFIdentifiers(std::ostream&, const std::string& type, DtMSDLSimulatedElement*,
381  int indent) const;
382 
385  virtual void saveUnitSymbolModifiers(std::ostream&, DtMSDLSimulatedElement*) const;
386  virtual void saveFormationPosition(std::ostream&, DtMSDLSimulatedElement*, int indent) const;
387  virtual void saveOwnFormation(std::ostream&, DtMSDLSimulatedElement*, int indent) const;
388 
389  virtual void saveEquipmentSymbolModifiers(std::ostream&, DtMSDLSimulatedElement*) const;
390  virtual void saveOneSAFBasicLoadInformation(std::ostream&, DtMSDLSimulatedElement*) const;
391 
392  virtual void saveSymbolClassData(std::ostream&, const DtMSDLSimulatedTacticalGraphic&) const;
394 
395  virtual void saveEquipment(std::ostream&) const;
396  virtual void saveEquipmentItem(std::ostream&, DtMSDLSimulatedElement*) const;
397 
400  virtual void finalize();
401 
402 protected:
403  xmlDocPtr myDoc;
405 
410 
413 
415 
418 };
419 
420 namespace DtBufferSerialize
421 {
422  template <typename _Key, typename _Value>
423  std::string encodeForImportData(const std::map<_Key, _Value>& v)
424  {
425  int size = DtBufferSerialize::getSize(v);
426  char* buf = new char[size];
427 
429  std::string encoded;
430 
431  int i;
432 
433  for (i = 0; i < size; i++)
434  {
435  encoded += (buf[i] + 1);
436  }
437 
438  delete[] buf;
439 
440  return encoded;
441  }
442 
443  template <typename _Key, typename _Value>
444  void decodeFromImportData(std::map<_Key, _Value>& map,const std::string& s)
445  {
446  int iLimit = s.size(), i;
447  char* buf = new char[iLimit];
448 
449  for (i = 0; i < iLimit; i++)
450  {
451  buf[i] = s[i] - 1;
452  }
453 
454  DtBufferSerialize::decode(map, buf);
455 
456  delete[] buf;
457  }
458 }

Document ID: Generated on Sun Nov 24 19:49:21 EST 2013 from SVN revision 133924
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)