mirror of
https://github.com/minetest/irrlicht.git
synced 2024-12-25 18:20:30 +01:00
feaed624f7
This can't work as on deserialize it would need to have the type for IUserData already. And that's impossible with the way it's used right now. Would need some kind of factory or so probably, but I'll ignore this for now. Note that it's still possible to call some serialization manually on the derived classes by adding it there if needed. git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6568 dfc29bdd-3216-0410-991c-e03cc46cb475
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
|