[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