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

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Mon May 4 18:52:13 CEST 2009


Revision: 40310
          http://scummvm.svn.sourceforge.net/scummvm/?rev=40310&view=rev
Author:   lordhoto
Date:     2009-05-04 16:52:13 +0000 (Mon, 04 May 2009)

Log Message:
-----------
This should fix linking on PSP.

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

Modified: scummvm/trunk/engines/sci/engine/seg_manager.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/seg_manager.cpp	2009-05-04 16:35:47 UTC (rev 40309)
+++ scummvm/trunk/engines/sci/engine/seg_manager.cpp	2009-05-04 16:52:13 UTC (rev 40310)
@@ -971,71 +971,6 @@
 	return offset;
 }
 
-template<typename T, int INITIAL, int INCREMENT>
-Table<T, INITIAL, INCREMENT>::Table() {
-	entries_nr = 0;
-	max_entry = 0;
-	entries_used = 0;
-	first_free = HEAPENTRY_INVALID;
-	table = NULL;
-}
-
-template<typename T, int INITIAL, int INCREMENT>
-Table<T, INITIAL, INCREMENT>::~Table() {
-	// FIXME: Shouldn't we make sure that all table entries are disposed
-	// of properly?
-	free(table);
-	table = NULL;
-	entries_nr = max_entry = 0;
-}
-
-template<typename T, int INITIAL, int INCREMENT>
-void Table<T, INITIAL, INCREMENT>::initTable() {
-	entries_nr = INITIAL;
-	max_entry = 0;
-	entries_used = 0;
-	first_free = HEAPENTRY_INVALID;
-	table = (Entry *)calloc(INITIAL, sizeof(Entry));
-}
-
-template<typename T, int INITIAL, int INCREMENT>
-int	Table<T, INITIAL, INCREMENT>::allocEntry() {
-	entries_used++;
-	if (first_free != HEAPENTRY_INVALID) {
-		int oldff = first_free;
-		first_free = table[oldff].next_free;
-
-		table[oldff].next_free = oldff;
-		return oldff;
-	} else {
-		if (max_entry == entries_nr) {
-			entries_nr += INCREMENT;
-
-			table = (Entry *)sci_realloc(table,  sizeof(Entry) * entries_nr);
-			memset(&table[entries_nr-INCREMENT], 0, INCREMENT * sizeof(Entry));
-		}
-		table[max_entry].next_free = max_entry; /* Tag as 'valid' */
-		return max_entry++;
-	}
-}
-
-template<typename T, int INITIAL, int INCREMENT>
-void Table<T, INITIAL, INCREMENT>::freeEntry(int idx) {
-	if (idx < 0 || idx >= max_entry) {
-		error("Table::freeEntry: Attempt to release invalid table index %d", idx);
-	}
-
-	table[idx].next_free = first_free;
-	first_free = idx;
-	entries_used--;
-}
-
-template<typename T, int INITIAL, int INCREMENT>
-bool Table<T, INITIAL, INCREMENT>::isValidEntry(int idx) {
-	return idx >= 0 && idx < max_entry && table[idx].next_free == idx;
-}
-
-
 void SegManager::free_hunk_entry(reg_t addr) {
 	HunkTable *ht = (HunkTable *)GET_SEGMENT(*this, addr.segment, MEM_OBJ_HUNK);
 

Modified: scummvm/trunk/engines/sci/engine/vm.h
===================================================================
--- scummvm/trunk/engines/sci/engine/vm.h	2009-05-04 16:35:47 UTC (rev 40309)
+++ scummvm/trunk/engines/sci/engine/vm.h	2009-05-04 16:52:13 UTC (rev 40310)
@@ -32,6 +32,8 @@
 #include "sci/scicore/versions.h"	// for sci_version_t
 #include "sci/engine/vm_types.h"	// for reg_t
 
+#include "common/util.h"
+
 namespace Sci {
 
 enum MemObjectType {
@@ -408,14 +410,63 @@
 	Entry *table;
 
 public:
-	Table();
-	~Table();
+	Table() {
+		entries_nr = 0;
+		max_entry = 0;
+		entries_used = 0;
+		first_free = HEAPENTRY_INVALID;
+		table = NULL;
+	}
 
-	void initTable();
-	int	allocEntry();
-	bool isValidEntry(int idx);
-	virtual void freeEntry(int idx);
+	~Table() {
+		// FIXME: Shouldn't we make sure that all table entries are disposed
+		// of properly?
+		free(table);
+		table = NULL;
+		entries_nr = max_entry = 0;
+	}
 
+	void initTable() {
+		entries_nr = INITIAL;
+		max_entry = 0;
+		entries_used = 0;
+		first_free = HEAPENTRY_INVALID;
+		table = (Entry *)calloc(INITIAL, sizeof(Entry));
+	}
+
+	int allocEntry() {
+		entries_used++;
+		if (first_free != HEAPENTRY_INVALID) {
+			int oldff = first_free;
+			first_free = table[oldff].next_free;
+
+			table[oldff].next_free = oldff;
+			return oldff;
+		} else {
+			if (max_entry == entries_nr) {
+				entries_nr += INCREMENT;
+
+				table = (Entry *)sci_realloc(table,  sizeof(Entry) * entries_nr);
+				memset(&table[entries_nr-INCREMENT], 0, INCREMENT * sizeof(Entry));
+			}
+			table[max_entry].next_free = max_entry; /* Tag as 'valid' */
+			return max_entry++;
+		}
+	}
+
+	bool isValidEntry(int idx) {
+		return idx >= 0 && idx < max_entry && table[idx].next_free == idx;
+	}
+
+	virtual void freeEntry(int idx) {
+		if (idx < 0 || idx >= max_entry)
+			::error("Table::freeEntry: Attempt to release invalid table index %d", idx);
+
+		table[idx].next_free = first_free;
+		first_free = idx;
+		entries_used--;
+	}
+
 //	virtual void saveLoadWithSerializer(Common::Serializer &ser);
 };
 


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