lifetimewithlongevity.inl

来自「sip 开源代码 源于novell sip 开源代码 源于novell」· INL 代码 · 共 57 行

INL
57
字号
template< typename T, typename TDestroyer >voidutilspp::setLongevity( T *obj, unsigned int longevity, TDestroyer d ){   using namespace utilspp::PrivateMembers;   TrackerArray newArray = static_cast< TrackerArray >(          std::realloc(mTrackerArray, mNbElements + 1));   if( newArray == NULL )   {      throw std::bad_alloc();   }   LifetimeTracker *p = 	new ConcreteLifetimeTracker< T, TDestroyer >(obj, longevity, d);   mTrackerArray = newArray;   TrackerArray pos = std::upper_bound(          mTrackerArray,          mTrackerArray + mNbElements,         p,         &LifetimeTracker::compare);   std::copy_backward(          pos,          mTrackerArray + mNbElements,          mTrackerArray + mNbElements + 1);   *pos = p;   mNbElements++;   std::atexit( &atExitFunc );}template< typename T >void utilspp::LifetimeWithLongevity< T >::scheduleDestruction( T *obj, void (*func)() ){   utilspp::PrivateMembers::adapter<T> adapter = { func };   utilspp::setLongevity( obj, getLongevity( obj ), adapter );}template< typename T >void utilspp::LifetimeWithLongevity< T >::onDeadReference(){   throw std::logic_error("Dead reference detected");}template< typename T >unsigned int utilspp::getLongevity( T * ){   return 1000;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?