VR-Forces 4.5 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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/extent.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 
56 {
57 public:
58  DtMSDLVector() : locationAGL(false) {};
59  DtMSDLVector(const DtVector& orig) : DtVector(orig), locationAGL(false) {};
60  DtMSDLVector(const DtMSDLVector& orig) : DtVector(orig), locationAGL(orig.locationAGL) {};
61 
62  DtMSDLVector& operator=(const DtMSDLVector& orig) { DtVector::operator=(orig); locationAGL = orig.locationAGL; return *this; };
63  DtMSDLVector& operator=(const DtVector& orig) { DtVector::operator=(orig); return *this; };
64 
65  bool locationAGL;
66 };
67 
70 {
71 public:
73  std::string myName;
75  std::string myEnumeration;
76  std::string mySymbolIdentifier;
77  std::string myMilitaryEnumeration;
78  std::string myOneSAFName;
79  std::string myFormation;
80 
83 
85  double myHeading;
86  double mySpeed;
87 
89 
90  std::string mySuperiorHandle;
91 
93 
94  std::map<std::string, DtMsdlScenarioContentsItem> myContents;
95  std::map<Msdl_UUID, DtMsdlSimulatedElement*> mySubordinates;
96  std::map<std::string, std::string> myExtendedData;
97 };
98 
101 {
102 public:
103  std::string myObjectHandle;
104  std::string mySymbolIdentifier;
105  std::string myAffiliation;
106  std::string myOverlayHandle;
107  std::string mySymbolClassChoice;
108  std::string myName;
109  std::string myEnumeration;
110  std::string myForceHandle;
112  std::map<std::string, DtMsdlScenarioContentsItem> myContents;
113  int myColor;
115 
117 
119  std::vector<DtMSDLVector> myLocations;
120 
123  std::map<std::string, std::string> myExtendedData;
124 };
125 
129 {
130 public:
132  std::string myName;
133  bool myVisible;
134  std::string myType;
135 
136  std::string mySuperiorHandle;
137 
138  std::map<std::string, DtMsdlScenarioContentsItem> myContents;
139  std::map<Msdl_UUID, DtMsdlSimulatedTacticalGraphic> myTacticalGraphics;
140 };
141 
142 typedef std::map<Msdl_UUID, std::string> Associations;
143 
146 {
147 public:
149 
150  std::string myType;
151  std::string myName;
152  std::string myCountryCode;
155 };
157 
162 {
163 public:
164  typedef std::map<Msdl_UUID, DtForceSide> ForceSides;
165  typedef std::map<Msdl_UUID, DtMsdlSimulatedElement*> OrganizationPtr;
166  typedef std::map<Msdl_UUID, DtMsdlSimulatedElement*> EquipmentPtr;
167  typedef std::map<Msdl_UUID, DtMsdlOverlayLayer> OverlayLayer;
168 
169 public:
172 
175 
177  virtual bool loadScenarioDescription(const DtFilename& file, const std::map<std::string, std::string>& importData,
179 
181  virtual bool saveScenarioDescription(const DtFilename& file, const DtScenario&) const;
182 
185 
188  virtual bool importIntoSimulation(DtSimManager*);
189 
192  virtual bool importFromSimulation(DtSimManager*, const std::map<std::string, std::string>& exportData,
194 
196  virtual const EquipmentPtr& equipment() const;
197 
199  virtual const OrganizationPtr& organizedOrganization() const;
200 
202  virtual const OrganizationPtr& flatOrganization() const;
203 
205  virtual const OverlayLayer& overlayLayers() const;
206 
208  virtual const ForceSides& forces() const;
209 
211  virtual std::string findValue(const std::map<std::string, DtMsdlScenarioContentsItem>&, const std::string& path) const;
212  virtual std::map<std::string, std::string>
213  findStdMapValue(const std::map<std::string, DtMsdlScenarioContentsItem>&, const std::string& path,
214  const std::set<std::string>& ignore = std::set<std::string>()) const;
215  virtual bool hasValue(const std::map<std::string, DtMsdlScenarioContentsItem>&, const std::string& path) const;
216 
218  virtual std::string convertMapToString(const std::map<std::string, std::string>&) const;
219 
221  virtual bool organizationUsesForce(Msdl_UUID) const;
222 
224  virtual std::string supportedExtensions();
225 
227  virtual bool canImportFile(const DtFilename&);
228 
229 protected:
231  virtual std::string pad(int) const;
232 
234  virtual bool parseMilitaryScenario(xmlNodePtr, const std::map<std::string, std::string>& importData);
235 
237  virtual bool parseScenarioID(xmlNodePtr, const std::map<std::string, std::string>& importData);
238 
240  virtual bool parseOptions(xmlNodePtr, const std::map<std::string, std::string>& importData);
241 
243  virtual bool parseEnvironment(xmlNodePtr, const std::map<std::string, std::string>& importData);
244 
247  virtual bool parseForces(xmlNodePtr,const std::map<std::string, std::string>& importData);
248 
250  virtual bool parseForce(xmlNodePtr, const std::map<std::string, std::string>& importData);
251 
253  virtual bool parsePOC(xmlNodePtr);
254 
256  virtual std::string content(xmlNodePtr) const;
257 
259  virtual bool parseAssociations(xmlNodePtr, Associations&);
260 
262  virtual bool parseAssociation(xmlNodePtr, Associations&);
263 
266  virtual bool parseOrganizations(xmlNodePtr, const std::map<std::string, std::string>& importData);
267 
271  virtual bool parseUnits(xmlNodePtr, const std::map<std::string, std::string>& importData);
272 
276  virtual bool parseUnit(xmlNodePtr, const std::map<std::string, std::string>& importData, DtMsdlSimulatedElement& unit);
277 
279  virtual bool parseEquipmentItem(xmlNodePtr, const std::map<std::string, std::string>& importData, DtMsdlSimulatedElement& unit);
280 
283  virtual void addUnitToFlatOrganization(const DtMsdlSimulatedElement&);
284 
286  virtual void addEquipmentToOrganization(const DtMsdlSimulatedElement&);
287 
291  virtual bool parseEquipment(xmlNodePtr, const std::map<std::string, std::string>& importData);
292 
295  virtual bool parseContents(xmlNodePtr, DtMsdlScenarioContentsItem&);
296 
298  virtual bool parseDisposition(xmlNodePtr, DtMsdlSimulatedElement&);
299 
301  virtual bool parseOverlays(xmlNodePtr, const std::map<std::string, std::string>& importData);
302 
304  virtual bool parseOverlay(xmlNodePtr, const std::map<std::string, std::string>& importData, DtMsdlOverlayLayer&);
305 
308  virtual bool parseTacticalGraphics(xmlNodePtr, const std::map<std::string, std::string>& importData);
309 
312  virtual bool parseTacticalGraphic(xmlNodePtr, const std::map<std::string, std::string>& importData, DtMsdlSimulatedTacticalGraphic&);
313 
315  virtual std::vector<DtMSDLVector> parseAnchorPoints(xmlNodePtr, const std::map<std::string, std::string>& importData);
316 
318  virtual DtMSDLVector parseAnchorPoint(xmlNodePtr, const std::map<std::string, std::string>& importData);
319 
321  virtual DtMSDLVector parseLocation(xmlNodePtr);
322 
324  virtual DtMSDLVector parseLocationGCC(xmlNodePtr);
325 
327  virtual DtMSDLVector parseLocationMGRS(xmlNodePtr);
328 
330  virtual DtMSDLVector parseLocationUTM(xmlNodePtr);
331 
333  virtual DtMSDLVector parseLocationGDC(xmlNodePtr);
334 
336  virtual void convertFlatOrganizationToOrganizationHierarchy();
337 
339  virtual std::string enumerationForUnit(const std::string& symbolIdentifier, const DtMsdlSimulatedElement&);
340 
344  virtual int forceTypeFromName(const std::string&, int curForce, const std::map<std::string, std::string>&) const;
345 
347  virtual std::string countryCodeForForce(Msdl_UUID forceHandle) const;
348 
350  virtual void saveScenarioId(std::ostream&, const DtScenario&) const;
351 
353  virtual void saveOptions(std::ostream&) const;
354 
356  virtual void saveEnvironment(std::ostream&) const;
357 
359  virtual void saveForceSides(std::ostream&) const;
360 
362  virtual void saveForceSide(std::ostream&, const Msdl_UUID&, const DtForceSide&) const;
363 
365  virtual void saveOverlayLayers(std::ostream&) const;
366  virtual void saveOverlayLayer(std::ostream&, const DtMsdlOverlayLayer&) const;
367 
369  virtual void saveTacticalGraphics(std::ostream&) const;
370  virtual void saveTacticalGraphic(std::ostream&, const DtMsdlSimulatedTacticalGraphic&) const;
371 
373  virtual void saveAnchorPoints(std::ostream&, const DtMsdlSimulatedTacticalGraphic&, int indent) const;
374  virtual void saveAnchorPoint(std::ostream&, const DtVector&, int indent) const;
375 
377  virtual void saveOrganizations(std::ostream&) const;
378 
380  virtual void saveUnits(std::ostream&) const;
381  virtual void saveUnit(std::ostream&, DtMsdlSimulatedElement*) const;
382 
384  virtual void saveDisposition(std::ostream&, DtMsdlSimulatedElement*, int indent) const;
385 
387  virtual void saveLocation(std::ostream&, DtMsdlSimulatedElement*, int indent) const;
388  virtual void saveLocation(std::ostream&, const DtMSDLVector&, int indent) const;
389 
391  virtual void saveUnitRelations(std::ostream&, DtMsdlSimulatedElement*) const;
392 
394  virtual void saveEquipmentRelations(std::ostream&, DtMsdlSimulatedElement*) const;
395 
397  virtual void saveUnitModel(std::ostream&, DtMsdlSimulatedElement*) const;
398 
400  virtual void saveEquipmentModel(std::ostream&, DtMsdlSimulatedElement*) const;
401 
404  virtual void saveOneSAFIdentifiers(std::ostream&, const std::string& type, DtMsdlSimulatedElement*,
405  int indent) const;
406 
409  virtual void saveUnitSymbolModifiers(std::ostream&, DtMsdlSimulatedElement*) const;
410  virtual void saveFormationPosition(std::ostream&, DtMsdlSimulatedElement*, int indent) const;
411  virtual void saveOwnFormation(std::ostream&, DtMsdlSimulatedElement*, int indent) const;
412 
413  virtual void saveEquipmentSymbolModifiers(std::ostream&, DtMsdlSimulatedElement*) const;
414  virtual void saveOneSAFBasicLoadInformation(std::ostream&, DtMsdlSimulatedElement*) const;
415 
416  virtual void saveSymbolClassData(std::ostream&, const DtMsdlSimulatedTacticalGraphic&) const;
418 
419  virtual void saveEquipment(std::ostream&) const;
420  virtual void saveEquipmentItem(std::ostream&, DtMsdlSimulatedElement*) const;
421 
424  virtual void finalize();
425 
426 protected:
427  xmlDocPtr myDoc;
429 
434 
437 
439 
442 };
443 
444 namespace DtBufferSerialize
445 {
446  template <typename _Key, typename _Value>
447  std::string encodeForImportData(const std::map<_Key, _Value>& v)
448  {
450  char* buf = new char[size];
451 
453  std::string encoded;
454 
455  int i;
456 
457  for (i = 0; i < size; i++)
458  {
459  encoded += (buf[i] + 1);
460  }
461 
462  delete[] buf;
463 
464  return encoded;
465  }
466 
467  template <typename _Key, typename _Value>
468  void decodeFromImportData(std::map<_Key, _Value>& map,const std::string& s)
469  {
470  int iLimit = s.size(), i;
471  char* buf = new char[iLimit];
472 
473  for (i = 0; i < iLimit; i++)
474  {
475  buf[i] = s[i] - 1;
476  }
477 
478  DtBufferSerialize::decode(map, buf);
479 
480  delete[] buf;
481  }
482 }

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)