VR-Forces 4.7 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties 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 
176  virtual bool loadScenarioDescription(const DtFilename& file, const std::map<std::string, std::string>& importData);
177 
179  virtual bool loadScenarioDescription(const DtFilename& file, const std::map<std::string, std::string>& importData,
181 
183  virtual bool saveScenarioDescription(const DtFilename& file, const DtScenario&) const;
184 
187 
190  virtual bool importIntoSimulation(DtSimManager*);
191 
194  virtual bool importFromSimulation(DtSimManager*, const std::map<std::string, std::string>& exportData,
196 
198  virtual const EquipmentPtr& equipment() const;
199 
201  virtual const OrganizationPtr& organizedOrganization() const;
202 
204  virtual const OrganizationPtr& flatOrganization() const;
205 
207  virtual const OverlayLayer& overlayLayers() const;
208 
210  virtual const ForceSides& forces() const;
211 
213  virtual std::string findValue(const std::map<std::string, DtMsdlScenarioContentsItem>&, const std::string& path) const;
214  virtual std::map<std::string, std::string>
215  findStdMapValue(const std::map<std::string, DtMsdlScenarioContentsItem>&, const std::string& path,
216  const std::set<std::string>& ignore = std::set<std::string>()) const;
217  virtual bool hasValue(const std::map<std::string, DtMsdlScenarioContentsItem>&, const std::string& path) const;
218 
220  virtual std::string convertMapToString(const std::map<std::string, std::string>&) const;
221 
223  virtual bool organizationUsesForce(Msdl_UUID) const;
224 
226  virtual std::string supportedExtensions();
227 
229  virtual bool canImportFile(const DtFilename&);
230 
232  virtual void clear();
233 
235  virtual DtObjectParser * parser();
236 
237 protected:
239  virtual std::string pad(int) const;
240 
242  virtual bool parseMilitaryScenario(xmlNodePtr, const std::map<std::string, std::string>& importData);
243 
245  virtual bool parseScenarioID(xmlNodePtr, const std::map<std::string, std::string>& importData);
246 
248  virtual bool parseOptions(xmlNodePtr, const std::map<std::string, std::string>& importData);
249 
251  virtual bool parseEnvironment(xmlNodePtr, const std::map<std::string, std::string>& importData);
252 
255  virtual bool parseForces(xmlNodePtr,const std::map<std::string, std::string>& importData);
256 
258  virtual bool parseForce(xmlNodePtr, const std::map<std::string, std::string>& importData);
259 
261  virtual bool parsePOC(xmlNodePtr);
262 
264  virtual std::string content(xmlNodePtr) const;
265 
267  virtual bool parseAssociations(xmlNodePtr, Associations&);
268 
270  virtual bool parseAssociation(xmlNodePtr, Associations&);
271 
274  virtual bool parseOrganizations(xmlNodePtr, const std::map<std::string, std::string>& importData);
275 
279  virtual bool parseUnits(xmlNodePtr, const std::map<std::string, std::string>& importData);
280 
284  virtual bool parseUnit(xmlNodePtr, const std::map<std::string, std::string>& importData, DtMsdlSimulatedElement& unit);
285 
287  virtual bool parseEquipmentItem(xmlNodePtr, const std::map<std::string, std::string>& importData, DtMsdlSimulatedElement& unit);
288 
291  virtual void addUnitToFlatOrganization(const DtMsdlSimulatedElement&);
292 
294  virtual void addEquipmentToOrganization(const DtMsdlSimulatedElement&);
295 
299  virtual bool parseEquipment(xmlNodePtr, const std::map<std::string, std::string>& importData);
300 
303  virtual bool parseContents(xmlNodePtr, DtMsdlScenarioContentsItem&);
304 
306  virtual bool parseDisposition(xmlNodePtr, DtMsdlSimulatedElement&);
307 
309  virtual bool parseOverlays(xmlNodePtr, const std::map<std::string, std::string>& importData);
310 
312  virtual bool parseOverlay(xmlNodePtr, const std::map<std::string, std::string>& importData, DtMsdlOverlayLayer&);
313 
316  virtual bool parseTacticalGraphics(xmlNodePtr, const std::map<std::string, std::string>& importData);
317 
320  virtual bool parseTacticalGraphic(xmlNodePtr, const std::map<std::string, std::string>& importData, DtMsdlSimulatedTacticalGraphic&);
321 
323  virtual std::vector<DtMSDLVector> parseAnchorPoints(xmlNodePtr, const std::map<std::string, std::string>& importData);
324 
326  virtual DtMSDLVector parseAnchorPoint(xmlNodePtr, const std::map<std::string, std::string>& importData);
327 
329  virtual DtMSDLVector parseLocation(xmlNodePtr);
330 
332  virtual DtMSDLVector parseLocationGCC(xmlNodePtr);
333 
335  virtual DtMSDLVector parseLocationMGRS(xmlNodePtr);
336 
338  virtual DtMSDLVector parseLocationUTM(xmlNodePtr);
339 
341  virtual DtMSDLVector parseLocationGDC(xmlNodePtr);
342 
344  virtual void convertFlatOrganizationToOrganizationHierarchy();
345 
347  virtual std::string enumerationForUnit(const std::string& symbolIdentifier, const DtMsdlSimulatedElement&);
348 
352  virtual int forceTypeFromName(const std::string&, int curForce, const std::map<std::string, std::string>&) const;
353 
355  virtual std::string countryCodeForForce(Msdl_UUID forceHandle) const;
356 
358  virtual void saveScenarioId(std::ostream&, const DtScenario&) const;
359 
361  virtual void saveAdditionalScenarioInformation(std::ostream&, const DtScenario&) const;
362 
364  virtual void saveOptions(std::ostream&) const;
365 
367  virtual void saveEnvironment(std::ostream&) const;
368 
370  virtual void saveForceSides(std::ostream&) const;
371 
373  virtual void saveForceSide(std::ostream&, const Msdl_UUID&, const DtForceSide&) const;
374 
376  virtual void saveOverlayLayers(std::ostream&) const;
377  virtual void saveOverlayLayer(std::ostream&, const DtMsdlOverlayLayer&) const;
378 
380  virtual void saveTacticalGraphics(std::ostream&) const;
381  virtual void saveTacticalGraphic(std::ostream&, const DtMsdlSimulatedTacticalGraphic&) const;
382 
384  virtual void saveAnchorPoints(std::ostream&, const DtMsdlSimulatedTacticalGraphic&, int indent) const;
385  virtual void saveAnchorPoint(std::ostream&, const DtVector&, int indent) const;
386 
388  virtual void saveOrganizations(std::ostream&) const;
389 
391  virtual void saveUnits(std::ostream&) const;
392  virtual void saveUnit(std::ostream&, DtMsdlSimulatedElement*) const;
393 
395  virtual void saveDisposition(std::ostream&, DtMsdlSimulatedElement*, int indent) const;
396 
398  virtual void saveLocation(std::ostream&, DtMsdlSimulatedElement*, int indent) const;
399  virtual void saveLocation(std::ostream&, const DtMSDLVector&, int indent) const;
400 
402  virtual void saveUnitRelations(std::ostream&, DtMsdlSimulatedElement*) const;
403 
405  virtual void saveEquipmentRelations(std::ostream&, DtMsdlSimulatedElement*) const;
406 
408  virtual void saveUnitModel(std::ostream&, DtMsdlSimulatedElement*) const;
409 
411  virtual void saveEquipmentModel(std::ostream&, DtMsdlSimulatedElement*) const;
412 
415  virtual void saveOneSAFIdentifiers(std::ostream&, const std::string& type, DtMsdlSimulatedElement*,
416  int indent) const;
417 
420  virtual void saveUnitSymbolModifiers(std::ostream&, DtMsdlSimulatedElement*) const;
421  virtual void saveFormationPosition(std::ostream&, DtMsdlSimulatedElement*, int indent) const;
422  virtual void saveOwnFormation(std::ostream&, DtMsdlSimulatedElement*, int indent) const;
423 
424  virtual void saveEquipmentSymbolModifiers(std::ostream&, DtMsdlSimulatedElement*) const;
425  virtual void saveOneSAFBasicLoadInformation(std::ostream&, DtMsdlSimulatedElement*) const;
426 
427  virtual void saveSymbolClassData(std::ostream&, const DtMsdlSimulatedTacticalGraphic&) const;
429 
430  virtual void saveEquipment(std::ostream&) const;
431  virtual void saveEquipmentItem(std::ostream&, DtMsdlSimulatedElement*) const;
432 
435  virtual void finalize();
436 
437  virtual int nextForceType() const;
438 
439 protected:
440  xmlDocPtr myDoc;
442 
447 
450 
452 
455 };
456 
457 namespace DtBufferSerialize
458 {
459  template <typename _Key, typename _Value>
460  std::string encodeForImportData(const std::map<_Key, _Value>& v)
461  {
463  char* buf = new char[size];
464 
466  std::string encoded;
467 
468  int i;
469 
470  for (i = 0; i < size; i++)
471  {
472  encoded += (buf[i] + 1);
473  }
474 
475  delete[] buf;
476 
477  return encoded;
478  }
479 
480  template <typename _Key, typename _Value>
481  void decodeFromImportData(std::map<_Key, _Value>& map,const std::string& s)
482  {
483  int iLimit = s.size(), i;
484  char* buf = new char[iLimit];
485 
486  for (i = 0; i < iLimit; i++)
487  {
488  buf[i] = s[i] - 1;
489  }
490 
491  DtBufferSerialize::decode(map, buf);
492 
493  delete[] buf;
494  }
495 }

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)