include/variantutils/varianthandlers.h

Go to the documentation of this file.
00001 
00002 // Name:        varianthandlers.h
00003 // Purpose:     Handlers to create, read and write variants
00004 // Author:      Julian Smart
00005 // Modified by:
00006 // Created:     2006-05-11
00007 // RCS-ID:      $$
00008 // Copyright:   (c) Julian Smart
00009 // Licence:     New BSD License
00011 
00012 #ifndef _WX_VARIANTHANDLERS_H_
00013 #define _WX_VARIANTHANDLERS_H_
00014 
00015 #include "wx/defs.h"
00016 #include "wx/variant.h"
00017 
00018 class WXDLLEXPORT wxOutputStream;
00019 class WXDLLEXPORT wxInputStream;
00020 class WXDLLEXPORT wxDataOutputStream;
00021 class WXDLLEXPORT wxDataInputStream;
00022 
00028 class wxVariantHandler: public wxObject
00029 {
00030     DECLARE_CLASS(wxVariantHandler)
00031 public:
00032     wxVariantHandler(const wxString& name = wxEmptyString)
00033         : m_name(name)
00034         { }
00035 
00036     virtual bool ReadValue(const wxString& type, wxVariant& variant, wxInputStream& stream, wxDataInputStream& dataStream) = 0;
00037     virtual bool WriteValue(const wxVariant& variant, wxOutputStream& stream, wxDataOutputStream& dataStream) = 0;
00038 
00039     virtual bool CanRead(wxInputStream& WXUNUSED(stream)) { return true; }
00040     virtual bool CanHandle(const wxString& type) = 0;
00041 
00043     virtual wxVariant GetDefaultValue(const wxString& type) = 0;
00044 
00045     void SetName(const wxString& name) { m_name = name; }
00046     const wxString& GetName() const { return m_name; }
00047 
00048 protected:
00049 
00050     wxString  m_name;
00051 };
00052 
00057 class wxVariantHandlers: public wxObject
00058 {
00059 DECLARE_CLASS(wxVariantHandlers)
00060 public:
00061 
00062 // Construction & destruction
00063 
00064     wxVariantHandlers() {}
00065     ~wxVariantHandlers() {}
00066 
00067     static bool CanHandle(const wxString& type);
00068     static bool Read(wxVariant& variant, wxInputStream& stream, wxDataInputStream& dataStream);
00069     static bool Write(const wxVariant& variant, wxOutputStream& stream, wxDataOutputStream& dataStream);
00070 
00072     static wxVariant GetDefaultValue(const wxString& type);
00073 
00074     static wxList& GetHandlers() { return sm_handlers; }
00075     static void AddHandler(wxVariantHandler *handler);
00076     static void InsertHandler(wxVariantHandler *handler);
00077     static bool RemoveHandler(const wxString& name);
00078     static wxVariantHandler *FindHandlerByName(const wxString& name);
00079     static wxVariantHandler *FindHandlerByType(const wxString& type);
00080 
00081     static void CleanUpHandlers();
00082     static void InitStandardHandlers();
00083 
00084 private:
00085 
00086     static wxList   sm_handlers;
00087 };
00088 
00090 bool wxReadVariant(wxVariant& variant, wxInputStream& stream, wxDataInputStream& dataStream);
00091 
00093 bool wxWriteVariant(const wxVariant& variant, wxOutputStream& stream, wxDataOutputStream& dataStream);
00094 
00096 wxOutputStream& operator<<(wxOutputStream& stream, const wxVariant& variant);
00097 wxInputStream& operator>>(wxInputStream& stream, wxVariant& variant);
00098 
00099 #endif
00100     // _WX_VARIANTHANDLERS_H_

Generated on Wed May 6 19:20:19 2009 for AxTk by  doxygen 1.5.1