2009-07-19 03:11:20 +04:00
|
|
|
/*
|
|
|
|
* Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
|
|
|
|
* Distributed under the terms of the MIT License.
|
|
|
|
*/
|
|
|
|
#ifndef OBJECT_ID_H
|
|
|
|
#define OBJECT_ID_H
|
|
|
|
|
|
|
|
|
|
|
|
#include <Referenceable.h>
|
|
|
|
|
|
|
|
|
2010-12-16 16:50:30 +03:00
|
|
|
class ObjectID : public BReferenceable {
|
2009-07-19 03:11:20 +04:00
|
|
|
public:
|
|
|
|
ObjectID();
|
|
|
|
virtual ~ObjectID();
|
|
|
|
|
|
|
|
inline uint32 HashValue() const;
|
|
|
|
|
|
|
|
virtual bool operator==(const ObjectID& other) const = 0;
|
|
|
|
inline bool operator!=(const ObjectID& other) const;
|
|
|
|
|
|
|
|
protected:
|
|
|
|
virtual uint32 ComputeHashValue() const = 0;
|
|
|
|
|
|
|
|
protected:
|
|
|
|
mutable uint32 fHashValue;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
uint32
|
|
|
|
ObjectID::HashValue() const
|
|
|
|
{
|
|
|
|
if (fHashValue == 0)
|
|
|
|
fHashValue = ComputeHashValue();
|
|
|
|
return fHashValue;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool
|
|
|
|
ObjectID::operator!=(const ObjectID& other) const
|
|
|
|
{
|
|
|
|
return !(*this == other);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endif // OBJECT_ID_H
|