MAK RTIspy API Documentation for HLA 1516
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
rtiUtil.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 2003 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 /*********************************************************************
6 ** $RCSfile: rtiUtil.h,v $ $Revision: 1.23 $ $State: Exp $
7 *********************************************************************/
8 
11 
12 #ifndef DtRtiUtil_H_
13 #define DtRtiUtil_H_
14 
15 #include "rtiMsConfig.h"
16 
17 #include <set>
18 #include <map>
19 #include <algorithm>
20 #include <utility>
21 #include <vector>
22 
23 #include <vlutil/vlPrint.h>
24 #include <vlutil/vlFilename.h>
25 #include <vlutil/vlUtil.h>
26 #include <vlutil/vlPrint.h>
27 #include <vlutil/vlExceptions.h>
28 #include <vlutil/vlString.h>
29 #include <vlutil/vlInetAddr.h>
30 
31 #ifndef _WIN32
32 #ifndef __sgi__
33 #ifndef __solaris__
34 #include <netinet/if_ether.h>
35 #include <net/if.h>
36 #endif
37 #endif
38 #endif
39 
40 #define MAKRTI_MT
41 namespace MAKRti
42 {
43  class DtClock;
44 }
45 
46 #ifdef MAKRTI_MT
47 #define MAK_STATIC
48 #else
49 #define MAK_STATIC static
50 #endif
51 
52 const unsigned int DtGreatestValidPortNumber = 65535;
53 
55 DT_DLL_RTIUTIL void DtRtiAttachNotificationPrinter( MAKRti::DtNotifyLevelType level, MAKRti::DtPrinter* printer );
56 
58 DT_DLL_RTIUTIL void DtRtiDetachNotificationPrinter( MAKRti::DtNotifyLevelType level, MAKRti::DtPrinter* printer );
59 
62 DT_DLL_RTIUTIL MAKRti::DtFilename DtRtiSearchPathList( const MAKRti::DtFilename& libName,
63  const MAKRti::DtString& searchPath = "" );
64 
67 DT_DLL_RTIUTIL MAKRti::DtFilename DtRtiLibPath(const MAKRti::DtString& searchPath = "");
68 
71 DT_DLL_RTIUTIL MAKRti::DtString& DtMakeFileNameUnique(MAKRti::DtString& fileName);
72 
75 DT_DLL_RTIUTIL MAKRti::DtFilename& DtResolveAbsoluteFileLocation(const MAKRti::DtString& path,
76  const MAKRti::DtString& fileName, MAKRti::DtFilename& resolvedFilePath);
77 
80 DT_DLL_RTIUTIL MAKRti::DtFilename& DtMakeLogFilePath(const MAKRti::DtString& baseFilePath,
81  const MAKRti::DtString& fileName, bool makeUnique, MAKRti::DtFilename& resolvedFilePath);
82 
84 DT_DLL_RTIUTIL MAKRti::DtString DtGetProcessName();
85 
98 DT_DLL_RTIUTIL bool DtLocateConfigFile(MAKRti::DtFilename const& fileName, MAKRti::DtFilename& locatedFileName);
99 
106 DT_DLL_RTIUTIL bool DtNonBlockingPollInputLine(MAKRti::DtString& buffer);
107 
108 
112 
115 DT_DLL_RTIUTIL int DtKBHit();
116 
117 DT_DLL_RTIUTIL void DtSetNotifyLevel(unsigned int notifyLevel);
118 
120 DT_DLL_RTIUTIL bool DtReadFile( FILE* fileHandle,
121  char** fileBuffer, unsigned int* fileSize);
122 
125 DT_DLL_RTIUTIL int DtBitsRequiredToRepresent(unsigned long x);
126 
127 
129 DT_DLL_RTIUTIL const MAKRti::DtString& DtGetLocalHostName();
130 
133 DT_DLL_RTIUTIL void DtGetLocalHostName(MAKRti::DtString& hostName, bool onlyFillIfEmpty = true);
134 
139 DT_DLL_RTIUTIL MAKRti::DtString DtPerformDNSLookup(MAKRti::DtInetAddr addr);
140 
142 DT_DLL_RTIUTIL MAKRti::DtException const& DtInitialException(MAKRti::DtException const& ex);
143 
146 DT_DLL_RTIUTIL MAKRti::DtOutputStream& DtRtiOutputStream( MAKRti::DtNotifyLevelType level );
147 
148 typedef std::pair< MAKRti::DtInetAddr, int > DtInetAddrAndPort;
149 
150 DT_DLL_RTIUTIL MAKRti::DtString addrAndPortToString(const DtInetAddrAndPort& addrPort);
151 
152 #ifdef _WIN32
153 DT_DLL_RTIUTIL void getRegKey( MAKRti::DtString& val, HKEY rootKey,
154  const MAKRti::DtString& keyPath, const MAKRti::DtString& keyName );
155 DT_DLL_RTIUTIL void setRegKey( const MAKRti::DtString& keyVal, HKEY rootKey,
156  const MAKRti::DtString& keyPath, const MAKRti::DtString& keyName,
157  bool expand );
158 DT_DLL_RTIUTIL void removeRegKey( HKEY rootKey, const MAKRti::DtString& keyPath,
159  const MAKRti::DtString& keyName );
160 
161 DT_DLL_RTIUTIL void setEnvVar( const MAKRti::DtString &val, const MAKRti::DtString& name,
162  bool isSystem, bool expand ) ;
163 DT_DLL_RTIUTIL void getEnvVar( MAKRti::DtString& val, const MAKRti::DtString& name, bool isSystem );
164 DT_DLL_RTIUTIL void removeEnvVar( const MAKRti::DtString& name, bool isSystem );
165 
166 DT_DLL_RTIUTIL void expandEnvVar(MAKRti::DtString& outVar );
167 DT_DLL_RTIUTIL bool canWriteSystemPath();
168 DT_DLL_RTIUTIL bool canWriteUserPath();
169 
170 
171 
172 DT_DLL_RTIUTIL MAKRti::DtString getAssistantRegistryString();
173 DT_DLL_RTIUTIL void getSystemRunLocation(HKEY& rootKey, MAKRti::DtString& regPath);
174 DT_DLL_RTIUTIL void getUserRunLocation(HKEY& rootKey, MAKRti::DtString& regPath);
175 #endif
176 
177 DT_DLL_RTIUTIL void shutdownAssistant(bool force
178 #ifdef _WIN32
179  , std::pair< void*, void* > & resultInfo );
180 #else
181  );
182 #endif
184 
186 {
192 };
193 
195 {
200 };
201 
203 {
208 };
209 
212 DT_DLL_RTIUTIL void queryAssistantStartup( bool& isStartupItem, bool& isUserStartupItem );
213 
214 
217 #define DtRtiFatal DtRtiOutputStream( MAKRti::DtNlFatal )
218 #define DtRtiWarn DtRtiOutputStream( MAKRti::DtNlWarn )
219 #define DtRtiInfo DtRtiOutputStream( MAKRti::DtNlInfo )
220 #define DtRtiVerbose DtRtiOutputStream( MAKRti::DtNlVerbose )
221 #define DtRtiDebug DtRtiOutputStream( MAKRti::DtNlDebug )
222 
224 #define DtIsMember(container, element) (container.find(element) != container.end())
225 
227 template<class T> void DtDeletePointerContainer(T& pointerContainer)
228 {
230  typename T::iterator iter = pointerContainer.begin();
231  typename T::iterator theEnd = pointerContainer.end();
232  for (; iter != theEnd; ++iter)
233  {
234  delete *iter;
235  }
236 
237  pointerContainer.clear();
238 }
239 
240 
244 template<class T> class DtDeepCopyPointerVector
245 {
246 private:
247  std::vector<T*>& myVector;
248 public:
250  DtDeepCopyPointerVector(std::vector<T*>& targetVector) : myVector(targetVector)
251  {
254  }
255 
257  void operator() (T* element)
258  {
259  if (!element)
260  {
261  myVector.push_back(element);
262  }
263  else
264  {
265  myVector.push_back(new T(*element));
266  }
267  }
268 };
269 
273 template<class T> class DtDeepCopyPointerSet
274 {
275 private:
276  std::set<T*>& mySet;
277 public:
279  DtDeepCopyPointerSet(std::set<T*>& targetSet) : mySet(targetSet)
280  {
283  }
284 
286  void operator() (T* element)
287  {
288  if (!element)
289  {
290  mySet.insert(element);
291  }
292  else
293  {
294  mySet.insert(new T(*element));
295  }
296  }
297 };
298 
300 template<class T> void DtDeleteByPointerMap(T& byPointerMap)
301 {
303  typename T::iterator iter = byPointerMap.begin();
304  typename T::const_iter theEnd = byPointerMap.end();
305  for (; iter != theEnd; ++iter)
306  {
307  delete iter->first;
308  }
309  byPointerMap.clear();
310 }
311 
316 template<class T, class Y> class DtDeepCopyByPointerMap
317 {
318 private:
319  std::map<T*, Y>& myMap;
320 public:
322  DtDeepCopyByPointerMap(std::map<T*, Y>& targetMap) : myMap(targetMap)
323  {
326  }
327 
329  void operator() (const std::pair<T* const, Y> element)
330  {
331  if (!element.first)
332  {
333  myMap.insert(element);
334  }
335  else
336  {
337  myMap.insert(std::make_pair(new T(*element.first), element.second));
338  }
339  }
340 };
341 
343 template<class T> void DtDeleteToPointerMap(T& pointerMap)
344 {
346  typename T::iterator iter = pointerMap.begin();
347  typename T::const_iterator theEnd = pointerMap.end();
348  for (; iter != theEnd; ++iter)
349  {
350  delete iter->second;
351  }
352  pointerMap.clear();
353 }
354 
359 template<class T, class Y> class DtDeepCopyToPointerMap
360 {
361 private:
362  std::map<T, Y*>& myMap;
363 public:
365  DtDeepCopyToPointerMap(std::map<T, Y*>& targetMap) : myMap(targetMap)
366  {
368  DtDeleteToPointerMap(targetMap);
369  }
370 
372  void operator() (const std::pair<T, Y* const> element)
373  {
374  if (!element.second)
375  {
376  myMap.insert(element);
377  }
378  else
379  {
380  myMap.insert(std::make_pair(element.first, new Y(*element.second)));
381  }
382  }
383 };
384 
385 // The links between a source key map to elements in a target key map
386 // are reconstructed in the target map to the source map
387 template<class TargetKeyType, class SourceKeyType, class T> class DtSourceKeyToTargetKeyLinkReconstructor
388 {
389 private:
390  std::map<TargetKeyType, T*>& myTargetMap;
391  std::map<SourceKeyType, T*> const& mySourceMap;
392 
393 public:
394  // Constructor
396  std::map<TargetKeyType, T*>& targetMap,
397  std::map<SourceKeyType, T*> const& sourceMap)
398  : myTargetMap(targetMap)
399  , mySourceMap(sourceMap)
400  {}
401 
402  // Function operator
403  void operator() (std::pair<TargetKeyType, T*> element)
404  {
405  if (!element.second)
406  {
407  myTargetMap[element.first] = 0;
408  }
409  else
410  {
411  typename std::map<SourceKeyType, T*>::const_iterator findIter = mySourceMap.find(element.second->handle());
412  if (findIter != mySourceMap.end())
413  {
414  myTargetMap[element.first] = findIter->second;
415  }
416  }
417  }
418 };
419 
422 template <class T, class Thandle> void DtAdjustHandles(T* info, std::map<Thandle, T*>& byHandle,
423  std::map<MAKRti::DtString, T*>& byName)
424 {
425  // Walk backwards from end of name map until just past info's position,
426  // swapping handle values and reinserting into byHandle map along the way.
427  // Start at end of byName map using info's handle which is the highest value.
428  typename std::map<MAKRti::DtString, T*>::reverse_iterator rClassIter = byName.rbegin();
429  Thandle handleReplacement = info->handle();
430 
431  // Stopping position is the iterator before the inserted info
432  typename std::map<MAKRti::DtString, T*>::iterator findIter = byName.find(info->name());
433  typename std::map<MAKRti::DtString, T*>::reverse_iterator rClassEnd(findIter);
434 
435  for (; rClassIter != rClassEnd; ++rClassIter)
436  {
437  Thandle thisHandle = rClassIter->second->handle();
438  rClassIter->second->setHandle(handleReplacement);
439  byHandle[handleReplacement] = rClassIter->second;
440  handleReplacement = thisHandle;
441  }
442 }
443 
446 template <class T, class Thandle> void DtAdjustOwnHandles(T* info, std::map<Thandle, T*>& byHandle,
447  std::map<Thandle, T*>& ownByHandle, std::map<MAKRti::DtString, T*>& byName)
448 {
449  // Walk backwards from end of name map until just past info's position,
450  // swapping handle values and reinserting into byHandle map along the way.
451  // Start at end of byName map using info's handle which is the highest value.
452  typename std::map<MAKRti::DtString, T*>::reverse_iterator rClassIter = byName.rbegin();
453  Thandle handleReplacement = info->handle();
454 
455  // Stopping position is the iterator before the inserted info
456  typename std::map<MAKRti::DtString, T*>::iterator findIter = byName.find(info->name());
457  typename std::map<MAKRti::DtString, T*>::reverse_iterator rClassEnd(findIter);
458 
459  for (; rClassIter != rClassEnd; ++rClassIter)
460  {
461  Thandle thisHandle = rClassIter->second->handle();
462  rClassIter->second->setHandle(handleReplacement);
463  byHandle[handleReplacement] = rClassIter->second;
464  ownByHandle[handleReplacement] = rClassIter->second;
465  handleReplacement = thisHandle;
466  }
467 }
468 
472 template< typename T, typename TContainer >
473 bool DtUNIQUE_INSERT( const T& value, TContainer& container )
474 {
475  typename TContainer::iterator pos = std::find( container.begin(), container.end(), value );
476  if ( pos != container.end() )
477  {
479  return false;
480  }
481  else
482  {
483  container.insert( pos, value );
484  return true;
485  }
486 };
487 
489 #ifdef DtTHROW_PROPAGATE
490 #undef DtTHROW_PROPAGATE
491 #endif
492 #define DtTHROW_PROPAGATE(exceptionClass,errorMsg, exPtr) \
493  throw exceptionClass(MAKRti::DtString(#exceptionClass": ") + errorMsg, __DtFUNC__, MAKRti::DtFilename::stripPath(__FILE__), __LINE__, exPtr)
494 
496 {
500 };
501 
502 typedef MAKRti::DtTemplatedException<DtRtiExceptionDesignatorDefault> DtRtiException;
503 typedef MAKRti::DtTemplatedException<DtRtiExceptionDesignatorPopup> DtRtiExceptionPopup;
504 typedef MAKRti::DtTemplatedException<DtRtiExceptionDesignatorInvalidRidExpression> DtRtiExceptionInvalidRidExpression;
505 
506 DT_DLL_RTIUTIL typedef std::set<MAKRti::DtInetAddr> DtInetAddrSet;
507 
509 DT_DLL_RTIUTIL MAKRti::DtInetAddr DtDefaultInterfaceAddr();
510 
514 #ifndef __solaris__
515 #ifndef __sgi__
516 DT_DLL_RTIUTIL int DtEnumerateInterfaces(std::vector<MAKRti::DtInetAddr>& addresses,
517  bool ignoreLoopback);
520 DT_DLL_RTIUTIL bool DtIsIpOfLocalInterface(const MAKRti::DtInetAddr& addrInQuestion, bool refresh = false);
521 #endif // sgi
522 #endif // solaris
523 
524 DT_DLL_RTIUTIL unsigned long long DtFirstHostMACAddr();
525 
528 DT_DLL_RTIUTIL MAKRti::DtString timeString(const MAKRti::DtClock& clock);
529 
531 DT_DLL_RTIUTIL MAKRti::DtString timeString();
532 
534 DT_DLL_RTIUTIL void writeMessageToStdErrPipe(const MAKRti::DtString& msg);
535 
536 
537 #endif
Definition: rtiUtil.h:497
DT_DLL_RTIUTIL MAKRti::DtInetAddr DtDefaultInterfaceAddr()
Get&#39;s the address of the default network interface on this machine.
std::pair< MAKRti::DtInetAddr, int > DtInetAddrAndPort
Definition: rtiUtil.h:148
DT_DLL_RTIUTIL void DtSetNotifyLevel(unsigned int notifyLevel)
void DtDeletePointerContainer(T &pointerContainer)
Delete elements of a unary container (e.g. vector or set) of pointers.
Definition: rtiUtil.h:227
DT_DLL_RTIUTIL MAKRti::DtFilename & DtResolveAbsoluteFileLocation(const MAKRti::DtString &path, const MAKRti::DtString &fileName, MAKRti::DtFilename &resolvedFilePath)
Returns the absolute file location Returns the constructed file name in the file name given as a para...
DT_DLL_RTIUTIL int DtGetKey()
Returns a single character of input from stdin.
Definition: rtiUtil.h:205
DT_DLL_RTIUTIL void DtRtiAttachNotificationPrinter(MAKRti::DtNotifyLevelType level, MAKRti::DtPrinter *printer)
Windows only: Attach a MAKRti::DtPrinter to the RTI .dll&#39;s internal notification stream, since they are not exported.
Definition: rtiUtil.h:190
std::map< T, Y * > & myMap
Definition: rtiUtil.h:362
DT_DLL_RTIUTIL void shutdownAssistant(bool force)
DT_DLL_RTIUTIL bool DtNonBlockingPollInputLine(MAKRti::DtString &buffer)
Polls line-buffered standard input without blocking execution.
DT_DLL_RTIUTIL MAKRti::DtString DtGetProcessName()
Return the process name of the current process.
void DtDeleteByPointerMap(T &byPointerMap)
Delete key elements of a map by pointers.
Definition: rtiUtil.h:300
DT_DLL_RTIUTIL void startupAssistant()
bool DtUNIQUE_INSERT(const T &value, TContainer &container)
Insert a copy of a value into a container IF that value is not already in the container If the value ...
Definition: rtiUtil.h:473
DtDeepCopyByPointerMap(std::map< T *, Y > &targetMap)
Constructor.
Definition: rtiUtil.h:322
Definition: rtiUtil.h:191
std::map< T *, Y > & myMap
Definition: rtiUtil.h:319
DT_DLL_RTIUTIL MAKRti::DtString DtPerformDNSLookup(MAKRti::DtInetAddr addr)
Could be costly operation.
DT_DLL_RTIUTIL int DtBitsRequiredToRepresent(unsigned long x)
Return the number of bits required to represent the given value as an unsigned integer.
DT_DLL_RTIUTIL void writeMessageToStdErrPipe(const MAKRti::DtString &msg)
Write the given message to a stdErr pipe.
void DtAdjustOwnHandles(T *info, std::map< Thandle, T * > &byHandle, std::map< Thandle, T * > &ownByHandle, std::map< MAKRti::DtString, T * > &byName)
The given info has been inserted at end of byHandle map (with highest handle value).
Definition: rtiUtil.h:446
Definition: rtiUtil.h:194
DT_DLL_RTIUTIL MAKRti::DtString timeString(const MAKRti::DtClock &clock)
Return a string representing elapsed time and absolute time in seconds from clock wall clock time fro...
void DtAdjustHandles(T *info, std::map< Thandle, T * > &byHandle, std::map< MAKRti::DtString, T * > &byName)
The given info has been inserted at end of byHandle map (with highest handle value).
Definition: rtiUtil.h:422
std::set< T * > & mySet
Definition: rtiUtil.h:276
const unsigned int DtGreatestValidPortNumber
Definition: rtiUtil.h:52
Deep copy a set pointer entry into the provided target set This helper functor is used in for_each to...
Definition: rtiUtil.h:273
void DtDeleteToPointerMap(T &pointerMap)
Delete value elements of a map to pointers.
Definition: rtiUtil.h:343
void operator()(T *element)
Function operator.
Definition: rtiUtil.h:286
int targetFedexHandle
Definition: rtiUtil.h:198
DtRtiAssistantCommandEnum
Definition: rtiUtil.h:185
DT_DLL_RTIUTIL bool DtReadFile(FILE *fileHandle, char **fileBuffer, unsigned int *fileSize)
Read an opened file into a new buffer of returned size.
void operator()(const std::pair< T, Y *const > element)
Function operator.
Definition: rtiUtil.h:372
DtDeepCopyToPointerMap(std::map< T, Y * > &targetMap)
Constructor.
Definition: rtiUtil.h:365
Definition: rtiUtil.h:189
DT_DLL_RTIUTIL int DtKBHit()
Detect if there has been a button press on stdin.
DT_DLL_RTIUTIL MAKRti::DtException const & DtInitialException(MAKRti::DtException const &ex)
Return the initial exception if exceptions were chained or this one if not.
DT_DLL_RTIUTIL MAKRti::DtFilename DtRtiLibPath(const MAKRti::DtString &searchPath="")
Search the system path for the RTI library and return the path to it If searchPath isn&#39;t specified...
MAKRti::DtTemplatedException< DtRtiExceptionDesignatorDefault > DtRtiException
Definition: rtiUtil.h:502
DtRtiExceptionDesignator
Definition: rtiUtil.h:495
DT_DLL_RTIUTIL MAKRti::DtString addrAndPortToString(const DtInetAddrAndPort &addrPort)
DT_DLL_RTIUTIL typedef std::set< MAKRti::DtInetAddr > DtInetAddrSet
Definition: rtiUtil.h:506
Definition: rtiUtil.h:498
DT_DLL_RTIUTIL int DtEnumerateInterfaces(std::vector< MAKRti::DtInetAddr > &addresses, bool ignoreLoopback)
Populate addresses with the IPs of local NICs.
Deep copy a map of pointer entries into the provided target map.
Definition: rtiUtil.h:359
std::vector< T * > & myVector
Definition: rtiUtil.h:247
DtRtiAssistantStartupRequest
Definition: rtiUtil.h:202
DT_DLL_RTIUTIL bool changeAssistantStartup(DtRtiAssistantStartupRequest desiredState)
DT_DLL_RTIUTIL MAKRti::DtString & DtMakeFileNameUnique(MAKRti::DtString &fileName)
Given the filepath, append unique characters to base file name to make it unique Returns the submitte...
DT_DLL_RTIUTIL const MAKRti::DtString & DtGetLocalHostName()
Returns the local hostname. Not threadsafe.
DT_DLL_RTIUTIL MAKRti::DtFilename & DtMakeLogFilePath(const MAKRti::DtString &baseFilePath, const MAKRti::DtString &fileName, bool makeUnique, MAKRti::DtFilename &resolvedFilePath)
Makes a log file name from the given path and file name.
Definition: rtiUtil.h:206
Deep copy a vector pointer entry into the provided target vector This helper functor is used in for_e...
Definition: rtiUtil.h:244
DT_DLL_RTIUTIL bool DtLocateConfigFile(MAKRti::DtFilename const &fileName, MAKRti::DtFilename &locatedFileName)
Locate a configuration file in the following order.
DT_DLL_RTIUTIL void queryAssistantStartup(bool &isStartupItem, bool &isUserStartupItem)
Definition: rtiUtil.h:188
DT_DLL_RTIUTIL unsigned long long DtFirstHostMACAddr()
Definition: rtiUtil.h:204
int assistantHandle
Definition: rtiUtil.h:197
Deep copy a map pointer entry into the provided target map.
Definition: rtiUtil.h:316
void operator()(T *element)
Function operator.
Definition: rtiUtil.h:257
void operator()(const std::pair< T *const, Y > element)
Function operator.
Definition: rtiUtil.h:329
DT_DLL_RTIUTIL MAKRti::DtFilename DtRtiSearchPathList(const MAKRti::DtFilename &libName, const MAKRti::DtString &searchPath="")
Search the system path for the specified library by name, and return the path to it If searchPath isn...
MAKRti::DtTemplatedException< DtRtiExceptionDesignatorPopup > DtRtiExceptionPopup
Definition: rtiUtil.h:503
DtDeepCopyPointerSet(std::set< T * > &targetSet)
Constructor.
Definition: rtiUtil.h:279
DT_DLL_RTIUTIL bool removeAssistantStartup()
MAKRti::DtTemplatedException< DtRtiExceptionDesignatorInvalidRidExpression > DtRtiExceptionInvalidRidExpression
Definition: rtiUtil.h:504
#define DT_DLL_RTIUTIL
Definition: rtiMsConfig.h:160
DT_DLL_RTIUTIL bool DtIsIpOfLocalInterface(const MAKRti::DtInetAddr &addrInQuestion, bool refresh=false)
returns true for isAnyAddr, and if DtInetaddr matches ip of a local interface.
DT_DLL_RTIUTIL void DtRtiDetachNotificationPrinter(MAKRti::DtNotifyLevelType level, MAKRti::DtPrinter *printer)
Windows only: Detach a MAKRti::DtPrinter from the RTI .dll&#39;s internal notification stream...
Definition: rtiUtil.h:187
int targetFederateHandle
Definition: rtiUtil.h:199
DT_DLL_RTIUTIL MAKRti::DtOutputStream & DtRtiOutputStream(MAKRti::DtNotifyLevelType level)
Return a reference to the RTI&#39;s MAKRti::DtOutputStream objects so plugins and applications can log to...
DtDeepCopyPointerVector(std::vector< T * > &targetVector)
Constructor.
Definition: rtiUtil.h:250
Definition: rtiUtil.h:207
DtRtiAssistantCommandEnum commType
Definition: rtiUtil.h:196

Document ID: Generated on Sun Jul 20 16:15:30 EDT 2025 from SVN revision 277985
Copyright © 2005-2025 MAK Technologies Inc. All Rights Reserved (www.mak.com)