00001 // Copyright (C) 2002-2012 Nikolaus Gebhardt 00002 // This file is part of the "Irrlicht Engine". 00003 // For conditions of distribution and use, see copyright notice in irrlicht.h 00004 00005 #ifndef __I_ATTRIBUTE_EXCHANGING_OBJECT_H_INCLUDED__ 00006 #define __I_ATTRIBUTE_EXCHANGING_OBJECT_H_INCLUDED__ 00007 00008 #include "IReferenceCounted.h" 00009 00010 00011 namespace irr 00012 { 00013 00014 namespace io 00015 { 00016 00017 class IAttributes; 00018 00020 enum E_ATTRIBUTE_READ_WRITE_FLAGS 00021 { 00023 EARWF_FOR_FILE = 0x00000001, 00024 00026 EARWF_FOR_EDITOR = 0x00000002, 00027 00029 EARWF_USE_RELATIVE_PATHS = 0x00000004 00030 }; 00031 00032 00034 struct SAttributeReadWriteOptions 00035 { 00037 SAttributeReadWriteOptions() 00038 : Flags(0), Filename(0) 00039 { 00040 } 00041 00043 s32 Flags; 00044 00046 const fschar_t* Filename; 00047 }; 00048 00049 00051 class IAttributeExchangingObject : virtual public IReferenceCounted 00052 { 00053 public: 00054 00056 00058 virtual void serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options=0) const {} 00059 00061 00063 virtual void deserializeAttributes(io::IAttributes* in, io::SAttributeReadWriteOptions* options=0) {} 00064 00065 }; 00066 00067 } // end namespace io 00068 } // end namespace irr 00069 00070 #endif 00071