57 lines
973 B
C
57 lines
973 B
C
|
// Copyright (C) 2007 Id Software, Inc.
|
||
|
//
|
||
|
|
||
|
#ifndef __IDLIB_HANDLE_H__
|
||
|
#define __IDLIB_HANDLE_H__
|
||
|
|
||
|
namespace sdUtility {
|
||
|
/*
|
||
|
============
|
||
|
sdHandle
|
||
|
============
|
||
|
*/
|
||
|
template< class T, T invalidValue >
|
||
|
class sdHandle {
|
||
|
public:
|
||
|
typedef T valueType_t;
|
||
|
|
||
|
sdHandle() :
|
||
|
value ( invalidValue ) {}
|
||
|
|
||
|
sdHandle( const T& rhs ) :
|
||
|
value ( rhs ) {}
|
||
|
|
||
|
sdHandle& operator=( const T& rhs ) {
|
||
|
value = rhs;
|
||
|
return *this;
|
||
|
}
|
||
|
|
||
|
bool operator==( const sdHandle< T, invalidValue >& rhs ) {
|
||
|
return value == rhs.value;
|
||
|
}
|
||
|
|
||
|
bool operator!() {
|
||
|
return !IsValid();
|
||
|
}
|
||
|
|
||
|
bool IsValid() const {
|
||
|
return value != INVALID_VALUE;
|
||
|
}
|
||
|
|
||
|
void Release() {
|
||
|
value = INVALID_VALUE;
|
||
|
}
|
||
|
|
||
|
operator T() const {
|
||
|
return value;
|
||
|
}
|
||
|
|
||
|
private:
|
||
|
T value;
|
||
|
static T INVALID_VALUE;
|
||
|
};
|
||
|
template< class T, T invalidValue > T sdHandle< T, invalidValue >::INVALID_VALUE = invalidValue;
|
||
|
}
|
||
|
|
||
|
#endif // __IDLIB_HANDLE_H__
|