irrlicht/include/IUserData.h

48 lines
1.3 KiB
C++

// This file is part of the "Irrlicht Engine".
// For conditions of distribution and use, see copyright notice in irrlicht.h
#ifndef IRR_I_USER_DATA_H_INCLUDED
#define IRR_I_USER_DATA_H_INCLUDED
#include "irrTypes.h"
namespace irr
{
namespace io
{
class IAttributes;
struct SAttributeReadWriteOptions;
//! Irrlicht may allow users to set their own data via those pointers
//! Irrlicht has no memory control over IUserData, the user is completely responsible for that
class IUserData
{
public:
//! To identify the class type.
//! You can for example use MAKE_IRR_ID to create four CC codes
virtual irr::u32 getType() const { return 0; }
//! To be overloaded if comparisons matter
//! You can then cast other to your derived class
virtual bool compare(const IUserData& other) const
{
return getType() == other.getType();
}
//! Used internally by Irrlicht to check if data has changed
bool operator!=(const IUserData& other) const
{
return !compare(other);
}
protected:
// Irrlicht is never allowed to delete this
// If users want to delete such objects they should go over derived classes
~IUserData() {}
};
} // end namespace io
} // end namespace irr
#endif // IRR_I_USER_DATA_H_INCLUDED