git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2809 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			91 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /////////////////////////////////////////////////////////////////////////////
 | |
| // Name:        objstrm.h
 | |
| // Purpose:     wxObjectStream classes
 | |
| // Author:      Guilhem Lavaux
 | |
| // Modified by:
 | |
| // Created:     16/07/98
 | |
| // RCS-ID:      $Id$
 | |
| // Copyright:   (c) 1998 Guilhem Lavaux
 | |
| // Licence:     wxWindows license
 | |
| /////////////////////////////////////////////////////////////////////////////
 | |
| #ifndef _WX_WXOBJSTRM_H__
 | |
| #define _WX_WXOBJSTRM_H__
 | |
| 
 | |
| #ifdef __GNUG__
 | |
| #pragma interface
 | |
| #endif
 | |
| 
 | |
| #include "wx/defs.h"
 | |
| 
 | |
| #if wxUSE_STREAMS && wxUSE_SERIAL
 | |
| 
 | |
| #include "wx/object.h"
 | |
| #include "wx/string.h"
 | |
| #include "wx/stream.h"
 | |
| 
 | |
| class wxObjectStreamInfo : public wxObject {
 | |
|  public:
 | |
|   wxString object_name;
 | |
|   int n_children, children_removed;
 | |
|   wxList children;
 | |
|   wxObjectStreamInfo *parent;
 | |
|   wxObject *object;
 | |
|   bool duplicate, recall;
 | |
| };
 | |
| 
 | |
| class wxObjectOutputStream : public wxFilterOutputStream {
 | |
|  public:
 | |
|   wxObjectOutputStream(wxOutputStream& s);
 | |
| 
 | |
|   void AddChild(wxObject *obj);
 | |
|   bool SaveObject(wxObject& obj);
 | |
| 
 | |
|   bool FirstStage() const { return m_stage == 0; }
 | |
| 
 | |
|   wxString GetObjectName(wxObject *obj);
 | |
| 
 | |
|  protected:
 | |
|   void WriteObjectDef(wxObjectStreamInfo& info);
 | |
|   void ProcessObjectDef(wxObjectStreamInfo *info);
 | |
|   void ProcessObjectData(wxObjectStreamInfo *info);
 | |
| 
 | |
|  protected:
 | |
|   int m_stage;
 | |
|   bool m_saving;
 | |
|   wxObjectStreamInfo *m_current_info;
 | |
|   wxList m_saved_objs;
 | |
| };
 | |
| 
 | |
| class wxObjectInputStream : public wxFilterInputStream {
 | |
|  public:
 | |
|   wxObjectInputStream(wxInputStream& s);
 | |
| 
 | |
|   bool SecondCall() const { return m_secondcall; }
 | |
|   void Recall(bool on = TRUE) { m_current_info->recall = on; }
 | |
| 
 | |
|   wxObject *GetChild(int no) const;
 | |
|   wxObject *GetChild();
 | |
|   int NumberOfChildren() const { return m_current_info->n_children; }
 | |
|   void RemoveChildren(int nb);
 | |
|   wxObject *GetParent() const;
 | |
|   wxObject *LoadObject();
 | |
| 
 | |
|   wxObject *SolveName(const wxString& objName) const;
 | |
| 
 | |
|  protected:
 | |
|   bool ReadObjectDef(wxObjectStreamInfo *info);
 | |
|   wxObjectStreamInfo *ProcessObjectDef(wxObjectStreamInfo *info);
 | |
|   void ProcessObjectData(wxObjectStreamInfo *info);
 | |
| 
 | |
|  protected:
 | |
|   bool m_secondcall;
 | |
|   wxObjectStreamInfo *m_current_info;
 | |
|   wxList m_solver;
 | |
| };
 | |
| 
 | |
| #endif
 | |
|   // wxUSE_STREAMS && wxUSE_SERIAL
 | |
| 
 | |
| #endif
 | |
| // _WX_WXOBJSTRM_H__
 |