// 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