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
		
			
				
	
	
		
			34 lines
		
	
	
		
			813 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			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();
 | |
| }
 | |
| 
 |