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

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Sun May 3 13:04:37 CEST 2009


Revision: 40273
          http://scummvm.svn.sourceforge.net/scummvm/?rev=40273&view=rev
Author:   fingolfin
Date:     2009-05-03 11:04:37 +0000 (Sun, 03 May 2009)

Log Message:
-----------
SCI: Got rid of the LIST_ALL_DEALLOCATABLE macro

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

Modified: scummvm/trunk/engines/sci/engine/seg_manager.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/seg_manager.cpp	2009-05-03 09:30:59 UTC (rev 40272)
+++ scummvm/trunk/engines/sci/engine/seg_manager.cpp	2009-05-03 11:04:37 UTC (rev 40273)
@@ -960,7 +960,7 @@
 	MemObject *memobj = allocNonscriptSegment(MEM_OBJ_STACK, segid);
 	dstack_t *retval = &(memobj->data.stack);
 
-	retval->entries = (reg_t*)sci_calloc(size, sizeof(reg_t));
+	retval->entries = (reg_t *)sci_calloc(size, sizeof(reg_t));
 	retval->nr = size;
 
 	return retval;
@@ -1342,15 +1342,6 @@
 }
 
 
-#define LIST_ALL_DEALLOCATABLE(kind, kind_field) \
-	kind##Table * table = &(_mobj->data.kind_field);		\
-	int i;								\
-									\
-	for (i = 0; i < table->max_entry; i++)				\
-		if (ENTRY_IS_VALID(table, i))				\
-			(*note) (param, make_reg(_segId, i));
-
-
 //-------------------- clones --------------------
 class SegInterfaceClones : public SegInterface {
 public:
@@ -1362,7 +1353,12 @@
 };
 
 void SegInterfaceClones::listAllDeallocatable(void *param, NoteCallback note) {
-	LIST_ALL_DEALLOCATABLE(Clone, clones);
+	CloneTable *table = (CloneTable *)_mobj;
+	for (int i = 0; i < table->max_entry; i++)
+		if (ENTRY_IS_VALID(table, i))
+			(*note)(param, make_reg(_segId, i));
+
+
 }
 
 void SegInterfaceClones::listAllOutgoingReferences(EngineState *s, reg_t addr, void *param, NoteCallback note) {
@@ -1503,7 +1499,12 @@
 }
 
 void SegInterfaceLists::listAllDeallocatable(void *param, NoteCallback note) {
-	LIST_ALL_DEALLOCATABLE(List, lists);
+	ListTable *table = (ListTable *)_mobj;
+	for (int i = 0; i < table->max_entry; i++)
+		if (ENTRY_IS_VALID(table, i))
+			(*note) (param, make_reg(_segId, i));
+
+
 }
 
 void SegInterfaceLists::listAllOutgoingReferences(EngineState *s, reg_t addr, void *param, NoteCallback note) {
@@ -1537,7 +1538,12 @@
 }
 
 void SegInterfaceNodes::listAllDeallocatable(void *param, NoteCallback note) {
-	LIST_ALL_DEALLOCATABLE(Node, nodes);
+	NodeTable *table = (NodeTable *)_mobj;
+	for (int i = 0; i < table->max_entry; i++)
+		if (ENTRY_IS_VALID(table, i))
+			(*note) (param, make_reg(_segId, i));
+
+
 }
 
 void SegInterfaceNodes::listAllOutgoingReferences(EngineState *s, reg_t addr, void *param, NoteCallback note) {
@@ -1573,7 +1579,12 @@
 }
 
 void SegInterfaceHunk::listAllDeallocatable(void *param, NoteCallback note) {
-	LIST_ALL_DEALLOCATABLE(Hunk, hunks);
+	HunkTable *table = (HunkTable *)_mobj;
+	for (int i = 0; i < table->max_entry; i++)
+		if (ENTRY_IS_VALID(table, i))
+			(*note) (param, make_reg(_segId, i));
+
+
 }
 
 


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