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__
 |