// Copyright: (c) 1998 Guilhem Lavaux
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
-#ifndef __WXOBJSTRM_H__
-#define __WXOBJSTRM_H__
+#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;
+ int n_children, children_removed;
wxList children;
- wxObject *parent;
+ wxObjectStreamInfo *parent;
wxObject *object;
+ bool duplicate, recall;
};
class wxObjectOutputStream : public wxFilterOutputStream {
public:
wxObjectOutputStream(wxOutputStream& s);
- void AddChildren(wxObject *obj);
+ void AddChild(wxObject *obj);
bool SaveObject(wxObject& obj);
bool FirstStage() const { return m_stage == 0; }
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 *GetParent() const { return m_current_info->parent; }
+ 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;
void ProcessObjectData(wxObjectStreamInfo *info);
protected:
+ bool m_secondcall;
wxObjectStreamInfo *m_current_info;
wxList m_solver;
};
#endif
+ // wxUSE_STREAMS && wxUSE_SERIAL
+
+#endif
+// _WX_WXOBJSTRM_H__