File: LifetimeLibrary.inl

package info (click to toggle)
sflphone 0.9.8.4-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 48,248 kB
  • ctags: 34,859
  • sloc: ansic: 280,525; cpp: 47,730; sh: 21,755; python: 7,039; xml: 6,528; makefile: 2,227; asm: 46
file content (33 lines) | stat: -rw-r--r-- 834 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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();
}