etqw-sdk/source/idlib/Handle.h

57 lines
973 B
C
Raw Permalink Normal View History

2008-05-29 00:00:00 +00:00
// 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__