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