00001 00002 // Name: variantstream.h 00003 // Purpose: Helper class for using variants in streams 00004 // Author: Julian Smart 00005 // Modified by: 00006 // Created: 2009-02-27 00007 // RCS-ID: 00008 // Copyright: (c) Julian Smart 00009 // License: New BSD License 00011 00012 #ifndef _VARIANTSTREAM_H_ 00013 #define _VARIANTSTREAM_H_ 00014 00015 /* 00016 * Forward declarations 00017 */ 00018 00019 class wxInputStream; 00020 class wxOutputStream; 00021 class wxDataInputStream; 00022 class wxDataOutputStream; 00023 00028 class wxDataStreamHelper 00029 { 00030 public: 00031 wxDataStreamHelper(wxOutputStream& stream, wxDataOutputStream& dataStream) 00032 { 00033 Init(); 00034 00035 m_outputStream = & stream; 00036 m_dataOutputStream = & dataStream; 00037 } 00038 wxDataStreamHelper(wxInputStream& stream, wxDataInputStream& dataStream) 00039 { 00040 Init(); 00041 00042 m_inputStream = & stream; 00043 m_dataInputStream = & dataStream; 00044 } 00045 00046 bool Read(wxVariant& variant); 00047 00048 bool Write(const wxVariant& value); 00049 bool Write(const wxString& value, const wxString& name); 00050 bool WriteIfNotEmpty(const wxString& value, const wxString& name); 00051 bool Write(double value, const wxString& name); 00052 bool Write(long value, const wxString& name); 00053 bool Write(int value, const wxString& name); 00054 bool Write(bool value, const wxString& name); 00055 bool WriteEnd(); 00056 00057 void Init(); 00058 00059 wxOutputStream* GetOutputStream() const { return m_outputStream; } 00060 wxDataOutputStream* GetDataOutputStream() const { return m_dataOutputStream; } 00061 00062 wxInputStream* GetInputStream() const { return m_inputStream; } 00063 wxDataInputStream* GetDataInputStream() const { return m_dataInputStream; } 00064 00065 protected: 00066 wxOutputStream* m_outputStream; 00067 wxDataOutputStream* m_dataOutputStream; 00068 00069 wxInputStream* m_inputStream; 00070 wxDataInputStream* m_dataInputStream; 00071 }; 00072 00073 #endif 00074 // _VARIANTSTREAM_H_