VR-Link API Documentation for HLA 1.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
vlFedTarget.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 1992-2010 VT MAK
3 ** All rights reserved.
4 *********************************************************************/
9 #pragma once
10 
11 
12 #include <map>
13 #include <set>
14 #include <vector>
15 #include <cmath>
16 #include "vlMachineTypes.h"
17 #include <mtl/fedTargetHelper.h>
18 #include <vlutil/vlString.h>
19 #include "vlutil/vlUtil.h"
20 #include "vlutil/vlSmartPointers.h"
22 
23 #ifdef DtUSE_UTILITIES_NAMESPACE
24 namespace DtUSE_UTILITIES_NAMESPACE
25 {
26 #endif
27 
28  // Forward Declaration
29  /*class DtTimeType;
30  class DtUserSuppliedTagsType;
31  class DtSynchronizationPointsType;
32  class DtTransportationType;
33  class DtUpdateRateType;
34 
35  class DtBasicDataRepresentationType;
36  class DtSimpleDatatypeType;
37  class DtEnumeratedDatatypeType;
38  class DtArrayDatatypeType;
39  class DtFixedRecordDatatypeType;
40  class DtVariantRecordDatatypeType;
41 
42  class DtNotesType;*/
43 
44  typedef std::set<DtBoost::shared_ptr<DtUpdateRateType>, FomTypeCompare<DtUpdateRateType> > DtUpdateRateSetT;
45  typedef std::set<DtBoost::shared_ptr<DtSynchronizationPointsType>, FomTypeCompare<DtSynchronizationPointsType> > DtSyncPointSetT;
46  typedef std::set<DtBoost::shared_ptr<DtTransportationType>, FomTypeCompare<DtTransportationType> > DtTransportationSetT;
47  typedef std::set<DtBoost::shared_ptr<DtNotesType>, FomTypeCompare<DtNotesType> > DtNotesSetT;
49  typedef std::set< DtBoost::shared_ptr<DtTimeType> > DtTimeTypeSetT;
50  typedef std::set< DtBoost::shared_ptr<DtUserSuppliedTagsType> > DtUserDefinedTagsSetT;
51  typedef std::pair<DtString, DtString> ClassAttributeNamePair;
52 
53  typedef std::pair<DtString, DtString > DtNameTypePair;
54 
55  typedef std::set<DtNameTypePair> DtNameTypePairSet;
56  typedef std::pair<DtString, ClassAttributeNamePair> DtNameClassAttributeNamePair;
57  typedef std::set<DtNameClassAttributeNamePair> DtNameClassAttributeNamePairSet;
58 
59  enum DtFomType
60  {
62  DtFom13 = 1,
63  DtFom1516 = 2,
65  };
66 
68  {
72  };
73 
75  {
79  };
80 
82  {
84  Yes,
86  };
87 
91  {
98  };
99 
100  typedef void (*fptr)(void *);
101 
106 
108  {
109  public:
110 
112  DtFedTarget();
113 
115  virtual ~DtFedTarget();
116 
118  DtFedTarget(const DtFedTarget& orig);
119 
121  DtFedTarget& operator=(const DtFedTarget& orig);
122 
124  virtual void setFomType(DtFomType type);
125  virtual DtFomType fomType();
126 
128  virtual void addSpace(const char* name);
129 
132  virtual void addDimension(const char* SpaceName, const char* dimName);
133 
135  virtual void addDimension(const char* dimName, unsigned long upperBound,
136  unsigned long defaultLowerBound, unsigned long defaultUpperBound,
137  bool excluded, const DtString& normalization);
138 
141  virtual bool addInterClass(const char* name,
142  const char* baseName, DtTransportType transport,
143  DtOrderType order, const char* space=0) = 0;
144 
147  virtual void addParameter(const char* className,
148  const char* paramName) = 0;
149 
152  virtual bool addInteractionDimension(const char* interactionName,
153  const char* dimension) = 0;
154 
157  virtual bool addObjClass(const char* name,
158  const char* baseName) = 0;
159 
162  virtual void addAttribute(const char* className, const char* attrName,
163  DtTransportType transport, DtOrderType order, DtSharingType sharing,
164  DtFomUpdateType updateType, const DtString& updateCondition,
165  DtOwnershipType ownershipType, const DtString& semantics,
166  const char* spaceName=NULL ) = 0;
167 
170  virtual void addAttribute(const char* className,
171  const char* attributeName, DtTransportType transport,
172  DtOrderType order, const char* space=0) = 0;
173 
176  virtual bool addAttributeDimension(const char* className,
177  const char* attrName, const char* dimName) = 0;
178 
179  //-------------------------------------------------------------------------
181  //-------------------------------------------------------------------------
182 
184  virtual bool autoProvide() const;
185  virtual void setAutoProvide(bool value);
186 
188  virtual bool conveyRegionDesignatorSets() const;
189  virtual void setConveyRegionDesignatorSets(bool value);
190 
192  virtual bool conveyProducingFederate() const;
193  virtual void setConveyProducingFederate(bool value);
194 
196  virtual bool attributeScopeAdvisory() const;
197  virtual void setAttributeScopeAdvisory(bool value);
198 
200  virtual bool attributeRelevanceAdvisory() const;
201  virtual void setAttributeRelevanceAdvisory(bool value);
202 
204  virtual bool objectClassRelevanceAdvisory() const;
205  virtual void setObjectClassRelevanceAdvisory(bool value);
206 
208  virtual bool interactionRelevanceAdvisory() const;
209  virtual void setInteractionRelevanceAdvisory(bool value);
210 
212  virtual bool serviceReporting() const;
213  virtual void setServiceReporting(bool value);
214 
216  virtual bool exceptionReporting() const;
217  virtual void setExceptionReporting(bool value);
218 
220  virtual bool delaySubscriptionEvaluation() const;
221  virtual void setDelaySubscriptionEvaluation(bool value);
222 
224  virtual DtResignAction automaticResignAction() const;
225  virtual void setAutomaticResignAction(DtResignAction value);
226 
227  virtual bool UpdateRateConsistencyTest( const DtUpdateRateType & updateRate );
228  virtual bool knownUpdateRate( const DtUpdateRateType & updateRate ) const;
229  virtual unsigned int numUpdateRates() const;
230  virtual void addUpdateRate( DtUpdateRateType * updateRate);
231 
232  virtual bool SyncPointConsistencyTest( const DtSynchronizationPointsType & syncName );
233  virtual bool knownSyncPoint( const DtSynchronizationPointsType & syncName ) const;
234  virtual void addSyncPoint(DtSynchronizationPointsType * syncName);
235  virtual unsigned int numSyncPoints() const;
236 
237  virtual bool knownTransportType( const DtTransportationType & transportName) const;
238  virtual bool TransportTypeConsistencyTest(const DtTransportationType & transportName);
239  virtual unsigned int numTransports() const;
240  virtual void addTransportType( DtTransportationType * transportName );
241  virtual DtTransportType transportTypeFromTransportation( const DtString & transportTypeName) const;
242 
243  virtual bool knownUserDefinedTag(const DtUserSuppliedTagsType & tagName) const;
244  virtual unsigned int numUserDefinedTags() const;
245  virtual bool userDefinedTagsSame(DtFedTarget const& module ) const;
246  virtual void addUserDefinedTag(DtUserSuppliedTagsType * tagName);
247  virtual DtMergeFomStatus mergeUserDefinedTypes(DtFedTarget const& module );
248 
249  virtual bool NoteConsistencyTest( const DtNotesType & syncName );
250  virtual bool knownNote(const DtNotesType & noteName) const;
251  virtual void addNote( DtNotesType * noteName );
252  virtual unsigned int numNotes() const;
253  virtual DtMergeFomStatus mergeSwitches(DtFedTarget const& module);
254  //bool DtFedTarget::notesSame(DtFedTarget const& module ) const;
255 
256  virtual bool knownSwitch(const DtString& switchName) const;
257  virtual unsigned int numSwitches() const;
258  virtual bool switchesSame(DtFedTarget const& module) const;
259  virtual bool switchValue(const DtString& switchName) const;
260  virtual void addSwitch(const DtString& switchName, bool switchVal);
261  virtual DtMergeFomStatus mergeNotes(DtFedTarget const& module);
262 
263  virtual bool knownTime(const DtTimeType & timeName) const;
264  virtual unsigned int numTimeTypes() const;
265  virtual bool timeTypesSame(DtFedTarget const& module ) const;
266  virtual void addTime(DtTimeType * timeName);
267  virtual DtMergeFomStatus mergeTimeTypes(DtFedTarget const& module);
268 
269 
270  virtual void addModelIdentification(const char * nameTag) ;
271 
272 
273  virtual DtMergeFomStatus mergeTarget( DtFedTarget const& module );
274  virtual DtMergeFomStatus mergeSpaces( DtFedTarget const& module );
275  virtual DtMergeFomStatus mergeObjectClasses(const DtFedTarget& module);
276  virtual DtMergeFomStatus mergeInteractionClasses(const DtFedTarget& module);
277  virtual DtMergeFomStatus mergeUpdateRates(DtFedTarget const& module);
278  virtual DtMergeFomStatus mergeSyncPoints(DtFedTarget const& module );
279  virtual DtMergeFomStatus mergeTransportTypes(DtFedTarget const& module );
280 
281 
282  public:
283 
285  static void setDefaultAutoProvide(bool onOff);
286  static bool defaultAutoProvide();
287 
289  static void setDefaultConveyRegionDesignatorSets(bool onOff);
290  static bool defaultConveyRegionDesignatorSets();
291 
293  static void setDefaultConveyProducingFederate(bool onOff);
294  static bool defaultConveyProducingFederate();
295 
297  static void setDefaultObjectClassRelevanceAdvisory(bool onOff);
298  static bool defaultObjectClassRelevanceAdvisory();
299 
301  static void setDefaultAttributeRelevanceAdvisory(bool onOff);
302  static bool defaultAttributeRelevanceAdvisory();
303 
305  static void setDefaultAttributeScopeAdvisory(bool onOff);
306  static bool defaultAttributeScopeAdvisory();
307 
309  static void setDefaultInteractionRelevanceAdvisory(bool onOff);
310  static bool defaultInteractionRelevanceAdvisory();
311 
313  static void setDefaultServiceReporting(bool onOff);
314  static bool defaultServiceReporting();
315 
317  static void setDefaultExceptionReporting(bool onOff);
318  static bool defaultExceptionReporting();
319 
321  static void setDefaultAutomaticResignAction( DtResignAction val );
322  static DtResignAction defaultAutomaticResignAction();
323 
324  // Post Merge checks
325  virtual DtMergeFomStatus postMergeCheckTarget(DtString & errorString);
326 
327  virtual bool resolveObjectModelIdentification(DtString & errorString);
328  virtual bool resolveObjectClasses(DtString & errorString, bool& fomReadError);
329  virtual bool resolveInteractionClasses(DtString & errorString, bool& fomReadError);
330  virtual bool resolveAttributes(DtString & errorString, bool& fomReadError);
331  virtual bool resolveParameters(DtString & errorString, bool& fomReadError);
332  virtual bool resolveDimensions(DtString & errorString, bool& fomReadError);
333  // Not necessary
334  virtual bool resolveTimeRepresentations(DtString & errorString);
335  // Not Necessary
336  virtual bool resolveUserSuppliedTags(DtString & errorString);
337  // Not Necessary
338  virtual bool resolveSynchronizationPoints(DtString & errorString);
339  virtual bool resolveTranportationTypes(DtString & errorString);
340  virtual bool resolveUpdateRates(DtString & errorString);
341  virtual bool resolveSwitches(DtString & errorString);
342 
343  void checkSpecificSwitch( const DtString & switchName, bool &mySwitchMissing, DtString &mySwitchesError );
344 
345  // Not necessary
346  virtual bool resolveDatatypes(DtString & errorString);
347  // Not Necessary
348  virtual bool resolveNotes(DtString & errorString);
349  // Not Necessary
350  virtual bool resolveServiceUsage(DtString & errorString);
351 
352  virtual void addBasicDataRepresentation( DtBasicDataRepresentationType * theBasicDataRepresentation );
353  virtual void addSimpleDataType( DtSimpleDatatypeType * theSimpleDataType );
354  virtual void addArrayDataType( DtArrayDatatypeType * theArrayDataType );
355  virtual void addEnumeratedDataType( DtEnumeratedDatatypeType * theEnumeratedDataType );
356  virtual void addFixedRecordDataType( DtFixedRecordDatatypeType * theFixedRecordDataType );
357  virtual void addVariantRecordDataType( DtVariantRecordDatatypeType * theVariantRecordDataType );
358  virtual bool knownModelIdentification( DtString const & nameTag ) const;
359  virtual bool modelIdentificationSame(DtFedTarget const& module ) const;
360  /*protected:*/
362 
375 
378 
379 
380 
381 
388 
389  std::map< DtString, bool > mySwitches;
390 
392 
393 
394  typedef std::set<DtBoost::shared_ptr<DtBasicDataRepresentationType>, FomTypeCompare<DtBasicDataRepresentationType> > DtBasicDataRepresentationSetT;
395  typedef std::set<DtBoost::shared_ptr<DtSimpleDatatypeType>, FomTypeCompare<DtSimpleDatatypeType> > DtSimpleDatatypeSetT;
396  typedef std::set<DtBoost::shared_ptr<DtEnumeratedDatatypeType>, FomTypeCompare<DtEnumeratedDatatypeType> > DtEnumeratedDatatypeSetT;
397  typedef std::set<DtBoost::shared_ptr<DtArrayDatatypeType>, FomTypeCompare<DtArrayDatatypeType> > DtArrayDatatypeSetT;
398  typedef std::set<DtBoost::shared_ptr<DtFixedRecordDatatypeType>, FomTypeCompare<DtFixedRecordDatatypeType> > DtFixedRecordDatatypeSetT;
399  typedef std::set<DtBoost::shared_ptr<DtVariantRecordDatatypeType>, FomTypeCompare<DtVariantRecordDatatypeType> > DtVariantRecordDatatypeSetT;
400 
407 
408  virtual bool basicDataRepresentationConsistencyTest ( const DtBasicDataRepresentationType & theBasicDataRepresentation);
409  virtual bool knownBasicDataRepresentation( const DtBasicDataRepresentationType & theBasicDataRepresentation) const;
410  virtual bool basicDataRepresentationSame(DtFedTarget const & module) const;
411  virtual DtMergeFomStatus mergeBasicDataRepresentation(DtFedTarget const & module);
412 
413  virtual bool simpleDatatypeConsistencyTest( const DtSimpleDatatypeType & theSimpleDatatype);
414  virtual bool knownSimpleDatatype( const DtSimpleDatatypeType & theSimpleDatatype) const;
415  virtual bool simpleDatatypeSame(DtFedTarget const & module) const;
416  virtual DtMergeFomStatus mergeSimpleDatatype(DtFedTarget const & module);
417 
418  virtual bool enumeratedDatatypeConsistencyTest( const DtEnumeratedDatatypeType & theSimpleDatatype);
419  virtual bool knownEnumeratedDatatype(const DtEnumeratedDatatypeType & theEnumeratedDatatype) const;
420  virtual bool enumeratedDatatypeSame(DtFedTarget const & module) const;
421  virtual DtMergeFomStatus mergeEnumeratedDatatype(DtFedTarget const & module);
422 
423  virtual bool arrayDatatypeConsistencyTest( const DtArrayDatatypeType & DtArrayDatatypeType);
424  virtual bool knownArrayDatatype(const DtArrayDatatypeType & theArrayDatatype) const;
425  virtual bool arrayDatatypeSame(DtFedTarget const & module) const;
426  virtual DtMergeFomStatus mergeArrayDatatypeType(DtFedTarget const & module);
427 
428  virtual bool fixedRecordDatatypeConsistencyTest(const DtFixedRecordDatatypeType theFixedRecordDatatype);
429  virtual bool knownFixedRecordDatatype(const DtFixedRecordDatatypeType theFixedRecordDatatype) const;
430  virtual bool fixedRecordDatatypeSame(DtFedTarget const & module) const;
431  virtual DtMergeFomStatus mergeFixedRecordDatatype(DtFedTarget const & module);
432 
433  virtual bool variantRecordDatatypeConsistencyTest(const DtVariantRecordDatatypeType & theVariantRecordDatatype);
434  virtual bool knownVariantRecordDatatype(const DtVariantRecordDatatypeType & theVariantRecordDatatype) const;
435  virtual bool variantRecordDatatypeSame(DtFedTarget const & module) const;
436  DtMergeFomStatus mergeVariantRecordDatatype(DtFedTarget const & module);
437 
438  virtual void addUnresolvedAttributeTransportation( const DtString& transportationName, const DtString& className, const DtString& attrName );
439  virtual void removeResolvedAttributeTransportation( const DtString& transportationName, ClassAttributeNamePair classAttrPair );
440  virtual void addUnresolvedInteractionTransportation( const DtString& transportationName, const DtString& interactionName );
441  virtual void removeResolvedInteractionTransportation( const DtString& transportationName, const DtString& interactionName );
442 
443  virtual DtString& lastError();
444 
447 
448 
451 
452  protected:
453 
454  std::map<DtString, std::set<ClassAttributeNamePair> > unresolvedAttributeDimensions;
455  std::map<DtString, std::set<DtString> > unresolvedInteractionDimensions;
456 
457  std::map<DtString, std::set<ClassAttributeNamePair> > unresolvedAttributeTransportations;
458  std::map<DtString, std::set<DtString> > unresolvedInteractionTransportations;
459 
460  virtual void addUnresolvedAttributeDimension( const DtString& dimensionName, const DtString& className, const DtString& attrName );
461  virtual void removeResolvedAttribute( const DtString& dimensionName, ClassAttributeNamePair classAttrPair );
462  virtual void addUnresolvedInteractionDimension( const DtString& dimensionName, const DtString& interactionName );
463  virtual void removeResolvedInteractionDimension( const DtString& dimensionName, const DtString& interactionName );
464 
465 
466  virtual void mergeUnresolved(DtFedTarget const & module);
467  virtual void unionUnresolvedAttributeDimensions(const std::map<DtString, std::set<ClassAttributeNamePair> >& unresolvedAttributeDimensions);
468  virtual void unionUnresolvedInteractionDimensions(const std::map<DtString, std::set<DtString> >& unresolvedInteractionDimensions);
469 
470  virtual void unionUnresolvedAttributeTransportation(const std::map<DtString, std::set<ClassAttributeNamePair> >& unresolvedAttributetransportations);
471  virtual void unionUnresolvedInteractionTransportation(const std::map<DtString, std::set<DtString> >& unresolvedInteractiontransportations);
472 
473  virtual bool checkStringsIgnoringWhiteSpaceAndNewline(const DtString & left, const DtString & right);
474 
485 
486  private:
487 
488 
489  };
490 
491 #ifdef DtUSE_UTILITIES_NAMESPACE
492 }
493 #endif
494 

Document ID: Generated on Fri May 15 06:36:13 EDT 2015 from SVN revision 153263
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)