VR-Forces 4.1 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;
97  std::map<std::string, DtMSDLScenarioContentsItem> myContents;
98 
100 
102  std::vector<DtVector> myLocations;
103 };
104 
108 {
109 public:
111  std::string myName;
112  bool myVisible;
113  std::string myType;
114 
115  std::string mySuperiorHandle;
116 
117  std::map<std::string, DtMSDLScenarioContentsItem> myContents;
118  std::map<MSDL_UUID, DtMSDLSimulatedTacticalGraphic> myTacticalGraphics;
119 };
120 
121 typedef std::map<MSDL_UUID, std::string> Associations;
122 
125 {
126 public:
128 
129  std::string myType;
130  std::string myName;
131  std::string myCountryCode;
134 };
136 
141 {
142 public:
143  typedef std::map<MSDL_UUID, DtForceSide> ForceSides;
144  typedef std::map<MSDL_UUID, DtMSDLSimulatedElement*> OrganizationPtr;
145  typedef std::map<MSDL_UUID, DtMSDLSimulatedElement*> EquipmentPtr;
146  typedef std::map<MSDL_UUID, DtMSDLOverlayLayer> OverlayLayer;
147 
148 public:
151 
154 
156  virtual bool loadScenarioDescription(const DtFilename& file, const std::map<std::string, std::string>& importData,
158 
160  virtual bool saveScenarioDescription(const DtFilename& file, const DtScenario&) const;
161 
164 
167  virtual bool importIntoSimulation(DtSimManager*);
168 
171  virtual bool importFromSimulation(DtSimManager*, const std::map<std::string, std::string>& exportData,
173 
175  virtual const EquipmentPtr& equipment() const;
176 
178  virtual const OrganizationPtr& organizedOrganization() const;
179 
181  virtual const OrganizationPtr& flatOrganization() const;
182 
184  virtual const OverlayLayer& overlayLayers() const;
185 
187  virtual const ForceSides& forces() const;
188 
190  virtual std::string findValue(const std::map<std::string, DtMSDLScenarioContentsItem>&, const std::string& path) const;
191  virtual bool hasValue(const std::map<std::string, DtMSDLScenarioContentsItem>&, const std::string& path) const;
192 
194  virtual bool organizationUsesForce(MSDL_UUID) const;
195 
197  virtual std::string supportedExtensions();
198 
200  virtual bool canImportFile(const DtFilename&);
201 
202 protected:
204  virtual std::string pad(int) const;
205 
207  virtual bool parseMilitaryScenario(xmlNodePtr, const std::map<std::string, std::string>& importData);
208 
210  virtual bool parseScenarioID(xmlNodePtr, const std::map<std::string, std::string>& importData);
211 
213  virtual bool parseOptions(xmlNodePtr, const std::map<std::string, std::string>& importData);
214 
216  virtual bool parseEnvironment(xmlNodePtr, const std::map<std::string, std::string>& importData);
217 
220  virtual bool parseForces(xmlNodePtr,const std::map<std::string, std::string>& importData);
221 
223  virtual bool parseForce(xmlNodePtr, const std::map<std::string, std::string>& importData);
224 
226  virtual bool parsePOC(xmlNodePtr);
227 
229  virtual std::string content(xmlNodePtr) const;
230 
232  virtual bool parseAssociations(xmlNodePtr, Associations&);
233 
235  virtual bool parseAssociation(xmlNodePtr, Associations&);
236 
239  virtual bool parseOrganizations(xmlNodePtr, const std::map<std::string, std::string>& importData);
240 
244  virtual bool parseUnits(xmlNodePtr, const std::map<std::string, std::string>& importData);
245 
249  virtual bool parseUnit(xmlNodePtr, const std::map<std::string, std::string>& importData, DtMSDLSimulatedElement& unit);
250 
252  virtual bool parseEquipmentItem(xmlNodePtr, const std::map<std::string, std::string>& importData, DtMSDLSimulatedElement& unit);
253 
256  virtual void addUnitToFlatOrganization(const DtMSDLSimulatedElement&);
257 
259  virtual void addEquipmentToOrganization(const DtMSDLSimulatedElement&);
260 
264  virtual bool parseEquipment(xmlNodePtr, const std::map<std::string, std::string>& importData);
265 
268  virtual bool parseContents(xmlNodePtr, DtMSDLScenarioContentsItem&);
269 
271  virtual bool parseDisposition(xmlNodePtr, DtMSDLSimulatedElement&);
272 
274  virtual bool parseOverlays(xmlNodePtr, const std::map<std::string, std::string>& importData);
275 
277  virtual bool parseOverlay(xmlNodePtr, const std::map<std::string, std::string>& importData, DtMSDLOverlayLayer&);
278 
281  virtual bool parseTacticalGraphics(xmlNodePtr, const std::map<std::string, std::string>& importData);
282 
285  virtual bool parseTacticalGraphic(xmlNodePtr, const std::map<std::string, std::string>& importData, DtMSDLSimulatedTacticalGraphic&);
286 
288  virtual std::vector<DtVector> parseAnchorPoints(xmlNodePtr, const std::map<std::string, std::string>& importData);
289 
291  virtual DtVector parseAnchorPoint(xmlNodePtr, const std::map<std::string, std::string>& importData);
292 
294  virtual DtVector parseLocation(xmlNodePtr);
295 
297  virtual DtVector parseLocationGCC(xmlNodePtr);
298 
300  virtual DtVector parseLocationMGRS(xmlNodePtr);
301 
303  virtual DtVector parseLocationUTM(xmlNodePtr);
304 
306  virtual DtVector parseLocationGDC(xmlNodePtr);
307 
309  virtual void convertFlatOrganizationToOrganizationHierarchy();
310 
312  virtual std::string enumerationForUnit(const std::string& symbolIdentifier, const DtMSDLSimulatedElement&);
313 
317  virtual int forceTypeFromName(const std::string&, int curForce, const std::map<std::string, std::string>&) const;
318 
320  virtual std::string countryCodeForForce(MSDL_UUID forceHandle) const;
321 
323  virtual void saveScenarioId(std::ostream&, const DtScenario&) const;
324 
326  virtual void saveOptions(std::ostream&) const;
327 
329  virtual void saveEnvironment(std::ostream&) const;
330 
332  virtual void saveForceSides(std::ostream&) const;
333 
335  virtual void saveForceSide(std::ostream&, const MSDL_UUID&, const DtForceSide&) const;
336 
338  virtual void saveOverlayLayers(std::ostream&) const;
339  virtual void saveOverlayLayer(std::ostream&, const DtMSDLOverlayLayer&) const;
340 
342  virtual void saveTacticalGraphics(std::ostream&) const;
343  virtual void saveTacticalGraphic(std::ostream&, const DtMSDLSimulatedTacticalGraphic&) const;
344 
346  virtual void saveAnchorPoints(std::ostream&, const DtMSDLSimulatedTacticalGraphic&, int indent) const;
347  virtual void saveAnchorPoint(std::ostream&, const DtVector&, int indent) const;
348 
350  virtual void saveOrganizations(std::ostream&) const;
351 
353  virtual void saveUnits(std::ostream&) const;
354  virtual void saveUnit(std::ostream&, DtMSDLSimulatedElement*) const;
355 
357  virtual void saveDisposition(std::ostream&, DtMSDLSimulatedElement*, int indent) const;
358 
360  virtual void saveLocation(std::ostream&, DtMSDLSimulatedElement*, int indent) const;
361  virtual void saveLocation(std::ostream&, const DtVector&, int indent) const;
362 
364  virtual void saveUnitRelations(std::ostream&, DtMSDLSimulatedElement*) const;
365 
367  virtual void saveEquipmentRelations(std::ostream&, DtMSDLSimulatedElement*) const;
368 
370  virtual void saveUnitModel(std::ostream&, DtMSDLSimulatedElement*) const;
371 
373  virtual void saveEquipmentModel(std::ostream&, DtMSDLSimulatedElement*) const;
374 
377  virtual void saveOneSAFIdentifiers(std::ostream&, const std::string& type, DtMSDLSimulatedElement*,
378  int indent) const;
379 
382  virtual void saveUnitSymbolModifiers(std::ostream&, DtMSDLSimulatedElement*) const;
383  virtual void saveFormationPosition(std::ostream&, DtMSDLSimulatedElement*, int indent) const;
384  virtual void saveOwnFormation(std::ostream&, DtMSDLSimulatedElement*, int indent) const;
385 
386  virtual void saveEquipmentSymbolModifiers(std::ostream&, DtMSDLSimulatedElement*) const;
387  virtual void saveOneSAFBasicLoadInformation(std::ostream&, DtMSDLSimulatedElement*) const;
388 
389  virtual void saveSymbolClassData(std::ostream&, const DtMSDLSimulatedTacticalGraphic&) const;
391 
392  virtual void saveEquipment(std::ostream&) const;
393  virtual void saveEquipmentItem(std::ostream&, DtMSDLSimulatedElement*) const;
394 
397  virtual void finalize();
398 
399 protected:
400  xmlDocPtr myDoc;
402 
407 
410 
412 
415 };
416 
417 namespace DtBufferSerialize
418 {
419  template <typename _Key, typename _Value>
420  std::string encodeForImportData(const std::map<_Key, _Value>& v)
421  {
422  int size = DtBufferSerialize::getSize(v);
423  char* buf = new char[size];
424 
426  std::string encoded;
427 
428  int i;
429 
430  for (i = 0; i < size; i++)
431  {
432  encoded += (buf[i] + 1);
433  }
434 
435  delete[] buf;
436 
437  return encoded;
438  }
439 
440  template <typename _Key, typename _Value>
441  void decodeFromImportData(std::map<_Key, _Value>& map,const std::string& s)
442  {
443  int iLimit = s.size(), i;
444  char* buf = new char[iLimit];
445 
446  for (i = 0; i < iLimit; i++)
447  {
448  buf[i] = s[i] - 1;
449  }
450 
451  DtBufferSerialize::decode(map, buf);
452 
453  delete[] buf;
454  }
455 }

Document ID: Generated on Tue Jan 29 18:21:16 EST 2013 from SVN revision 123193
Copyright © 2005-2013 VT MÄK Inc. All Rights Reserved (www.mak.com)