Version: 9.16.0
YACS::BASES Namespace Reference

Classes

class  AlternateThreadPT
 This class provides a mechanism to run two threads alternately. More...
 
class  AutoConstRefCnt
 
class  AutoCppPtr
 
class  AutoLocker
 
class  AutoRefCnt
 
class  ConditionPT
 
class  DynLibLoaderGNU
 
class  DynLibLoaderWin
 
class  MutexPT
 
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 }