mtollari 4db94043cb Patch level : 12.0 no-patch
Files correlati     : 
Commento            : Spostamento in libraries delle librerie esterne di Campo per una maggiore pulizia e organizzazione

git-svn-id: svn://10.65.10.50/branches/R_10_00@24150 c028cbd2-c16b-5b4b-a496-9718f37d4682
2017-10-26 09:11:15 +00:00

34 lines
813 B
C++

template<typename T, typename TDestroyer>
void
utilspp::setLibraryLongevity(T * obj, unsigned int longevity, TDestroyer d)
{
using namespace utilspp::PrivateMembers;
LifetimeTracker * p = new ConcreteLifetimeTracker<T, TDestroyer>(
obj, longevity, d);
utilspp::LifetimeLibrarySingleton::instance().add(p);
};
template<typename T>
void
utilspp::LifetimeLibrary<T>::scheduleDestruction(T *obj, void (* func)())
{
utilspp::PrivateMembers::adapter<T> adapter = { func };
utilspp::setLibraryLongevity(obj, getLongevity( obj ), adapter);
}
template<typename T>
void
utilspp::LifetimeLibrary<T>::onDeadReference()
{
throw std::logic_error("Dead reference detected");
}
template<typename T>
utilspp::LifetimeLibraryGuard<T>::~LifetimeLibraryGuard()
{
T::instance().terminate();
}