1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- // Copyright (C) 2002-2012 Nikolaus Gebhardt
- // This file is part of the "Irrlicht Engine".
- // For conditions of distribution and use, see copyright notice in irrlicht.h
- #ifndef IRR_I_ATTRIBUTE_EXCHANGING_OBJECT_H_INCLUDED
- #define IRR_I_ATTRIBUTE_EXCHANGING_OBJECT_H_INCLUDED
- #include "IReferenceCounted.h"
- namespace irr
- {
- namespace io
- {
- class IAttributes;
- //! Enumeration flags passed through SAttributeReadWriteOptions to the IAttributeExchangingObject object
- enum E_ATTRIBUTE_READ_WRITE_FLAGS
- {
- //! Serialization/deserialization is done for an xml file
- EARWF_FOR_FILE = 0x00000001,
- //! Serialization/deserialization is done for an editor property box
- EARWF_FOR_EDITOR = 0x00000002,
- //! When writing filenames, relative paths should be used
- EARWF_USE_RELATIVE_PATHS = 0x00000004
- };
- //! struct holding data describing options
- struct SAttributeReadWriteOptions
- {
- //! Constructor
- SAttributeReadWriteOptions()
- : Flags(0), Filename(0)
- {
- }
- //! Combination of E_ATTRIBUTE_READ_WRITE_FLAGS or other, custom ones
- s32 Flags;
- //! Optional filename
- const fschar_t* Filename;
- };
- //! An object which is able to serialize and deserialize its attributes into an attributes object
- class IAttributeExchangingObject : virtual public IReferenceCounted
- {
- public:
- //! Writes attributes of the object.
- /** Implement this to expose the attributes of your scene node animator for
- scripting languages, editors, debuggers or xml serialization purposes. */
- virtual void serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options=0) const {}
- //! Reads attributes of the object.
- /** Implement this to set the attributes of your scene node animator for
- scripting languages, editors, debuggers or xml deserialization purposes. */
- virtual void deserializeAttributes(io::IAttributes* in, io::SAttributeReadWriteOptions* options=0) {}
- };
- } // end namespace io
- } // end namespace irr
- #endif
|