VR-Forces Development_Version 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 
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  std::map<std::string, std::string> myExtendedData;
84 };
85 
88 {
89 public:
90  std::string myObjectHandle;
91  std::string mySymbolIdentifier;
92  std::string myAffiliation;
93  std::string myOverlayHandle;
94  std::string mySymbolClassChoice;
95  std::string myName;
96  std::string myEnumeration;
97  std::string myForceHandle;
99  std::map<std::string, DtMsdlScenarioContentsItem> myContents;
100  int myColor;
102 
104 
106  std::vector<DtVector> myLocations;
107 
110  std::map<std::string, std::string> myExtendedData;
111 };
112 
116 {
117 public:
119  std::string myName;
120  bool myVisible;
121  std::string myType;
122 
123  std::string mySuperiorHandle;
124 
125  std::map<std::string, DtMsdlScenarioContentsItem> myContents;
126  std::map<Msdl_UUID, DtMsdlSimulatedTacticalGraphic> myTacticalGraphics;
127 };
128 
129 typedef std::map<Msdl_UUID, std::string> Associations;
130 
133 {
134 public:
136 
137  std::string myType;
138  std::string myName;
139  std::string myCountryCode;
142 };
144 
149 {
150 public:
151  typedef std::map<Msdl_UUID, DtForceSide> ForceSides;
152  typedef std::map<Msdl_UUID, DtMsdlSimulatedElement*> OrganizationPtr;
153  typedef std::map<Msdl_UUID, DtMsdlSimulatedElement*> EquipmentPtr;
154  typedef std::map<Msdl_UUID, DtMsdlOverlayLayer> OverlayLayer;
155 
156 public:
159 
162 
164  virtual bool loadScenarioDescription(const DtFilename& file, const std::map<std::string, std::string>& importData,
166 
168  virtual bool saveScenarioDescription(const DtFilename& file, const DtScenario&) const;
169 
172 
175  virtual bool importIntoSimulation(DtSimManager*);
176 
179  virtual bool importFromSimulation(DtSimManager*, const std::map<std::string, std::string>& exportData,
181 
183  virtual const EquipmentPtr& equipment() const;
184 
186  virtual const OrganizationPtr& organizedOrganization() const;
187 
189  virtual const OrganizationPtr& flatOrganization() const;
190 
192  virtual const OverlayLayer& overlayLayers() const;
193 
195  virtual const ForceSides& forces() const;
196 
198  virtual std::string findValue(const std::map<std::string, DtMsdlScenarioContentsItem>&, const std::string& path) const;
199  virtual std::map<std::string, std::string>
200  findStdMapValue(const std::map<std::string, DtMsdlScenarioContentsItem>&, const std::string& path,
201  const std::set<std::string>& ignore = std::set<std::string>()) const;
202  virtual bool hasValue(const std::map<std::string, DtMsdlScenarioContentsItem>&, const std::string& path) const;
203 
205  virtual std::string convertMapToString(const std::map<std::string, std::string>&) const;
206 
208  virtual bool organizationUsesForce(Msdl_UUID) const;
209 
211  virtual std::string supportedExtensions();
212 
214  virtual bool canImportFile(const DtFilename&);
215 
216 protected:
218  virtual std::string pad(int) const;
219 
221  virtual bool parseMilitaryScenario(xmlNodePtr, const std::map<std::string, std::string>& importData);
222 
224  virtual bool parseScenarioID(xmlNodePtr, const std::map<std::string, std::string>& importData);
225 
227  virtual bool parseOptions(xmlNodePtr, const std::map<std::string, std::string>& importData);
228 
230  virtual bool parseEnvironment(xmlNodePtr, const std::map<std::string, std::string>& importData);
231 
234  virtual bool parseForces(xmlNodePtr,const std::map<std::string, std::string>& importData);
235 
237  virtual bool parseForce(xmlNodePtr, const std::map<std::string, std::string>& importData);
238 
240  virtual bool parsePOC(xmlNodePtr);
241 
243  virtual std::string content(xmlNodePtr) const;
244 
246  virtual bool parseAssociations(xmlNodePtr, Associations&);
247 
249  virtual bool parseAssociation(xmlNodePtr, Associations&);
250 
253  virtual bool parseOrganizations(xmlNodePtr, const std::map<std::string, std::string>& importData);
254 
258  virtual bool parseUnits(xmlNodePtr, const std::map<std::string, std::string>& importData);
259 
263  virtual bool parseUnit(xmlNodePtr, const std::map<std::string, std::string>& importData, DtMsdlSimulatedElement& unit);
264 
266  virtual bool parseEquipmentItem(xmlNodePtr, const std::map<std::string, std::string>& importData, DtMsdlSimulatedElement& unit);
267 
270  virtual void addUnitToFlatOrganization(const DtMsdlSimulatedElement&);
271 
273  virtual void addEquipmentToOrganization(const DtMsdlSimulatedElement&);
274 
278  virtual bool parseEquipment(xmlNodePtr, const std::map<std::string, std::string>& importData);
279 
282  virtual bool parseContents(xmlNodePtr, DtMsdlScenarioContentsItem&);
283 
285  virtual bool parseDisposition(xmlNodePtr, DtMsdlSimulatedElement&);
286 
288  virtual bool parseOverlays(xmlNodePtr, const std::map<std::string, std::string>& importData);
289 
291  virtual bool parseOverlay(xmlNodePtr, const std::map<std::string, std::string>& importData, DtMsdlOverlayLayer&);
292 
295  virtual bool parseTacticalGraphics(xmlNodePtr, const std::map<std::string, std::string>& importData);
296 
299  virtual bool parseTacticalGraphic(xmlNodePtr, const std::map<std::string, std::string>& importData, DtMsdlSimulatedTacticalGraphic&);
300 
302  virtual std::vector<DtVector> parseAnchorPoints(xmlNodePtr, const std::map<std::string, std::string>& importData);
303 
305  virtual DtVector parseAnchorPoint(xmlNodePtr, const std::map<std::string, std::string>& importData);
306 
308  virtual DtVector parseLocation(xmlNodePtr);
309 
311  virtual DtVector parseLocationGCC(xmlNodePtr);
312 
314  virtual DtVector parseLocationMGRS(xmlNodePtr);
315 
317  virtual DtVector parseLocationUTM(xmlNodePtr);
318 
320  virtual DtVector parseLocationGDC(xmlNodePtr);
321 
323  virtual void convertFlatOrganizationToOrganizationHierarchy();
324 
326  virtual std::string enumerationForUnit(const std::string& symbolIdentifier, const DtMsdlSimulatedElement&);
327 
331  virtual int forceTypeFromName(const std::string&, int curForce, const std::map<std::string, std::string>&) const;
332 
334  virtual std::string countryCodeForForce(Msdl_UUID forceHandle) const;
335 
337  virtual void saveScenarioId(std::ostream&, const DtScenario&) const;
338 
340  virtual void saveOptions(std::ostream&) const;
341 
343  virtual void saveEnvironment(std::ostream&) const;
344 
346  virtual void saveForceSides(std::ostream&) const;
347 
349  virtual void saveForceSide(std::ostream&, const Msdl_UUID&, const DtForceSide&) const;
350 
352  virtual void saveOverlayLayers(std::ostream&) const;
353  virtual void saveOverlayLayer(std::ostream&, const DtMsdlOverlayLayer&) const;
354 
356  virtual void saveTacticalGraphics(std::ostream&) const;
357  virtual void saveTacticalGraphic(std::ostream&, const DtMsdlSimulatedTacticalGraphic&) const;
358 
360  virtual void saveAnchorPoints(std::ostream&, const DtMsdlSimulatedTacticalGraphic&, int indent) const;
361  virtual void saveAnchorPoint(std::ostream&, const DtVector&, int indent) const;
362 
364  virtual void saveOrganizations(std::ostream&) const;
365 
367  virtual void saveUnits(std::ostream&) const;
368  virtual void saveUnit(std::ostream&, DtMsdlSimulatedElement*) const;
369 
371  virtual void saveDisposition(std::ostream&, DtMsdlSimulatedElement*, int indent) const;
372 
374  virtual void saveLocation(std::ostream&, DtMsdlSimulatedElement*, int indent) const;
375  virtual void saveLocation(std::ostream&, const DtVector&, int indent) const;
376 
378  virtual void saveUnitRelations(std::ostream&, DtMsdlSimulatedElement*) const;
379 
381  virtual void saveEquipmentRelations(std::ostream&, DtMsdlSimulatedElement*) const;
382 
384  virtual void saveUnitModel(std::ostream&, DtMsdlSimulatedElement*) const;
385 
387  virtual void saveEquipmentModel(std::ostream&, DtMsdlSimulatedElement*) const;
388 
391  virtual void saveOneSAFIdentifiers(std::ostream&, const std::string& type, DtMsdlSimulatedElement*,
392  int indent) const;
393 
396  virtual void saveUnitSymbolModifiers(std::ostream&, DtMsdlSimulatedElement*) const;
397  virtual void saveFormationPosition(std::ostream&, DtMsdlSimulatedElement*, int indent) const;
398  virtual void saveOwnFormation(std::ostream&, DtMsdlSimulatedElement*, int indent) const;
399 
400  virtual void saveEquipmentSymbolModifiers(std::ostream&, DtMsdlSimulatedElement*) const;
401  virtual void saveOneSAFBasicLoadInformation(std::ostream&, DtMsdlSimulatedElement*) const;
402 
403  virtual void saveSymbolClassData(std::ostream&, const DtMsdlSimulatedTacticalGraphic&) const;
405 
406  virtual void saveEquipment(std::ostream&) const;
407  virtual void saveEquipmentItem(std::ostream&, DtMsdlSimulatedElement*) const;
408 
411  virtual void finalize();
412 
413 protected:
414  xmlDocPtr myDoc;
416 
421 
424 
426 
429 };
430 
431 namespace DtBufferSerialize
432 {
433  template <typename _Key, typename _Value>
434  std::string encodeForImportData(const std::map<_Key, _Value>& v)
435  {
436  int size = DtBufferSerialize::getSize(v);
437  char* buf = new char[size];
438 
440  std::string encoded;
441 
442  int i;
443 
444  for (i = 0; i < size; i++)
445  {
446  encoded += (buf[i] + 1);
447  }
448 
449  delete[] buf;
450 
451  return encoded;
452  }
453 
454  template <typename _Key, typename _Value>
455  void decodeFromImportData(std::map<_Key, _Value>& map,const std::string& s)
456  {
457  int iLimit = s.size(), i;
458  char* buf = new char[iLimit];
459 
460  for (i = 0; i < iLimit; i++)
461  {
462  buf[i] = s[i] - 1;
463  }
464 
465  DtBufferSerialize::decode(map, buf);
466 
467  delete[] buf;
468  }
469 }

Document ID: Generated on Tue Mar 8 22:13:38 EST 2016 from SVN revision 162938
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)