mirror of
https://github.com/minetest/irrlicht.git
synced 2024-12-27 03:00:32 +01:00
48 lines
1.3 KiB
C
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
|