]> git.saurik.com Git - wxWidgets.git/blobdiff - utils/serialize/sercore.cpp
no message
[wxWidgets.git] / utils / serialize / sercore.cpp
index dbd55e251001f122861798b60501e0c528082091..0fffba7f5b23eaef297f83d95d3f381488adca39 100644 (file)
@@ -1,11 +1,25 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        sercore.cpp
+// Purpose:     Serialization: core classes
+// Author:      Guilhem Lavaux
+// Modified by:
+// Created:     July 1998
+// RCS-ID:      $Id$
+// Copyright:   (c) 1998 Guilhem Lavaux
+// Licence:     wxWindows license
+/////////////////////////////////////////////////////////////////////////////
+
 #ifdef __GNUG__
 #pragma implementation "sercore.h"
 #endif
 #include <wx/objstrm.h>
 #include <wx/datstrm.h>
+#include <wx/list.h>
+#include <wx/hash.h>
 #include "sercore.h"
 
-IMPLEMENT_SERIAL_CLASS(wxList,wxObject)
+IMPLEMENT_SERIAL_CLASS(wxList, wxObject)
+IMPLEMENT_SERIAL_CLASS(wxHashTable, wxObject)
 
 void WXSERIAL(wxList)::StoreObject(wxObjectOutputStream& s)
 {
@@ -51,9 +65,43 @@ void WXSERIAL(wxList)::LoadObject(wxObjectInputStream& s)
 
   if (list->key_type == wxKEY_INTEGER) {
     for (i=0;i<number;i++)
-      list->Append( data_s.Read32(), s.GetChild(i) );
+      list->Append( data_s.Read32(), s.GetChild() );
   } else {
     for (i=0;i<number;i++)
-      list->Append( data_s.ReadString(), s.GetChild(i) );
+      list->Append( data_s.ReadString(), s.GetChild() );
+  }
+}
+
+// ----------------------------------------------------------------------------
+
+void WXSERIAL(wxHashTable)::StoreObject(wxObjectOutputStream& s)
+{
+  wxHashTable *table = (wxHashTable *)Object();
+  int i;
+
+  if (s.FirstStage()) {
+    for (i=0;i<table->n;i++)
+      s.AddChild(table->hash_table[i]);
+    return;
   }
+
+  wxDataOutputStream data_s(s);
+
+  data_s.Write8(table->key_type);
+  data_s.Write32(table->n);
+}
+
+void WXSERIAL(wxHashTable)::LoadObject(wxObjectInputStream& s)
+{
+  wxHashTable *table = (wxHashTable *)Object();
+  wxDataInputStream data_s(s);
+  int i, key, n;
+
+  key = data_s.Read8();
+  n = data_s.Read32();
+
+  table->Create(key, n);
+
+  for (i=0;i<n;i++)
+    table->hash_table[i] = (wxList *)s.GetChild();
 }