Version: 9.15.0
YACS::BASES Namespace Reference

Classes

class  AlternateThreadPT
 This class provides a mechanism to run two threads alternately. More...
 
class  AutoLocker
 
class  AutoRefCnt
 
class  AutoConstRefCnt
 
class  AutoCppPtr
 
class  DynLibLoaderGNU
 
class  DynLibLoaderWin
 
class  MutexPT
 
class  ConditionPT
 
class  SemaphorePT
 
class  ThreadPT
 

Functions

template<class T , class U >
YACS::BASES::AutoRefCnt< U > DynamicCast (typename YACS::BASES::AutoRefCnt< T > &autoSubPtr) noexcept
 
template<class T , class U >
YACS::BASES::AutoRefCnt< U > DynamicCastSafe (typename YACS::BASES::AutoRefCnt< T > &autoSubPtr)
 

Function Documentation

◆ DynamicCast()

template<class T , class U >
YACS::BASES::AutoRefCnt<U> YACS::BASES::DynamicCast ( typename YACS::BASES::AutoRefCnt< T > &  autoSubPtr)
noexcept

Definition at line 85 of file AutoRefCnt.hxx.

86  {
87  T *subPtr(autoSubPtr);
88  U *ptr(dynamic_cast<U *>(subPtr));
89  typename YACS::BASES::AutoRefCnt<U> ret(ptr);
90  if(ptr)
91  ptr->incrRef();
92  return ret;
93  }

◆ DynamicCastSafe()

template<class T , class U >
YACS::BASES::AutoRefCnt<U> YACS::BASES::DynamicCastSafe ( typename YACS::BASES::AutoRefCnt< T > &  autoSubPtr)

Definition at line 96 of file AutoRefCnt.hxx.

97  {
98  T *subPtr(autoSubPtr);
99  U *ptr(dynamic_cast<U *>(subPtr));
100  if(subPtr && !ptr)
101  throw Exception("DynamicCastSafe : U is not a subtype of T !");
102  typename YACS::BASES::AutoRefCnt<U> ret(ptr);
103  if(ptr)
104  ptr->incrRef();
105  return ret;
106  }