123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 |
- #ifndef _weakpointer_h_
- #define _weakpointer_h_
- template< class T > class WeakPointer {
- public:
- WeakPointer( T* t = 0 )
-
- {impl = _WeakPointer_New( t );}
- T* Pointer()
-
- {return (T*) _WeakPointer_Pointer( this->impl );}
- int operator==( WeakPointer< T > wp2 )
-
- {return _WeakPointer_Equal( this->impl, wp2.impl );}
- int Hash()
-
- {return _WeakPointer_Hash( this->impl );}
- private:
- void* impl;
- };
- template< class T, class Data > class CleanUp {
- public:
- static void Set( T* t, void c( Data* d, T* t ), Data* d = 0 )
-
- {_CleanUp_Set( t, c, d );}
- static void Call( T* t )
-
- {_CleanUp_Call( t );}
- class Queue {public:
- Queue()
-
- {this->head = _CleanUp_Queue_NewHead();}
- void Set( T* t )
-
- {_CleanUp_Queue_Set( this->head, t );}
- int Call()
-
- {return _CleanUp_Queue_Call( this->head );}
- private:
- void* head;
- };
- };
- extern "C" {
- void* _WeakPointer_New( void* t );
- void* _WeakPointer_Pointer( void* wp );
- int _WeakPointer_Equal( void* wp1, void* wp2 );
- int _WeakPointer_Hash( void* wp );
- void _CleanUp_Set( void* t, void (*c)( void* d, void* t ), void* d );
- void _CleanUp_Call( void* t );
- void* _CleanUp_Queue_NewHead ();
- void _CleanUp_Queue_Set( void* h, void* t );
- int _CleanUp_Queue_Call( void* h );
- }
- #endif
|