VR-Forces 5.0.1 Developer's Guide
 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 DtLocalObject;
31 
32 #define DtImportDataSetCountryForForce "DtImportDataSetCountryForForce"
33 
34 
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  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 
191 
194  virtual bool importFromSimulation(DtSimulationServices*, 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 }
std::string myName
Definition: msdlScenarioDescriptionImporterExporter.h:108
double myPhysicalLineWidth
Definition: msdlScenarioDescriptionImporterExporter.h:121
OverlayLayer myOverlayLayers
Definition: msdlScenarioDescriptionImporterExporter.h:446
std::map< std::string, DtMsdlScenarioContentsItem > myChildren
Definition: msdlScenarioDescriptionImporterExporter.h:52
std::string myEnumeration
Definition: msdlScenarioDescriptionImporterExporter.h:75
DT_DLL_readerWriter int getSize(const DtString &val)
The number of bytes required to encode the value.
std::map< Msdl_UUID, DtMsdlSimulatedElement * > OrganizationPtr
Definition: msdlScenarioDescriptionImporterExporter.h:165
double mySpeed
Definition: msdlScenarioDescriptionImporterExporter.h:86
std::map< std::string, std::string > myExtendedData
Definition: msdlScenarioDescriptionImporterExporter.h:96
double myHeading
Heading is in radians.
Definition: msdlScenarioDescriptionImporterExporter.h:85
DtMSDLVector()
Definition: msdlScenarioDescriptionImporterExporter.h:58
std::map< std::string, std::string > myExtendedData
Definition: msdlScenarioDescriptionImporterExporter.h:123
Class that represents an overlay layer. Overlay layers will contain the tactical graphics that will b...
Definition: msdlScenarioDescriptionImporterExporter.h:128
OrganizationPtr myFlatOrganization
Definition: msdlScenarioDescriptionImporterExporter.h:444
DT_DLL_vrfutil void decodeFromImportData(DtMsdlHierarchyPropertyMappings &, const std::string &)
Definition: scenario.h:52
std::string mySymbolIdentifier
Definition: msdlScenarioDescriptionImporterExporter.h:104
std::string myCountryCode
Definition: msdlScenarioDescriptionImporterExporter.h:152
DtMSDLVector myLocation
Location is in geocentric.
Definition: msdlScenarioDescriptionImporterExporter.h:82
The main class that is used to import/export values from/to an Msdl file. This class will not actuall...
Definition: msdlScenarioDescriptionImporterExporter.h:161
virtual DtScenarioDescriptionImporterExporter * clone()=0
Clone to create a new copy of the object. Will be used as a &quot;clean&quot; version for import.
DtMsdlHierarchyPropertyMappings myHierarchyPropertyMappings
Definition: msdlScenarioDescriptionImporterExporter.h:451
EquipmentPtr myEquipment
Definition: msdlScenarioDescriptionImporterExporter.h:445
voidpf void uLong size
Definition: ioapi.h:39
std::string mySuperiorHandle
Definition: msdlScenarioDescriptionImporterExporter.h:136
OrganizationPtr myOrganizedOrganization
Definition: msdlScenarioDescriptionImporterExporter.h:443
std::string myName
Definition: msdlScenarioDescriptionImporterExporter.h:49
The DtExtent represents an axis-aligned 3d bounding box.
Definition: extent.h:43
int myForceType
Definition: msdlScenarioDescriptionImporterExporter.h:148
std::map< Msdl_UUID, DtMsdlSimulatedElement * > mySubordinates
Definition: msdlScenarioDescriptionImporterExporter.h:95
std::string myAffiliation
Definition: msdlScenarioDescriptionImporterExporter.h:105
bool myAggregated
Definition: msdlScenarioDescriptionImporterExporter.h:88
DtMSDLVector(const DtVector &orig)
Definition: msdlScenarioDescriptionImporterExporter.h:59
This class is the interface for a scenario description importer/exporter. Subclasses will implement t...
Definition: scenarioDescriptionImporterExporter.h:27
virtual bool saveScenarioDescription(const DtFilename &file, const DtScenario &) const =0
Saves the scenario description information to the specified file.
voidpf void * buf
Definition: ioapi.h:39
std::string myName
Definition: msdlScenarioDescriptionImporterExporter.h:132
OrganizationPtr myPendingMatches
Matches, that during reading, have not been made for units as of yet.
Definition: msdlScenarioDescriptionImporterExporter.h:449
std::string myForceHandle
Definition: msdlScenarioDescriptionImporterExporter.h:110
Associations myAssociations
Definition: msdlScenarioDescriptionImporterExporter.h:154
This class is the base class for parsing out creation information from various textual formats...
Definition: createObjectParser.h:48
std::string mySymbolIdentifier
Definition: msdlScenarioDescriptionImporterExporter.h:76
std::string myOneSAFName
Definition: msdlScenarioDescriptionImporterExporter.h:78
std::string myFormation
Definition: msdlScenarioDescriptionImporterExporter.h:79
DtLocalObject * myObject
Definition: msdlScenarioDescriptionImporterExporter.h:116
std::map< Msdl_UUID, DtMsdlOverlayLayer > OverlayLayer
Definition: msdlScenarioDescriptionImporterExporter.h:167
std::string mySuperiorHandle
Definition: msdlScenarioDescriptionImporterExporter.h:90
DtMSDLVector(const DtMSDLVector &orig)
Definition: msdlScenarioDescriptionImporterExporter.h:60
Definition: msdlHierarchyPropertyMappings.h:56
Msdl_UUID myAllegianceHandle
Definition: msdlScenarioDescriptionImporterExporter.h:153
std::map< Msdl_UUID, DtMsdlSimulatedTacticalGraphic > myTacticalGraphics
Definition: msdlScenarioDescriptionImporterExporter.h:139
std::map< std::string, DtMsdlScenarioContentsItem > myContents
Definition: msdlScenarioDescriptionImporterExporter.h:112
std::string mySymbolClassChoice
Definition: msdlScenarioDescriptionImporterExporter.h:107
Msdl_UUID myObjectHandle
Definition: msdlScenarioDescriptionImporterExporter.h:72
virtual std::string supportedExtensions()=0
Returns a space delimeted list of the extensions supported (i.e. &quot;xml&quot; or &quot;csv txt&quot;) ...
xmlNode * xmlNodePtr
Definition: DtLightPointTable.h:20
virtual bool importFromSimulation(DtSimulationServices *, const std::map< std::string, std::string > &exportData, const DtMsdlHierarchyPropertyMappings &)=0
Imports from the simulation into internal structures. DtSimulationServices is not defined at this lev...
xmlDocPtr myDoc
Definition: msdlScenarioDescriptionImporterExporter.h:440
bool myVisible
Definition: msdlScenarioDescriptionImporterExporter.h:133
std::string myType
Definition: msdlScenarioDescriptionImporterExporter.h:134
DT_DLL_readerWriter char * encode(const DtFilename &val, char *buffer)
Serializes the provided value val into buffer. buffer must have at least the number of bytes returned...
Class that represents a tactical graphic element.
Definition: msdlScenarioDescriptionImporterExporter.h:100
virtual bool importIntoSimulation(DtSimulationServices *)=0
Imports into the simulation. DtSimulationServices is not defined at this level, so subclasses at vrfo...
DtMSDLVector & operator=(const DtMSDLVector &orig)
Definition: msdlScenarioDescriptionImporterExporter.h:62
std::string myName
ForcesSideType.
Definition: msdlScenarioDescriptionImporterExporter.h:151
std::string Msdl_UUID
These structures will be used to keep track of the simulation data that is to be imported into the si...
Definition: msdlScenarioDescriptionImporterExporter.h:39
DtMSDLVector & operator=(const DtVector &orig)
Definition: msdlScenarioDescriptionImporterExporter.h:63
DT_DLL_vrfutil std::string encodeForImportData(const DtMsdlHierarchyPropertyMappings &)
std::map< std::string, DtMsdlScenarioContentsItem > myContents
Definition: msdlScenarioDescriptionImporterExporter.h:138
virtual DtObjectParser * parser()=0
Returns parser, if doesn&#39;t exist yet will create it.
Msdl_UUID myObjectHandle
Definition: msdlScenarioDescriptionImporterExporter.h:131
std::string myObjectHandle
Definition: msdlScenarioDescriptionImporterExporter.h:103
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:89
ForceSides myForces
Definition: msdlScenarioDescriptionImporterExporter.h:441
std::map< std::string, DtMsdlScenarioContentsItem > myContents
Definition: msdlScenarioDescriptionImporterExporter.h:94
Contains the declaration of the DtExtent class.
double myPhysicalLineHeight
Definition: msdlScenarioDescriptionImporterExporter.h:122
ForcesSide structure. Used to hold force information.
Definition: msdlScenarioDescriptionImporterExporter.h:145
std::string myOverlayHandle
Definition: msdlScenarioDescriptionImporterExporter.h:106
#define DT_DLL_vrfutil
This file is used to determine how to build Disable inconsistent dll linkage warning Visual Studio 6...
Definition: vrfutilDefines.h:34
int myColor
Definition: msdlScenarioDescriptionImporterExporter.h:113
std::string myMilitaryEnumeration
Definition: msdlScenarioDescriptionImporterExporter.h:77
virtual bool canImportFile(const DtFilename &)=0
Returns true if the supplied file can be loaded by this importer.
DtExtent myAreaOfInterest
Corners must be in geocentric.
Definition: msdlScenarioDescriptionImporterExporter.h:454
std::string myEnvironmentalFormattingData
Definition: msdlScenarioDescriptionImporterExporter.h:111
DT_DLL_readerWriter const char * decode(DtString &val, const char *buffer)
Decodes a value from buffer and places the result in val of the type specified by val...
Msdl_UUID myForceHandle
Definition: msdlScenarioDescriptionImporterExporter.h:74
std::string myEnumeration
Definition: msdlScenarioDescriptionImporterExporter.h:109
std::string myValue
Definition: msdlScenarioDescriptionImporterExporter.h:50
int myAppearance
Definition: msdlScenarioDescriptionImporterExporter.h:114
bool locationAGL
Definition: msdlScenarioDescriptionImporterExporter.h:63
std::string myName
Definition: msdlScenarioDescriptionImporterExporter.h:73
std::map< Msdl_UUID, std::string > Associations
These structures will be used to keep track of the simulation data that is to be imported into the si...
Definition: msdlScenarioDescriptionImporterExporter.h:142
std::vector< DtMSDLVector > myLocations
All points are in geocentric.
Definition: msdlScenarioDescriptionImporterExporter.h:119
DtLocalObject * myObject
Definition: msdlScenarioDescriptionImporterExporter.h:92
Class that will keep track of all XML data that is not already parsed as part of the import process...
Definition: msdlScenarioDescriptionImporterExporter.h:46
Definition: msdlScenarioDescriptionImporterExporter.h:55
std::map< Msdl_UUID, DtForceSide > ForceSides
Definition: msdlScenarioDescriptionImporterExporter.h:164
Class that represents a simulated element (aggregate or entity) in the simulation.
Definition: msdlScenarioDescriptionImporterExporter.h:69
std::map< Msdl_UUID, DtMsdlSimulatedElement * > EquipmentPtr
Definition: msdlScenarioDescriptionImporterExporter.h:166
virtual bool loadScenarioDescription(const DtFilename &file, const std::map< std::string, std::string > &importData)=0
A locally simulated VRF object. Holds all internal and external data for the object, and provides access to both the current frame and next frame state data for the object. All current frame data is read-only, and next-frame data can be written to. No thread safety guarantees are made on this object during the simulation frame and it should only be accessed by the thread that is simulating the object.
Definition: localObject.h:86

Document ID: Generated on Mon Jun 20 00:38:30 EDT 2022 from SVN revision 244029
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)