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__
|