Line data Source code
1 : // Copyright (C) 2002-2012 Nikolaus Gebhardt
2 : // This file is part of the "Irrlicht Engine".
3 : // For conditions of distribution and use, see copyright notice in irrlicht.h
4 :
5 : #ifndef __I_ATTRIBUTE_EXCHANGING_OBJECT_H_INCLUDED__
6 : #define __I_ATTRIBUTE_EXCHANGING_OBJECT_H_INCLUDED__
7 :
8 : #include "IReferenceCounted.h"
9 :
10 :
11 : namespace irr
12 : {
13 :
14 : namespace io
15 : {
16 :
17 : class IAttributes;
18 :
19 : //! Enumeration flags passed through SAttributeReadWriteOptions to the IAttributeExchangingObject object
20 : enum E_ATTRIBUTE_READ_WRITE_FLAGS
21 : {
22 : //! Serialization/Deserializion is done for an xml file
23 : EARWF_FOR_FILE = 0x00000001,
24 :
25 : //! Serialization/Deserializion is done for an editor property box
26 : EARWF_FOR_EDITOR = 0x00000002,
27 :
28 : //! When writing filenames, relative paths should be used
29 : EARWF_USE_RELATIVE_PATHS = 0x00000004
30 : };
31 :
32 :
33 : //! struct holding data describing options
34 : struct SAttributeReadWriteOptions
35 : {
36 : //! Constructor
37 : SAttributeReadWriteOptions()
38 : : Flags(0), Filename(0)
39 : {
40 : }
41 :
42 : //! Combination of E_ATTRIBUTE_READ_WRITE_FLAGS or other, custom ones
43 : s32 Flags;
44 :
45 : //! Optional filename
46 : const fschar_t* Filename;
47 : };
48 :
49 :
50 : //! An object which is able to serialize and deserialize its attributes into an attributes object
51 528 : class IAttributeExchangingObject : virtual public IReferenceCounted
52 : {
53 : public:
54 :
55 : //! Writes attributes of the object.
56 : /** Implement this to expose the attributes of your scene node animator for
57 : scripting languages, editors, debuggers or xml serialization purposes. */
58 0 : virtual void serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options=0) const {}
59 :
60 : //! Reads attributes of the object.
61 : /** Implement this to set the attributes of your scene node animator for
62 : scripting languages, editors, debuggers or xml deserialization purposes. */
63 0 : virtual void deserializeAttributes(io::IAttributes* in, io::SAttributeReadWriteOptions* options=0) {}
64 :
65 : };
66 :
67 : } // end namespace io
68 : } // end namespace irr
69 :
70 : #endif
71 :
|