Moved Locker class out of LockedStorage to accomodate GCC compiler.

git-svn-id: svn://svn.code.sf.net/p/loki-lib/code/trunk@791 7ec92016-0320-0410-acc4-a06ded1c099a
This commit is contained in:
rich_sposato 2006-12-15 01:36:29 +00:00
parent 6eabeea489
commit 97e1fd6b59

View file

@ -238,43 +238,43 @@ namespace Loki
/// LockedStorage which calls other functions to lock the object.
////////////////////////////////////////////////////////////////////////////////
template <class T>
class Locker
{
public:
Locker( const T * p ) : pointee_( const_cast< T * >( p ) )
{
if ( pointee_ != 0 )
pointee_->Lock();
}
~Locker( void )
{
if ( pointee_ != 0 )
pointee_->Unlock();
}
operator T * ()
{
return pointee_;
}
T * operator->()
{
return pointee_;
}
private:
Locker( void );
Locker & operator = ( const Locker & );
T * pointee_;
};
template <class T>
class LockedStorage
{
public:
template <class T>
class Locker
{
public:
Locker( const T * p ) : pointee_( const_cast< T * >( p ) )
{
if ( pointee_ != 0 )
pointee_->Lock();
}
~Locker( void )
{
if ( pointee_ != 0 )
pointee_->Unlock();
}
operator T * ()
{
return pointee_;
}
T * operator->()
{
return pointee_;
}
private:
Locker( void );
Locker & operator = ( const Locker & );
T * pointee_;
};
typedef T* StoredType; /// the type of the pointee_ object
typedef T* InitPointerType; /// type used to declare OwnershipPolicy type.
typedef Locker< T > PointerType; /// type returned by operator->