⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lifetimelibrary.cpp

📁 sip 开源代码 源于novell sip 开源代码 源于novell
💻 CPP
字号:
#include "SingletonHolder.hpp"#include "LifetimeLibrary.hpp"utilspp::LifetimeLibraryImpl::LifetimeLibraryImpl()   :   mTrackerArray( NULL ),   mNbElements( 0 ){}utilspp::LifetimeLibraryImpl::~LifetimeLibraryImpl(){   terminate();}voidutilspp::LifetimeLibraryImpl::add( utilspp::PrivateMembers::LifetimeTracker *tracker ){   utilspp::PrivateMembers::TrackerArray newArray = static_cast<      utilspp::PrivateMembers::TrackerArray >(std::realloc(mTrackerArray, 							    mNbElements + 1));   if( newArray == NULL )   {      throw std::bad_alloc();   }   mTrackerArray = newArray;   utilspp::PrivateMembers::TrackerArray pos =      std::upper_bound(mTrackerArray, 		      mTrackerArray + mNbElements,		      tracker,		      &utilspp::PrivateMembers::LifetimeTracker::compare);   std::copy_backward(pos, 		      mTrackerArray + mNbElements, 		      mTrackerArray + mNbElements + 1);      *pos = tracker;   mNbElements++;};voidutilspp::LifetimeLibraryImpl::terminate(){   //The number of elements MUST always be equal or over zero.   assert( mNbElements >= 0 );   while( mNbElements > 0 )   {      //At this point the mTrackerArray MUST not be NULL.      assert( mTrackerArray != NULL );            //Pick the element at the top of the stack.      utilspp::PrivateMembers::LifetimeTracker* top =  	mTrackerArray[mNbElements - 1];      //Remove that object off the stack.      //Don't check errors-realloc with less memory, cause that can't fail.      mTrackerArray = 	static_cast< utilspp::PrivateMembers::TrackerArray >	(std::realloc(mTrackerArray, --mNbElements));            //Destroy the element.      delete top;   }}unsigned int utilspp::getLongevity( utilspp::LifetimeLibraryImpl * ){   return 0;}

⌨️ 快捷键说明

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