[Scummvm-cvs-logs] SF.net SVN: scummvm:[40270] scummvm/trunk/engines/sci/engine

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Sun May 3 11:25:16 CEST 2009


Revision: 40270
          http://scummvm.svn.sourceforge.net/scummvm/?rev=40270&view=rev
Author:   fingolfin
Date:     2009-05-03 09:25:15 +0000 (Sun, 03 May 2009)

Log Message:
-----------
SCI: Changed SegManager to subclass Common::Serializable

Modified Paths:
--------------
    scummvm/trunk/engines/sci/engine/intmap.h
    scummvm/trunk/engines/sci/engine/savegame.cpp
    scummvm/trunk/engines/sci/engine/seg_manager.h

Modified: scummvm/trunk/engines/sci/engine/intmap.h
===================================================================
--- scummvm/trunk/engines/sci/engine/intmap.h	2009-05-03 09:21:08 UTC (rev 40269)
+++ scummvm/trunk/engines/sci/engine/intmap.h	2009-05-03 09:25:15 UTC (rev 40270)
@@ -32,8 +32,6 @@
 namespace Sci {
 
 
-
-
 // Assumes that the ints are relatively evenly distributed
 enum {
 	DCS_INT_HASH_MAX = 256

Modified: scummvm/trunk/engines/sci/engine/savegame.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/savegame.cpp	2009-05-03 09:21:08 UTC (rev 40269)
+++ scummvm/trunk/engines/sci/engine/savegame.cpp	2009-05-03 09:25:15 UTC (rev 40270)
@@ -92,11 +92,7 @@
 	}
 }
 
-static void sync_IntMapper(Common::Serializer &s, IntMapper &obj) {
-	obj.saveLoadWithSerializer(s);
-}
 
-
 /**
  * Sync a Common::Array using a Common::Serializer.
  * When saving, this writes the length of the array, then syncs (writes) all entries.
@@ -175,25 +171,25 @@
 	syncArray<Menu>(s, _menus);
 }
 
-static void sync_SegManager(Common::Serializer &s, SegManager &obj) {
-	int allocated_heap_size = obj.heap_size;
-	s.syncAsSint32LE(obj.heap_size);
-	s.syncAsSint32LE(obj.reserved_id);
-	s.syncAsSint32LE(obj.exports_wide);
-	s.syncAsSint32LE(obj.gc_mark_bits);
-	s.syncAsUint32LE(obj.mem_allocated);
+void SegManager::saveLoadWithSerializer(Common::Serializer &s) {
+	int allocated_heap_size = heap_size;
+	s.syncAsSint32LE(heap_size);
+	s.syncAsSint32LE(reserved_id);
+	s.syncAsSint32LE(exports_wide);
+	s.syncAsSint32LE(gc_mark_bits);
+	s.syncAsUint32LE(mem_allocated);
 
-	sync_IntMapper(s, *obj.id_seg_map);
+	id_seg_map->saveLoadWithSerializer(s);
 
-	assert(obj.heap);
-	if (allocated_heap_size != obj.heap_size)
-		obj.heap = (MemObject**)sci_realloc((void *)obj.heap, obj.heap_size * sizeof(MemObject *));
-	for (int i = 0; i < obj.heap_size; ++i)
-		sync_MemObjPtr(s, obj.heap[i]);
+	assert(heap);
+	if (allocated_heap_size != heap_size)
+		heap = (MemObject**)sci_realloc((void *)heap, heap_size * sizeof(MemObject *));
+	for (int i = 0; i < heap_size; ++i)
+		sync_MemObjPtr(s, heap[i]);
 
-	s.syncAsSint32LE(obj.Clones_seg_id);
-	s.syncAsSint32LE(obj.Lists_seg_id);
-	s.syncAsSint32LE(obj.Nodes_seg_id);
+	s.syncAsSint32LE(Clones_seg_id);
+	s.syncAsSint32LE(Lists_seg_id);
+	s.syncAsSint32LE(Nodes_seg_id);
 }
 
 static void sync_SegManagerPtr(Common::Serializer &s, SegManager *&obj) {
@@ -212,7 +208,7 @@
 		obj = new SegManager(sci11);
 	}
 	
-	sync_SegManager(s, *obj);
+	obj->saveLoadWithSerializer(s);
 }
 
 
@@ -365,8 +361,9 @@
 		assert(s.isLoading());
 		obj.obj_indices = new IntMapper();
 	}
-	sync_IntMapper(s, *obj.obj_indices);
 
+	obj.obj_indices->saveLoadWithSerializer(s);
+
 	s.syncAsSint32LE(obj.exports_nr);
 	s.syncAsSint32LE(obj.synonyms_nr);
 	s.syncAsSint32LE(obj.lockers);

Modified: scummvm/trunk/engines/sci/engine/seg_manager.h
===================================================================
--- scummvm/trunk/engines/sci/engine/seg_manager.h	2009-05-03 09:21:08 UTC (rev 40269)
+++ scummvm/trunk/engines/sci/engine/seg_manager.h	2009-05-03 09:25:15 UTC (rev 40270)
@@ -26,6 +26,8 @@
 #ifndef SCI_ENGINE_SEG_MANAGER_H
 #define SCI_ENGINE_SEG_MANAGER_H
 
+#include "common/scummsys.h"
+#include "common/serializer.h"
 #include "sci/engine/vm.h"
 
 namespace Sci {
@@ -48,7 +50,7 @@
 
 class SegInterface;
 
-class SegManager {
+class SegManager : public Common::Serializable {
 public:
 	// Initialize the segment manager
 	SegManager(bool sci1_1);
@@ -56,6 +58,8 @@
 	// Deallocate all memory associated with the segment manager
 	~SegManager();
 
+	virtual void saveLoadWithSerializer(Common::Serializer &ser);
+
 	// 1. Scripts
 
 	void freeScript(Script &scr);
@@ -381,8 +385,9 @@
 	int scriptMarkedDeleted(int script_nr);
 	int initialiseScript(Script &scr, EngineState *s, int script_nr);
 
+private:
+	IntMapper *id_seg_map; // id - script id; seg - index of heap
 public: // TODO: make private
-	IntMapper *id_seg_map; // id - script id; seg - index of heap
 	MemObject **heap;
 	int heap_size;		// size of the heap
 	int reserved_id;


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list