VR-Link API Documentation for HLA 1.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
exerciseConnInitializerHLA.h
Go to the documentation of this file.
1 /****************************************************************************
2  * Copyright (c) 2017 MAK Technologies, Inc
3  * All rights reserved.
4  ****************************************************************************/
5 
9 
10 #pragma once
11 
12 #if DtHLA
13 
14 #include <vlutil/vlString.h>
15 
17 #include <mtl/configVariable.h>
19 
20 
21 #include <cmdLine/cmdLine.h>
22 #include "fomMapper.h"
23 
24 class DtMtlEnvironment;
25 
26 
27 #if defined (DtHLA_1516_EVOLVED)
28 #define DtDefaultRpr2Fom "RPR_FOM_v2.0_1516-2010.xml"
29 #define DtDefaultRpr1Fom "MAK-RPR1-1-10_evolved.xml"
30 #elif defined(DtHLA_1516)
31 #define DtDefaultRpr2Fom "MAK-RPR2-1-10.xml"
32 #define DtDefaultRpr1Fom "MAK-RPR1-1-10.xml"
33 #else //HLA 1.3
34 #define DtDefaultRpr2Fom "MAK-RPR2-1-10.fed"
35 #define DtDefaultRpr1Fom "MAK-RPR1-1-10.fed"
36 #endif
37 
42 {
43 public:
44 
48  {
51  DtGetValuePointerWhereAvailable
52  };
53 
54 public:
57 
59  virtual ~DtExerciseConnInitializer();
60 
63 
66 
68  virtual DtString execName() const;
69 
71  virtual void setExecName(const DtString& name);
72 
75  virtual DtString federateName() const;
76 
79  virtual void setFederateName(const DtString& name);
80 
82  virtual DtString federateType() const;
83 
86  virtual void setFederateType(const DtString& type);
87 
89  virtual DtString fedFileName() const;
90 
92  virtual void setFedFileName(const DtString& name);
93 
95  virtual DtFomMapper* fomMapper() const;
96 
98  virtual void setFomMapper(DtFomMapper* mapper);
99 
102  virtual DtString fomMapperLibName() const;
103 
105  virtual void setFomMapperLibName(const DtString& name);
106 
108  virtual void* fomMapperInitData() const;
109 
111  virtual void setFomMapperInitData(void* data);
112 
119  virtual void setRprFomVersion(double version);
120 
122  virtual double rprFomVersion() const;
123 
129  virtual void setNetnFomVersion(double version);
130 
132  virtual double netnFomVersion() const;
133 
136  virtual void setReflecting(bool onOff);
137 
139  virtual bool reflecting() const;
140 
143  virtual void setPassiveMode(bool onOff);
144 
146  virtual bool passiveMode() const;
147 
161  virtual void setReflectRemoteUpdatesIntoPub(bool onOff);
162 
164  virtual bool reflectRemoteUpdatesIntoPub() const;
165 
172  virtual void setReflectThroughRti(bool onOff);
173 
175  virtual bool reflectThroughRti() const;
176 
184  virtual void setUseAdvisories(bool onOff);
185 
187  virtual bool useAdvisories() const;
188 
194  virtual void setReplyToSynchPoints(bool onOff);
195 
197  virtual bool replyToSynchPoints() const;
198 
204  virtual void setAutoSubscribe(bool onOff);
205 
207  virtual bool autoSubscribe() const;
208 
214  virtual void setRequestClassUpdate(bool onOff);
215 
217  virtual bool requestClassUpdate() const;
218 
223  virtual void setRequestObjectUpdate(bool onOff);
224 
226  virtual bool requestObjectUpdate() const;
227 
239  virtual void setRequestWhenInitialized(bool onOff);
240 
242  virtual bool requestWhenInitialized() const;
243 
255  virtual void setDefaultRefreshWaitList(bool onOff);
256 
258  virtual bool defaultRefreshWaitList() const;
259 
264  virtual void setDefaultWaitListRefreshPeriod(double period);
265 
267  virtual double defaultWaitListRefreshPeriod() const;
268 
272  virtual void setTimeStampType(DtTimeStampType relOrAbs);
273 
275  virtual DtTimeStampType timeStampType() const;
276 
278  virtual bool dis5Timestamps() const;
279 
281  virtual void setDis5Timestamps(bool onOff);
282 
288  virtual void setDestroyFedExec(bool onOff);
289 
291  virtual bool destroyFedExec() const;
292 
297  virtual void setSendFedTime(bool onOff);
298 
300  virtual bool sendFedTime() const;
301 
303  virtual void setNotifyLevel(int level);
304 
306  virtual void setUseGeographicDdm(bool yesNo);
307 
309  virtual bool useGeographicDdm() const;
310 
316  virtual void setRprFomRevision(int val);
319  virtual int rprFomRevision() const;
320 
322  virtual void setNetnFomRevision(int val);
324  virtual int netnFomRevision() const;
325 
331  virtual void setExceptionOnRtiCompilerMismatch( bool useException );
332 
333  virtual bool exceptionOnRtiCompilerMismatch() const;
334 
346 
347  virtual void setGetValueMethod( DtGetValueMethod getValueMethodChoice );
348  virtual DtGetValueMethod getValueMethod( ) const;
350 
356 
357  virtual void setGenericAttributes(bool yesNo);
358  virtual bool enabledGenericAttributes() const;
360 
361 
363 
364  virtual bool pauseOnSaveRestore() const;
365  virtual void setPauseOnSaveRestore(bool yesNo);
367 
368 #if DtHLA_1516_EVOLVED
369 
371  virtual void setMimModule(const DtString& mimFomModule);
373  virtual DtString mimModule() const;
374 
376  virtual void addFomModule(const DtString& module);
378  virtual void setFomModules(const std::vector<DtString>& fomModules);
379 
381  virtual void fomModules(std::vector<DtString>& fomModules) const;
383  virtual void fomModules(std::vector<std::wstring>& fomModules) const;
384 
386  virtual void setLocalSettingsDesignator( const std::wstring & localSettingsDesignator );
388  virtual void setLocalSettingsDesignator( const DtString & localSettingsDesignator );
390  virtual std::wstring localSettingsDesignator() const;
391 
392 
393 #elif DtHLA_1516
394 
396  virtual void setRtiArguments(const std::vector<std::wstring>& args);
397 
399  virtual void setRtiArguments(const std::vector<DtString>& args);
400 
402  virtual void rtiArguments(std::vector<std::wstring>& args) const;
403 
404 #endif
405 
406 public:
407 
409  static DtString vrlinkVersion();
410 
413 private:
445 
446 
447 #if DtHLA_1516_EVOLVED
448  std::wstring myLocalSettingsDesignator;
449 #elif DtHLA_1516
450  std::vector<std::wstring> myRtiArguments;
451 #endif
452 
456 
459  std::vector<DtString> myFomModules;
460 
462 
463 };
464 
477 {
478 public:
480  DtVrlApplicationInitializer(int argc, char* argv[], const DtString& appName,
482 #ifdef _WIN32
483  bool pressAnyKey = true);
484 #else
485  bool pressAnyKey = false);
486 #endif
487 
489  virtual ~DtVrlApplicationInitializer();
490 
492  virtual int argc() const;
493 
495  virtual char** argv() const;
496 
501  virtual void parseCmdLine();
502 
506  virtual void loadFile(const DtString& fileName);
507  virtual void loadMtlFile(const DtString& fileName);
508 
510  virtual void saveFile(const DtString& filename);
511 
512  //{@
514  virtual void setExecName(const DtString& name);
515  virtual DtString execName() const;
517 
518  //{@
521  virtual void setFederateName(const DtString& name);
522  virtual DtString federateName() const;
524 
525 #if DtHLA_1516_EVOLVED
526  //{@
529  virtual void setLocalSettingsDesignator(const DtString& name);
530  virtual std::wstring localSettingsDesignator() const;
531 
534  virtual void setMimModule(const DtString& mimFomModule);
535  virtual DtString mimModule() const;
537 
538 #endif
539 
540  //{@
542  virtual void setNotifyFileLevel(int level);
543  virtual int notifyFileLevel() const;
545 
546  //{@
548  virtual void setNotifyFilename(const DtString& file);
549  virtual DtString notifyFilename() const;
551 
552  //{@
554  virtual void setFederateType(const DtString& type);
555  virtual DtString federateType() const;
557 
558  //{@
560  void setFedFileName(const DtString& name);
561  virtual DtString fedFileName() const;
563 
564  //{@
566  virtual void setFomMapperLibName(const DtString& name);
567  virtual DtString fomMapperLibName() const;
569 
570  //{@
572  virtual void setRprFomVersion(double version);
573  virtual double rprFomVersion() const;
575 
576  //{@
578  virtual void setNetnFomVersion(double version);
579  virtual double netnFomVersion() const;
581 
582  //{@
584  virtual void* fomMapperInitData() const;
585  virtual void setFomMapperInitData(void* data);
587 
588  //{@
590  virtual void setUseAdvisories(bool onOff);
591  virtual bool useAdvisories() const;
593 
594  //{@
596  virtual void setUseDis5Timestamps(bool onOff);
597  virtual bool useDis5TimeStamps() const;
599 
600  //{@
602  virtual void setRequestClassUpdate(bool onOff);
603  virtual bool requestClassUpdate() const;
605 
606 
607  //{@
609  virtual void setRequestObjectUpdate(bool onOff);
610  virtual bool requestObjectUpdate() const;
612 
613  //{@
615  virtual void setRequestWhenInitialized(bool onOff);
616  virtual bool requestWhenInitialized() const;
618 
619  //{@
621  virtual void setDefaultRefreshWaitList(bool onOff);
622  virtual bool defaultRefreshWaitList() const;
624 
625  //{@
627  virtual void setDefaultWaitListRefreshPeriod(double period);
628  virtual double defaultWaitListRefreshPeriod() const;
630 
634  virtual void setTimeStampType(DtTimeStampType relOrAbs);
635 
637  virtual DtTimeStampType timeStampType() const;
638 
644  virtual void setDestroyFedExec(bool onOff);
645 
647  virtual bool destroyFedExec() const;
648 
653  virtual void setSendFedTime(bool onOff);
654 
656  virtual bool sendFedTime() const;
657 
658  virtual void setUseGeographicDdm(bool yesNo);
659 
660  virtual bool useGeographicDdm() const;
661 
663  virtual void setRprFomRevision(int val);
664 
666  virtual int rprFomRevision() const;
667 
669  virtual void setNetnFomRevision(int val);
670 
672  virtual int netnFomRevision() const;
673 
679  virtual void setGenericAttributes(bool yesNo);
680  virtual bool enabledGenericAttributes() const;
681 
683 
684  virtual bool pauseOnSaveRestore() const;
685  virtual void setPauseOnSaveRestore(bool yesNo);
686 
687  virtual void setExceptionOnRtiCompilerMismatch(bool yesNo);
688  virtual bool exceptionOnRtiCompilerMismatch() const;
690 
695  virtual void setOutputInterval(double period);
696 
698  virtual double outputInterval() const;
699 
700 protected:
702  virtual void initializeFileLogging();
703 
704 protected:
705  int myArgc;
706  char** myArgv;
708 
709  virtual void initializeMtlParams();
710 
718 #if DtHLA_1516_EVOLVED
719  DtMultiConfigVariable<DtString> myConfigVarFomModules;
720  DtConfigVariable<DtString> myConfigVarMimModule;
721  DtConfigVariable<DtString> myConfigVarLocalSettingsDesignator;
722 #endif
735 
748 
749  // If logging is turned on, this printer will remain in memory
750  // even after this class is destroyed. Otherwise we would
751  // have to stop logging prematurely.
753 
754  // MTL doesn't support boolean
765 
766 };
767 
768 #endif // DtHLA
DtConfigVariable< bool > myConfigVarPauseOnSaveRestore
Definition: exerciseConnInitializerHLA.h:742
command line support
Definition: mtlEnvironment.h:42
virtual void setDestroyFedExec(bool onOff)
Set the destroy fed exec flag.
DtConfigVariable< double > myConfigVarRprFomVersion
Definition: exerciseConnInitializerHLA.h:725
bool myRequestObjectUpdate
Definition: exerciseConnInitializerHLA.h:428
Contains the DtApplicationSettings class declaration.
virtual void setRequestClassUpdate(bool onOff)
Set request class update flag.
virtual bool sendFedTime() const
Get the send fed time flag. See above description.
DtConfigVariable< bool > myConfigVarUseAbsoluteTimestamps
Definition: exerciseConnInitializerHLA.h:738
virtual void setFomMapperLibName(const DtString &name)
Get the FOM Mapper library name.
Definition: applicationSettings.h:24
bool myReplyToSynchPoints
Definition: exerciseConnInitializerHLA.h:425
virtual bool enabledGenericAttributes() const
Set the Generic attributes flag.
virtual bool destroyFedExec() const
Get the destroy fed exec flag. See above description.
#define DT_DLL_VL
Definition: vlMachineTypes.h:108
int myMtlRequestObjectUpdate
Definition: exerciseConnInitializerHLA.h:762
bool myPassiveMode
Definition: exerciseConnInitializerHLA.h:423
DtConfigVariable< bool > myConfigVarRtiCompilerCheck
Definition: exerciseConnInitializerHLA.h:743
Instances of DtExerciseConnInitializer are used to provide the DtExerciseConn with initialization dat...
Definition: exerciseConnInitializerHLA.h:41
Contains the DtString class declaration.
bool myReflectRemoteUpdatesIntoPub
Definition: exerciseConnInitializerHLA.h:432
DtFilePrinter is a subclass of DtPrinter which opens a file and dumps all information received from D...
Definition: vlPrint.h:80
virtual void setDefaultRefreshWaitList(bool onOff)
Set default wait list refresh flag.
DtString myMimModule
Definition: exerciseConnInitializerHLA.h:461
int myMtlSendFedTime
Definition: exerciseConnInitializerHLA.h:759
char ** myArgv
Definition: exerciseConnInitializerHLA.h:706
int myRprFomRevision
Definition: exerciseConnInitializerHLA.h:440
DtConfigVariable< double > myConfigVarNetnFomVersion
Definition: exerciseConnInitializerHLA.h:727
DtTimeStampType myTimeStampType
Definition: exerciseConnInitializerHLA.h:434
virtual void * fomMapperInitData() const
Set the FOM mapper initialization data.
int myMtlUseGeographicDdm
Definition: exerciseConnInitializerHLA.h:756
DtConfigVariable< double > myConfigVarDefaultWaitListRefreshPeriod
Definition: exerciseConnInitializerHLA.h:734
int myMtlUseAbsoluteTimeStamps
Definition: exerciseConnInitializerHLA.h:757
bool myExceptionOnRtiCompilerMismatch
Definition: exerciseConnInitializerHLA.h:442
virtual void setRequestObjectUpdate(bool onOff)
Set request object update flag.
void * myFomMapperInitData
Definition: exerciseConnInitializerHLA.h:419
virtual int rprFomRevision() const
Returns the revision of the current FOM being used.
virtual DtString federateType() const
Get the federate type.
DtConfigVariable< DtString > myConfigVarFederateType
Definition: exerciseConnInitializerHLA.h:714
This file declares DtFomMapper.
bool myReflecting
Definition: exerciseConnInitializerHLA.h:422
DtConfigVariable< bool > myConfigVarRequestObjectUpdate
Definition: exerciseConnInitializerHLA.h:731
int myNetnFomRevision
Definition: exerciseConnInitializerHLA.h:441
DtConfigVariable< int > myConfigVarNotifyFileLevel
Definition: exerciseConnInitializerHLA.h:744
static DtString vrlinkVersion()
Returns a string indicating the VR-Link version number.
virtual DtTimeStampType timeStampType() const
Get the time stamp type.
DtString myFederateType
Definition: exerciseConnInitializerHLA.h:415
virtual bool exceptionOnRtiCompilerMismatch() const
Contains the DtMultiConfigVariable class declaration.
DtString myFomMapperLibName
Definition: exerciseConnInitializerHLA.h:418
virtual bool requestClassUpdate() const
Get request class update flag.
DtConfigVariable< int > myConfigVarNetnFomRevision
Definition: exerciseConnInitializerHLA.h:728
DtGetValueMethod myGetValueMethod
Definition: exerciseConnInitializerHLA.h:443
DtConfigVariable< bool > myConfigVarRequestWhenInitialized
Definition: exerciseConnInitializerHLA.h:732
DtFomMapper * myFomMapper
Definition: exerciseConnInitializerHLA.h:417
double myRprFomVersion
Definition: exerciseConnInitializerHLA.h:420
DtConfigVariable< bool > myConfigVarUseGeographicDdm
Definition: exerciseConnInitializerHLA.h:737
virtual void setRprFomVersion(double version)
Set the RPR FOM Version.
virtual void setGenericAttributes(bool yesNo)
Set the Generic attributes flag.
virtual void setNetnFomRevision(int val)
Sets the revision of the NETN FOM Mapper currently used.
virtual DtString fedFileName() const
Set the fed file name.
std::vector< DtString > myFomModules
myFomModules represents the set of FOM Modules to be used to establish the Object Model of the Federa...
Definition: exerciseConnInitializerHLA.h:459
bool myRequestClassUpdate
Definition: exerciseConnInitializerHLA.h:427
bool myAutoSubscribe
Definition: exerciseConnInitializerHLA.h:426
bool myReflectThroughRti
Definition: exerciseConnInitializerHLA.h:433
DtConfigVariable< bool > myConfigVarDis5TimeStamps
Definition: exerciseConnInitializerHLA.h:747
virtual DtString federateName() const
Set the federate name In HLA Evolved, this is the same as federateType.
DtConfigVariable< int > myConfigVarNotifyLevel
Definition: exerciseConnInitializerHLA.h:712
virtual bool useGeographicDdm() const
Get the use geographic DDM flag.
Contains the DtConfigVariable class declaration.
double myDefaultWaitListRefreshPeriod
Definition: exerciseConnInitializerHLA.h:431
DtConfigVariable< DtString > myConfigVarFomMapperInitData
Definition: exerciseConnInitializerHLA.h:724
DtMtlEnvironment * myMtlEnv
Definition: exerciseConnInitializerHLA.h:707
DtConfigVariable< int > myConfigVarRprFomRevision
Definition: exerciseConnInitializerHLA.h:726
Instances of DtVrlApplicationInitializer are used to initialize the exercise connection with command ...
Definition: exerciseConnInitializerHLA.h:476
bool myDefaultRefreshWaitList
Definition: exerciseConnInitializerHLA.h:430
virtual void setUseGeographicDdm(bool yesNo)
Sets the use geographic DDM flag.
virtual double netnFomVersion() const
Returns the NETN FOM Version. See above description.
int myMtlDefaultRefreshWaitList
Definition: exerciseConnInitializerHLA.h:764
virtual void setFedFileName(const DtString &name)
Get the fed file name.
virtual void setDefaultWaitListRefreshPeriod(double period)
Set default wait list refresh period.
bool mySendFedTime
Definition: exerciseConnInitializerHLA.h:436
virtual bool requestObjectUpdate() const
Get request object update flag.
DtString myFedFileName
The following two variables are different representations of the same concept.
Definition: exerciseConnInitializerHLA.h:455
DtConfigVariable< bool > myConfigVarSendFedTime
Definition: exerciseConnInitializerHLA.h:740
DtApplicationSettings mySettings
Definition: exerciseConnInitializerHLA.h:711
DtConfigVariable< bool > myConfigVarRequestClassUpdate
Definition: exerciseConnInitializerHLA.h:730
DtString myFederateName
Definition: exerciseConnInitializerHLA.h:416
virtual void setNetnFomVersion(double version)
Set the NETN FOM Version.
Definition: exerciseConnInitializerHLA.h:50
This file declares the class DtCmdLine::CmdLine.
virtual DtString fomMapperLibName() const
Set the FOM Mapper library name.
DtConfigVariable< DtString > myConfigVarExecName
Definition: exerciseConnInitializerHLA.h:715
bool myDis5TimeStamps
Definition: exerciseConnInitializerHLA.h:444
double myNetnFomVersion
Definition: exerciseConnInitializerHLA.h:421
DtConfigVariable< DtString > myConfigVarNotifyFilename
Definition: exerciseConnInitializerHLA.h:745
bool myRequestWhenInitialized
Definition: exerciseConnInitializerHLA.h:429
virtual void setUseAdvisories(bool onOff)
Set use of advisories.
DtConfigVariable< double > myConfigVarOutputInterval
Definition: exerciseConnInitializerHLA.h:746
bool myPauseOnSaveRestore
Definition: exerciseConnInitializerHLA.h:437
DtConfigVariable< bool > myConfigVarDestroyFedExec
Definition: exerciseConnInitializerHLA.h:739
DtConfigVariable< DtString > myConfigVarFomMapperLibName
Definition: exerciseConnInitializerHLA.h:723
virtual double defaultWaitListRefreshPeriod() const
Get default wait list refresh period.
DtConfigVariable< bool > myConfigVarGenericAttributes
Definition: exerciseConnInitializerHLA.h:741
DtConfigVariable< bool > myConfigVarDefaultRefreshWaitList
Definition: exerciseConnInitializerHLA.h:733
Definition: exerciseConnInitializerHLA.h:49
DtVariableGroup myHlaConnection
Definition: exerciseConnInitializerHLA.h:713
bool myUseGeographicDdm
Definition: exerciseConnInitializerHLA.h:439
virtual void setFederateName(const DtString &name)
Set the federate name In HLA Evolved, this is the same as setFederateType.
int myMtlDestroyFedExec
Definition: exerciseConnInitializerHLA.h:758
virtual bool useAdvisories() const
Get use of advisories.
virtual void setTimeStampType(DtTimeStampType relOrAbs)
Set the time stamp type (DtTimeStampAbsolute or DtTimeStampRelative).
bool myUseAdvisories
Definition: exerciseConnInitializerHLA.h:424
Represents a group of variables.
Definition: variableGroup.h:21
virtual void setRprFomRevision(int val)
Sets the revision of the FOM Mapper currently used.
virtual double rprFomVersion() const
Returns the RPR FOM Version. See above description.
DtTimeStampType
Definition: vlTimeStampType.h:16
int myMtlUseAdvisories
Definition: exerciseConnInitializerHLA.h:755
bool myGenericAttributes
Definition: exerciseConnInitializerHLA.h:438
int myArgc
Definition: exerciseConnInitializerHLA.h:705
virtual void setRequestWhenInitialized(bool onOff)
Set request when initialized flag.
virtual bool defaultRefreshWaitList() const
Get request object update flag.
bool myDestroyFedExec
Definition: exerciseConnInitializerHLA.h:435
DtConfigVariable< DtString > myConfigVarFederateName
Definition: exerciseConnInitializerHLA.h:717
DtConfigVariable< bool > myConfigVarUseAdvisories
Definition: exerciseConnInitializerHLA.h:729
DtConfigVariable< bool > myConfigVarIgnoreAdvisories
Definition: exerciseConnInitializerHLA.h:736
Instances of DtString are used to represent strings.
Definition: vlString.h:29
DtFilePrinter * myLogFilePrinter
Definition: exerciseConnInitializerHLA.h:752
virtual void setExceptionOnRtiCompilerMismatch(bool useException)
Set whether DtExerciseConn throws an exception when detecting a mismatched RTI compiler version...
Instances of DtFomMapper are used to provide FOM agility in VR-Link by mapping VR-Link classes and fu...
Definition: fomMapper.h:36
int myMtlRequestClassUpdate
Definition: exerciseConnInitializerHLA.h:761
virtual int netnFomRevision() const
Returns the revision of the current NETN FOM being used.
virtual bool requestWhenInitialized() const
Get request when initialized flag.
virtual void setSendFedTime(bool onOff)
Set the send fed time flag.
virtual void setFomMapperInitData(void *data)
Get the FOM mapper initialization data.
virtual void setPauseOnSaveRestore(bool yesNo)
Block the simulation if a save or a restore is in process.
virtual DtString execName() const
Set the federation execution name.
DtConfigVariable< DtString > myConfigVarFedFileName
Definition: exerciseConnInitializerHLA.h:716
int myMtlPauseOnSaveRestore
Definition: exerciseConnInitializerHLA.h:760
int myMtlRequestWhenInitialized
Definition: exerciseConnInitializerHLA.h:763
virtual void setFederateType(const DtString &type)
Set the federate type.
virtual bool pauseOnSaveRestore() const
Block the simulation if a save or a restore is in process.
DtString myExecName
These values are private, because derived classes will be providing types of the same functionality...
Definition: exerciseConnInitializerHLA.h:414
Definition: multiConfigVariable.h:23
DtGetValueMethod
Indicate if getValue or getValuePointer should be used to retrieve data from handleValuePairSets.
Definition: exerciseConnInitializerHLA.h:47
virtual void setExecName(const DtString &name)
Get the federation execution name.

Document ID: Generated on Wed Mar 27 02:04:30 EDT 2024 from SVN revision 264570
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)