]> git.saurik.com Git - wxWidgets.git/blobdiff - utils/serialize/sercore.cpp
no message
[wxWidgets.git] / utils / serialize / sercore.cpp
index 8c83acbe021e62db267e870ef00752536151ae81..0fffba7f5b23eaef297f83d95d3f381488adca39 100644 (file)
 #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)
 {
@@ -62,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();
+}