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

gregfrieger at users.sourceforge.net gregfrieger at users.sourceforge.net
Sat Feb 28 21:45:36 CET 2009


Revision: 38978
          http://scummvm.svn.sourceforge.net/scummvm/?rev=38978&view=rev
Author:   gregfrieger
Date:     2009-02-28 20:45:36 +0000 (Sat, 28 Feb 2009)

Log Message:
-----------
Turned ResourceManager into a class, along with all related functions

Modified Paths:
--------------
    scummvm/trunk/engines/sci/engine/game.cpp
    scummvm/trunk/engines/sci/engine/kmenu.cpp
    scummvm/trunk/engines/sci/engine/kscripts.cpp
    scummvm/trunk/engines/sci/engine/ksound.cpp
    scummvm/trunk/engines/sci/engine/kstring.cpp
    scummvm/trunk/engines/sci/engine/message.cpp
    scummvm/trunk/engines/sci/engine/savegame.cfsml
    scummvm/trunk/engines/sci/engine/savegame.cpp
    scummvm/trunk/engines/sci/engine/script.h
    scummvm/trunk/engines/sci/engine/scriptconsole.cpp
    scummvm/trunk/engines/sci/engine/scriptdebug.cpp
    scummvm/trunk/engines/sci/engine/seg_manager.cpp
    scummvm/trunk/engines/sci/engine/vm.cpp
    scummvm/trunk/engines/sci/gfx/resource/sci_resmgr.cpp
    scummvm/trunk/engines/sci/scicore/resource.cpp
    scummvm/trunk/engines/sci/scicore/resource.h
    scummvm/trunk/engines/sci/scicore/resource_map.cpp
    scummvm/trunk/engines/sci/scicore/resource_patch.cpp
    scummvm/trunk/engines/sci/scicore/script.cpp
    scummvm/trunk/engines/sci/scicore/vocab.cpp
    scummvm/trunk/engines/sci/scicore/vocab_debug.cpp
    scummvm/trunk/engines/sci/scicore/vocabulary.h
    scummvm/trunk/engines/sci/sfx/player/polled.cpp
    scummvm/trunk/engines/sci/sfx/player/realtime.cpp

Modified: scummvm/trunk/engines/sci/engine/game.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/game.cpp	2009-02-28 19:31:42 UTC (rev 38977)
+++ scummvm/trunk/engines/sci/engine/game.cpp	2009-02-28 20:45:36 UTC (rev 38978)
@@ -142,7 +142,7 @@
 			file.close();
 			_sci1_alloc_system_colors(s);
 		} else {
-			resource = scir_find_resource(s->resmgr, sci_palette, 999, 1);
+			resource = s->resmgr->findResource(sci_palette, 999, 1);
 			if (resource) {
 				if (s->version < SCI_VERSION(1, 001, 000))
 					s->gfx_state->resstate->static_palette = gfxr_read_pal1(999, &s->gfx_state->resstate->static_palette_entries,
@@ -151,7 +151,7 @@
 					s->gfx_state->resstate->static_palette = gfxr_read_pal11(999, &s->gfx_state->resstate->static_palette_entries,
 																			resource->data, resource->size);
 				_sci1_alloc_system_colors(s);
-				scir_unlock_resource(s->resmgr, resource, sci_palette, 999);
+				s->resmgr->unlockResource(resource, sci_palette, 999);
 			} else {
 				sciprintf("Couldn't find the default palette!\n");
 			}
@@ -184,7 +184,7 @@
 
 	font_nr = -1;
 	do {
-		resource = scir_test_resource(s->resmgr, sci_font, ++font_nr);
+		resource = s->resmgr->testResource(sci_font, ++font_nr);
 	} while ((!resource) && (font_nr < sci_max_resource_nr[s->resmgr->sci_version]));
 
 	if (!resource) {
@@ -295,7 +295,7 @@
 	int ok = 0;
 
 	do {
-		ok |= scir_test_resource(s->resmgr, sci_cursor, resource_nr++) != NULL;
+		ok |= s->resmgr->testResource(sci_cursor, resource_nr++) != NULL;
 	} while (resource_nr < 1000 && !ok);
 
 	return ok;
@@ -307,7 +307,7 @@
 	char *seeker_ptr;
 	int classnr;
 
-	resource_t *vocab996 = scir_find_resource(s->resmgr, sci_vocab, 996, 1);
+	resource_t *vocab996 = s->resmgr->findResource(sci_vocab, 996, 1);
 
 	if (!vocab996)
 		s->classtable_size = 20;
@@ -317,7 +317,7 @@
 	s->classtable = (Class*)sci_calloc(sizeof(Class), s->classtable_size);
 
 	for (scriptnr = 0; scriptnr < 1000; scriptnr++) {
-		resource_t *heap = scir_find_resource(s->resmgr, sci_heap, scriptnr, 0);
+		resource_t *heap = s->resmgr->findResource(sci_heap, scriptnr, 0);
 
 		if (heap) {
 			int global_vars = getUInt16(heap->data + 2);
@@ -362,7 +362,7 @@
 	int classnr;
 	int magic_offset; // For strange scripts in older SCI versions
 
-	resource_t *vocab996 = scir_find_resource(s->resmgr, sci_vocab, 996, 1);
+	resource_t *vocab996 = s->resmgr->findResource(sci_vocab, 996, 1);
 
 	if (!vocab996)
 		s->classtable_size = 20;
@@ -373,7 +373,7 @@
 
 	for (scriptnr = 0; scriptnr < 1000; scriptnr++) {
 		int objtype = 0;
-		resource_t *script = scir_find_resource(s->resmgr, sci_script, scriptnr, 0);
+		resource_t *script = s->resmgr->findResource(sci_script, scriptnr, 0);
 
 		if (script) {
 			if (s->version < SCI_VERSION_FTU_NEW_SCRIPT_HEADER)
@@ -435,7 +435,7 @@
 
 		}
 	}
-	scir_unlock_resource(s->resmgr, vocab996, sci_vocab, 996);
+	s->resmgr->unlockResource(vocab996, sci_vocab, 996);
 	vocab996 = NULL;
 	return 0;
 }

Modified: scummvm/trunk/engines/sci/engine/kmenu.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kmenu.cpp	2009-02-28 19:31:42 UTC (rev 38977)
+++ scummvm/trunk/engines/sci/engine/kmenu.cpp	2009-02-28 20:45:36 UTC (rev 38978)
@@ -210,7 +210,7 @@
 
 	i = 999;
 	while (!bodyfont_res && (i > -1))
-		bodyfont_res = scir_test_resource(s->resmgr, sci_font, i--);
+		bodyfont_res = s->resmgr->testResource(sci_font, i--);
 
 	if (i == -1) {
 		sciprintf("Sorry, couldn't find a font...\n");

Modified: scummvm/trunk/engines/sci/engine/kscripts.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kscripts.cpp	2009-02-28 19:31:42 UTC (rev 38977)
+++ scummvm/trunk/engines/sci/engine/kscripts.cpp	2009-02-28 20:45:36 UTC (rev 38978)
@@ -133,11 +133,11 @@
 
 	switch (state) {
 	case 1 :
-		scir_find_resource(s->resmgr, restype, resnr, 1);
+		s->resmgr->findResource(restype, resnr, 1);
 		break;
 	case 0 :
-		which = scir_find_resource(s->resmgr, restype, resnr, 0);
-		scir_unlock_resource(s->resmgr, which, resnr, restype);
+		which = s->resmgr->findResource(restype, resnr, 0);
+		s->resmgr->unlockResource(which, resnr, restype);
 		break;
 	}
 	return s->r_acc;

Modified: scummvm/trunk/engines/sci/engine/ksound.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/ksound.cpp	2009-02-28 19:31:42 UTC (rev 38977)
+++ scummvm/trunk/engines/sci/engine/ksound.cpp	2009-02-28 20:45:36 UTC (rev 38978)
@@ -93,7 +93,7 @@
 
 static void script_set_priority(EngineState *s, reg_t obj, int priority) {
 	int song_nr = GET_SEL32V(obj, number);
-	resource_t *song = scir_find_resource(s->resmgr, sci_sound, song_nr, 0);
+	resource_t *song = s->resmgr->findResource(sci_sound, song_nr, 0);
 	int flags = GET_SEL32V(obj, flags);
 
 	if (priority == -1) {
@@ -110,7 +110,7 @@
 }
 
 song_iterator_t *build_iterator(EngineState *s, int song_nr, int type, songit_id_t id) {
-	resource_t *song = scir_find_resource(s->resmgr, sci_sound, song_nr, 0);
+	resource_t *song = s->resmgr->findResource(sci_sound, song_nr, 0);
 
 	if (!song)
 		return NULL;
@@ -486,7 +486,7 @@
 		//int vol = GET_SEL32V(obj, vol);
 		//int pri = GET_SEL32V(obj, pri);
 
-		if (obj.segment && (scir_test_resource(s->resmgr, sci_sound, number))) {
+		if (obj.segment && (s->resmgr->testResource(sci_sound, number))) {
 			sciprintf("Initializing song number %d\n", number);
 			SCRIPT_ASSERT_ZERO(sfx_add_song(&s->sound,
 			                                build_iterator(s, number,
@@ -802,7 +802,7 @@
 		}
 
 		if (!GET_SEL32V(obj, nodePtr) && obj.segment) {
-			if (!scir_test_resource(s->resmgr, sci_sound, number)) {
+			if (!s->resmgr->testResource(sci_sound, number)) {
 				sciprintf("Could not open song number %d\n", number);
 				return NULL_REG;
 			}
@@ -839,7 +839,7 @@
 			sfx_remove_song(&s->sound, handle);
 		}
 
-		if (obj.segment && (scir_test_resource(s->resmgr, sci_sound, number))) {
+		if (obj.segment && (s->resmgr->testResource(sci_sound, number))) {
 			sciprintf("Initializing song number %d\n", number);
 			SCRIPT_ASSERT_ZERO(sfx_add_song(&s->sound,
 			                                build_iterator(s, number,

Modified: scummvm/trunk/engines/sci/engine/kstring.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kstring.cpp	2009-02-28 19:31:42 UTC (rev 38977)
+++ scummvm/trunk/engines/sci/engine/kstring.cpp	2009-02-28 20:45:36 UTC (rev 38978)
@@ -48,7 +48,7 @@
 	else {
 		int textlen;
 		int _index = index;
-		textres = scir_find_resource(s->resmgr, sci_text, address.offset, 0);
+		textres = s->resmgr->findResource(sci_text, address.offset, 0);
 
 		if (!textres) {
 			SCIkwarn(SCIkERROR, "text.%03d not found\n", address);
@@ -709,7 +709,7 @@
 
 
 reg_t kGetFarText(EngineState *s, int funct_nr, int argc, reg_t *argv) {
-	resource_t *textres = scir_find_resource(s->resmgr, sci_text, UKPV(0), 0);
+	resource_t *textres = s->resmgr->findResource(sci_text, UKPV(0), 0);
 	char *seeker;
 	int counter = UKPV(1);
 

Modified: scummvm/trunk/engines/sci/engine/message.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/message.cpp	2009-02-28 19:31:42 UTC (rev 38977)
+++ scummvm/trunk/engines/sci/engine/message.cpp	2009-02-28 20:45:36 UTC (rev 38978)
@@ -161,7 +161,7 @@
 		return 1;
 
 	state->module = module;
-	state->current_res = scir_find_resource(state->resmgr, sci_message, module, 0);
+	state->current_res = state->resmgr->findResource(sci_message, module, 0);
 
 	if (state->current_res == NULL || state->current_res->data == NULL) {
 		sciprintf("Message subsystem: Failed to load %d.MSG\n", module);
@@ -186,7 +186,7 @@
 };
 
 void message_state_initialize(ResourceManager *resmgr, MessageState *state) {
-	//resource_t *tester = scir_find_resource(resmgr, sci_message, 0, 0);
+	//resource_t *tester = resmgr->findResource(sci_message, 0, 0);
 	//int version;
 
 	//if (tester == NULL)

Modified: scummvm/trunk/engines/sci/engine/savegame.cfsml
===================================================================
--- scummvm/trunk/engines/sci/engine/savegame.cfsml	2009-02-28 19:31:42 UTC (rev 38977)
+++ scummvm/trunk/engines/sci/engine/savegame.cfsml	2009-02-28 20:45:36 UTC (rev 38978)
@@ -851,9 +851,9 @@
 
 	scr->buf = (byte *)malloc(scr->buf_size);
 
-	script = scir_find_resource(s->resmgr, sci_script, scr->nr, 0);
+	script = s->resmgr->findResource(sci_script, scr->nr, 0);
 	if (s->version >= SCI_VERSION(1,001,000))
-		heap = scir_find_resource(s->resmgr, sci_heap, scr->nr, 0);
+		heap = s->resmgr->findResource(sci_heap, scr->nr, 0);
 
 	switch (s->seg_manager->isSci1_1) {
 	case 0 :

Modified: scummvm/trunk/engines/sci/engine/savegame.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/savegame.cpp	2009-02-28 19:31:42 UTC (rev 38977)
+++ scummvm/trunk/engines/sci/engine/savegame.cpp	2009-02-28 20:45:36 UTC (rev 38978)
@@ -4947,9 +4947,9 @@
 
 	scr->buf = (byte *)malloc(scr->buf_size);
 
-	script = scir_find_resource(s->resmgr, sci_script, scr->nr, 0);
+	script = s->resmgr->findResource(sci_script, scr->nr, 0);
 	if (s->version >= SCI_VERSION(1,001,000))
-		heap = scir_find_resource(s->resmgr, sci_heap, scr->nr, 0);
+		heap = s->resmgr->findResource(sci_heap, scr->nr, 0);
 
 	switch (s->seg_manager->isSci1_1) {
 	case 0 :

Modified: scummvm/trunk/engines/sci/engine/script.h
===================================================================
--- scummvm/trunk/engines/sci/engine/script.h	2009-02-28 19:31:42 UTC (rev 38977)
+++ scummvm/trunk/engines/sci/engine/script.h	2009-02-28 20:45:36 UTC (rev 38978)
@@ -31,7 +31,7 @@
 namespace Sci {
 
 struct EngineState;
-struct ResourceManager;
+class ResourceManager;
 
 /*#define SCRIPT_DEBUG */
 

Modified: scummvm/trunk/engines/sci/engine/scriptconsole.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/scriptconsole.cpp	2009-02-28 19:31:42 UTC (rev 38977)
+++ scummvm/trunk/engines/sci/engine/scriptconsole.cpp	2009-02-28 20:45:36 UTC (rev 38978)
@@ -841,7 +841,7 @@
 					sciprintf("Unknown resource type: '%s'\n", cmd_params[0].str);
 				else {
 					for (i = 0; i < sci_max_resource_nr[s->resmgr->sci_version]; i++)
-						if (scir_test_resource(s->resmgr, res, i))
+						if (s->resmgr->testResource(res, i))
 							sciprintf("%s.%03d\n", sci_resource_types[res], i);
 				}
 			}
@@ -913,7 +913,7 @@
 	if (res == -1)
 		sciprintf("Resource type '%s' is not valid\n", cmd_params[0].str);
 	else {
-		resource_t *resource = scir_find_resource(s->resmgr, res, cmd_params[1].val, 0);
+		resource_t *resource = s->resmgr->findResource(res, cmd_params[1].val, 0);
 		if (resource) {
 			sciprintf("Size: %d\n", resource->size);
 		} else
@@ -929,7 +929,7 @@
 	if (res == -1)
 		sciprintf("Resource type '%s' is not valid\n", cmd_params[0].str);
 	else {
-		resource_t *resource = scir_find_resource(s->resmgr, res, cmd_params[1].val, 0);
+		resource_t *resource = s->resmgr->findResource(res, cmd_params[1].val, 0);
 		if (resource)
 			sci_hexdump(resource->data, resource->size, 0);
 		else
@@ -975,7 +975,7 @@
 	}
 
 	for (; resnr <= resmax; resnr++)
-		if ((script = scir_find_resource(s->resmgr, restype, resnr, 0))) {
+		if ((script = s->resmgr->findResource(restype, resnr, 0))) {
 			unsigned int seeker = 0, seekerold = 0;
 			int comppos = 0;
 			int output_script_name = 0;

Modified: scummvm/trunk/engines/sci/engine/scriptdebug.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/scriptdebug.cpp	2009-02-28 19:31:42 UTC (rev 38977)
+++ scummvm/trunk/engines/sci/engine/scriptdebug.cpp	2009-02-28 20:45:36 UTC (rev 38978)
@@ -245,7 +245,7 @@
 #undef SONGDATA
 
 int c_sfx_01_header(EngineState *s) {
-	resource_t *song = scir_find_resource(s->resmgr, sci_sound, cmd_params[0].val, 0);
+	resource_t *song = s->resmgr->findResource(sci_sound, cmd_params[0].val, 0);
 
 	if (!song) {
 		sciprintf("Doesn't exist\n");
@@ -258,7 +258,7 @@
 }
 
 int c_sfx_01_track(EngineState *s) {
-	resource_t *song = scir_find_resource(s->resmgr, sci_sound, cmd_params[0].val, 0);
+	resource_t *song = s->resmgr->findResource(sci_sound, cmd_params[0].val, 0);
 
 	int offset = cmd_params[1].val;
 
@@ -2406,7 +2406,7 @@
 }
 
 static int c_is_sample(EngineState *s) {
-	resource_t *song = scir_find_resource(s->resmgr, sci_sound, cmd_params[0].val, 0);
+	resource_t *song = s->resmgr->findResource(sci_sound, cmd_params[0].val, 0);
 	song_iterator_t *songit;
 	sfx_pcm_feed_t *data;
 

Modified: scummvm/trunk/engines/sci/engine/seg_manager.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/seg_manager.cpp	2009-02-28 19:31:42 UTC (rev 38977)
+++ scummvm/trunk/engines/sci/engine/seg_manager.cpp	2009-02-28 20:45:36 UTC (rev 38978)
@@ -152,8 +152,8 @@
 }
 
 void SegManager::setScriptSize(MemObject *mem, EngineState *s, int script_nr) {
-	resource_t *script = scir_find_resource(s->resmgr, sci_script, script_nr, 0);
-	resource_t *heap = scir_find_resource(s->resmgr, sci_heap, script_nr, 0);
+	resource_t *script = s->resmgr->findResource(sci_script, script_nr, 0);
+	resource_t *heap = s->resmgr->findResource(sci_heap, script_nr, 0);
 
 	mem->data.script.script_size = script->size;
 	mem->data.script.heap_size = 0; // Set later

Modified: scummvm/trunk/engines/sci/engine/vm.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/vm.cpp	2009-02-28 19:31:42 UTC (rev 38977)
+++ scummvm/trunk/engines/sci/engine/vm.cpp	2009-02-28 20:45:36 UTC (rev 38978)
@@ -1595,13 +1595,13 @@
 	int c;
 	resource_t *script = {0};
 
-	if (scir_find_resource(s->resmgr, sci_heap, 0, 0)) {
+	if (s->resmgr->findResource(sci_heap, 0, 0)) {
 		version_require_later_than(s, SCI_VERSION(1, 001, 000));
 		return;
 	}
 
 	for (c = 0; c < 1000; c++) {
-		if ((script = scir_find_resource(s->resmgr, sci_script, c, 0))) {
+		if ((script = s->resmgr->findResource(sci_script, c, 0))) {
 
 			int id = getInt16(script->data);
 
@@ -1679,9 +1679,9 @@
 
 	*was_new = 1;
 
-	*script = scir_find_resource(s->resmgr, sci_script, script_nr, 0);
+	*script = s->resmgr->findResource(sci_script, script_nr, 0);
 	if (s->version >= SCI_VERSION(1, 001, 000))
-		*heap = scir_find_resource(s->resmgr, sci_heap, script_nr, 0);
+		*heap = s->resmgr->findResource(sci_heap, script_nr, 0);
 
 	if (!*script || (s->version >= SCI_VERSION(1, 001, 000) && !heap)) {
 		sciprintf("Script 0x%x requested but not found\n", script_nr);

Modified: scummvm/trunk/engines/sci/gfx/resource/sci_resmgr.cpp
===================================================================
--- scummvm/trunk/engines/sci/gfx/resource/sci_resmgr.cpp	2009-02-28 19:31:42 UTC (rev 38977)
+++ scummvm/trunk/engines/sci/gfx/resource/sci_resmgr.cpp	2009-02-28 20:45:36 UTC (rev 38978)
@@ -71,7 +71,7 @@
 int gfxr_interpreter_calculate_pic(gfx_resstate_t *state, gfxr_pic_t *scaled_pic, gfxr_pic_t *unscaled_pic,
 	int flags, int default_palette, int nr, void *internal) {
 	ResourceManager *resmgr = (ResourceManager *)state->misc_payload;
-	resource_t *res = scir_find_resource(resmgr, sci_pic, nr, 0);
+	resource_t *res = resmgr->findResource(sci_pic, nr, 0);
 	int need_unscaled = unscaled_pic != NULL;
 	gfxr_pic0_params_t style, basic_style;
 
@@ -149,7 +149,7 @@
 
 gfxr_view_t *gfxr_interpreter_get_view(gfx_resstate_t *state, int nr, void *internal, int palette) {
 	ResourceManager *resmgr = (ResourceManager *) state->misc_payload;
-	resource_t *res = scir_find_resource(resmgr, sci_view, nr, 0);
+	resource_t *res = resmgr->findResource(sci_view, nr, 0);
 	int resid = GFXR_RES_ID(GFX_RESOURCE_TYPE_VIEW, nr);
 	gfxr_view_t *result = 0;
 
@@ -188,7 +188,7 @@
 
 gfx_bitmap_font_t *gfxr_interpreter_get_font(gfx_resstate_t *state, int nr, void *internal) {
 	ResourceManager *resmgr = (ResourceManager *)state->misc_payload;
-	resource_t *res = scir_find_resource(resmgr, sci_font, nr, 0);
+	resource_t *res = resmgr->findResource(sci_font, nr, 0);
 	if (!res || !res->data)
 		return NULL;
 
@@ -197,7 +197,7 @@
 
 gfx_pixmap_t *gfxr_interpreter_get_cursor(gfx_resstate_t *state, int nr, void *internal) {
 	ResourceManager *resmgr = (ResourceManager *) state->misc_payload;
-	resource_t *res = scir_find_resource(resmgr, sci_cursor, nr, 0);
+	resource_t *res = resmgr->findResource(sci_cursor, nr, 0);
 	int resid = GFXR_RES_ID(GFX_RESOURCE_TYPE_CURSOR, nr);
 
 	if (!res || !res->data)
@@ -247,7 +247,7 @@
 	resources = (int *)sci_malloc(sizeof(int) * top);
 
 	for (i = 0; i < top; i++)
-		if (scir_test_resource(resmgr, restype, i))
+		if (resmgr->testResource(restype, i))
 			resources[count++] = i;
 
 	*entries_nr = count;
@@ -270,7 +270,7 @@
 	if (version < SCI_VERSION_01_VGA)
 		return NULL;
 
-	res = scir_find_resource(resmgr, sci_palette, nr, 0);
+	res = resmgr->findResource(sci_palette, nr, 0);
 	if (!res || !res->data)
 		return NULL;
 

Modified: scummvm/trunk/engines/sci/scicore/resource.cpp
===================================================================
--- scummvm/trunk/engines/sci/scicore/resource.cpp	2009-02-28 19:31:42 UTC (rev 38977)
+++ scummvm/trunk/engines/sci/scicore/resource.cpp	2009-02-28 20:45:36 UTC (rev 38978)
@@ -25,8 +25,6 @@
 
 // Resource library
 
-#include "common/archive.h"
-#include "common/file.h"
 #include "common/util.h"
 
 #include "sci/tools.h"
@@ -126,7 +124,7 @@
 
 //-- Resmgr helper functions --
 
-void _scir_add_altsource(resource_t *res, ResourceSource *source, unsigned int file_offset) {
+void ResourceManager::addAltSource(resource_t *res, ResourceSource *source, unsigned int file_offset) {
 	resource_altsource_t *rsrc = (resource_altsource_t *)sci_malloc(sizeof(resource_altsource_t));
 
 	rsrc->next = res->alt_sources;
@@ -135,7 +133,7 @@
 	res->alt_sources = rsrc;
 }
 
-resource_t *_scir_find_resource_unsorted(resource_t *res, int res_nr, int type, int number) {
+resource_t *ResourceManager::findResourceUnsorted(resource_t *res, int res_nr, int type, int number) {
 	int i;
 	for (i = 0; i < res_nr; i++)
 		if (res[i].number == number && res[i].type == type)
@@ -145,12 +143,12 @@
 
 // Resource source list management
 
-ResourceSource *scir_add_external_map(ResourceManager *mgr, const char *file_name) {
+ResourceSource *ResourceManager::addExternalMap(const char *file_name) {
 	ResourceSource *newsrc = new ResourceSource();
 
 	// Add the new source to the SLL of sources
-	newsrc->next = mgr->_sources;
-	mgr->_sources = newsrc;
+	newsrc->next = _sources;
+	_sources = newsrc;
 
 	newsrc->source_type = RESSOURCE_TYPE_EXTERNAL_MAP;
 	newsrc->location_name = file_name;
@@ -160,12 +158,12 @@
 	return newsrc;
 }
 
-ResourceSource *scir_add_volume(ResourceManager *mgr, ResourceSource *map, const char *filename, int number, int extended_addressing) {
+ResourceSource *ResourceManager::addVolume(ResourceSource *map, const char *filename, int number, int extended_addressing) {
 	ResourceSource *newsrc = new ResourceSource();
 
 	// Add the new source to the SLL of sources
-	newsrc->next = mgr->_sources;
-	mgr->_sources = newsrc;
+	newsrc->next = _sources;
+	_sources = newsrc;
 
 	newsrc->source_type = RESSOURCE_TYPE_VOLUME;
 	newsrc->scanned = false;
@@ -176,12 +174,12 @@
 	return 0;
 }
 
-ResourceSource *scir_add_patch_dir(ResourceManager *mgr, const char *dirname) {
+ResourceSource *ResourceManager::addPatchDir(const char *dirname) {
 	ResourceSource *newsrc = new ResourceSource();
 
 	// Add the new source to the SLL of sources
-	newsrc->next = mgr->_sources;
-	mgr->_sources = newsrc;
+	newsrc->next = _sources;
+	_sources = newsrc;
 
 	newsrc->source_type = RESSOURCE_TYPE_DIRECTORY;
 	newsrc->scanned = false;
@@ -190,8 +188,8 @@
 	return 0;
 }
 
-ResourceSource *scir_get_volume(ResourceManager *mgr, ResourceSource *map, int volume_nr) {
-	ResourceSource *seeker = mgr->_sources;
+ResourceSource *ResourceManager::getVolume(ResourceSource *map, int volume_nr) {
+	ResourceSource *seeker = _sources;
 
 	while (seeker) {
 		if (seeker->source_type == RESSOURCE_TYPE_VOLUME && seeker->associated_map == map &&
@@ -205,7 +203,7 @@
 
 // Resource manager constructors and operations
 
-static void _scir_load_from_patch_file(Common::File &file, resource_t *res, char *filename) {
+void ResourceManager::loadFromPatchFile(Common::File &file, resource_t *res, char *filename) {
 	unsigned int really_read;
 
 	res->data = (unsigned char *)sci_malloc(res->size);
@@ -218,7 +216,7 @@
 	res->status = SCI_STATUS_ALLOCATED;
 }
 
-static void _scir_load_resource(ResourceManager *mgr, resource_t *res, bool protect) {
+void ResourceManager::loadResource(resource_t *res, bool protect) {
 	char filename[MAXPATHLEN];
 	Common::File file;
 	resource_t backup;
@@ -227,12 +225,12 @@
 
 	// First try lower-case name
 	if (res->source->source_type == RESSOURCE_TYPE_DIRECTORY) {
-		if (!patch_sprintfers[mgr->sci_version]) {
-			error("Resource manager's SCI version (%d) has no patch file name printers", mgr->sci_version);
+		if (!patch_sprintfers[sci_version]) {
+			error("Resource manager's SCI version (%d) has no patch file name printers", sci_version);
 		}
 
 		// Get patch file name
-		patch_sprintfers[mgr->sci_version](filename, res);
+		patch_sprintfers[sci_version](filename, res);
 
 		// FIXME: Instead of using SearchMan, maybe we should only search
 		// a single dir specified by this RESSOURCE_TYPE_DIRECTORY ResourceSource?
@@ -250,13 +248,13 @@
 	file.seek(res->file_offset, SEEK_SET);
 
 	if (res->source->source_type == RESSOURCE_TYPE_DIRECTORY)
-		_scir_load_from_patch_file(file, res, filename);
-	else if (!decompressors[mgr->sci_version]) {
+		loadFromPatchFile(file, res, filename);
+	else if (!decompressors[sci_version]) {
 		// Check whether we support this at all
-		error("Resource manager's SCI version (%d) is invalid", mgr->sci_version);
+		error("Resource manager's SCI version (%d) is invalid", sci_version);
 	} else {
 		int error = // Decompress from regular resource file
-		    decompressors[mgr->sci_version](res, file, mgr->sci_version);
+		    decompressors[sci_version](res, file, sci_version);
 
 		if (error) {
 			sciprintf("Error %d occured while reading %s.%03d from resource file: %s\n",
@@ -273,11 +271,11 @@
 
 }
 
-resource_t *scir_test_resource(ResourceManager *mgr, int type, int number) {
+resource_t *ResourceManager::testResource(int type, int number) {
 	resource_t binseeker;
 	binseeker.type = type;
 	binseeker.number = number;
-	return (resource_t *)bsearch(&binseeker, mgr->_resources, mgr->_resourcesNr, sizeof(resource_t), resourcecmp);
+	return (resource_t *)bsearch(&binseeker, _resources, _resourcesNr, sizeof(resource_t), resourcecmp);
 }
 
 int sci0_get_compression_method(Common::ReadStream &stream);
@@ -292,7 +290,7 @@
 	mgr->sci_version = SCI_VERSION_AUTODETECT;
 
 	for (i = 0; i < 1000; i++) {
-		res = scir_test_resource(mgr, sci_view, i);
+		res = mgr->testResource(sci_view, i);
 
 		if (!res)
 			continue;
@@ -317,7 +315,7 @@
 
 	// Try the same thing with pics
 	for (i = 0; i < 1000; i++) {
-		res = scir_test_resource(mgr, sci_pic, i);
+		res = mgr->testResource(sci_pic, i);
 
 		if (!res)
 			continue;
@@ -343,13 +341,13 @@
 	return mgr->sci_version;
 }
 
-int scir_add_appropriate_sources(ResourceManager *mgr) {
+int ResourceManager::addAppropriateSources() {
 	//char path_separator;
 	ResourceSource *map;
 
 	if (!Common::File::exists("RESOURCE.MAP"))
 		return 0;
-	map = scir_add_external_map(mgr, "RESOURCE.MAP");
+	map = addExternalMap("RESOURCE.MAP");
 
 	Common::ArchiveMemberList files;
 	SearchMan.listMatchingMembers(files, "RESOURCE.0??");
@@ -359,38 +357,37 @@
 		const char *dot = strrchr(name.c_str(), '.');
 		int number = atoi(dot + 1);
 
-		scir_add_volume(mgr, map, name.c_str(), number, 0);
+		addVolume(map, name.c_str(), number, 0);
 	}
-	scir_add_patch_dir(mgr, "");	// FIXME: used to pass the 'current' instead of ""
-
+	addPatchDir("");	// FIXME: used to pass the 'current' instead of ""
 	return 1;
 }
 
-static int _scir_scan_new_sources(ResourceManager *mgr, int *detected_version, ResourceSource *source) {
-	int preset_version = mgr->sci_version;
+int ResourceManager::scanNewSources(int *detected_version, ResourceSource *source) {
+	int preset_version = sci_version;
 	int resource_error = 0;
-	int dummy = mgr->sci_version;
+	int dummy = sci_version;
 	//resource_t **concat_ptr = &(mgr->_resources[mgr->_resourcesNr - 1].next);
 
 	if (detected_version == NULL)
 		detected_version = &dummy;
 
-	*detected_version = mgr->sci_version;
+	*detected_version = sci_version;
 	if (source->next)
-		_scir_scan_new_sources(mgr, detected_version, source->next);
+		scanNewSources(detected_version, source->next);
 
 	if (!source->scanned) {
 		source->scanned = true;
 		switch (source->source_type) {
 		case RESSOURCE_TYPE_DIRECTORY:
-			if (mgr->sci_version <= SCI_VERSION_01)
-				sci0_read_resource_patches(source, &mgr->_resources, &mgr->_resourcesNr);
+			if (sci_version <= SCI_VERSION_01)
+				readResourcePatchesSCI0(source);
 			else
-				sci1_read_resource_patches(source, &mgr->_resources, &mgr->_resourcesNr);
+				readResourcePatchesSCI1(source);
 			break;
 		case RESSOURCE_TYPE_EXTERNAL_MAP:
 			if (preset_version <= SCI_VERSION_01_VGA_ODD /* || preset_version == SCI_VERSION_AUTODETECT -- subsumed by the above line */) {
-				resource_error = sci0_read_resource_map(mgr, source, &mgr->_resources, &mgr->_resourcesNr, detected_version);
+				resource_error = readResourceMapSCI0(source, detected_version);
 #if 0
 				if (resource_error >= SCI_ERROR_CRITICAL) {
 					sciprintf("Resmgr: Error while loading resource map: %s\n", sci_error_types[resource_error]);
@@ -415,8 +412,7 @@
 
 			if ((preset_version == SCI_VERSION_1_EARLY) || (preset_version == SCI_VERSION_1_LATE) || (preset_version == SCI_VERSION_1_1) ||
 			        ((*detected_version == SCI_VERSION_AUTODETECT) && (preset_version == SCI_VERSION_AUTODETECT))) {
-				resource_error = sci1_read_resource_map(mgr, source, scir_get_volume(mgr, source, 0),
-														&mgr->_resources, &mgr->_resourcesNr, detected_version);
+				resource_error = readResourceMapSCI1(source, getVolume(source, 0), detected_version);
 				if (resource_error == SCI_ERROR_RESMAP_NOT_FOUND) {
 					// FIXME: Try reading w/o resource.map
 					resource_error = SCI_ERROR_NO_RESOURCE_FILES_FOUND;
@@ -424,55 +420,48 @@
 
 				if (resource_error == SCI_ERROR_NO_RESOURCE_FILES_FOUND) {
 					// Initialize empty resource manager
-					mgr->_resourcesNr = 0;
-					mgr->_resources = 0; // FIXME: Was = (resource_t*)sci_malloc(1);
+					_resourcesNr = 0;
+					_resources = 0; // FIXME: Was = (resource_t*)sci_malloc(1);
 					resource_error = 0;
 				}
 			}
 
-			mgr->sci_version = *detected_version;
+			sci_version = *detected_version;
 			break;
 		default:
 			break;
 		}
-		qsort(mgr->_resources, mgr->_resourcesNr, sizeof(resource_t), resourcecmp); // Sort resources
+		qsort(_resources, _resourcesNr, sizeof(resource_t), resourcecmp); // Sort resources
 	}
 	return resource_error;
 }
 
-int scir_scan_new_sources(ResourceManager *mgr, int *detected_version) {
-	_scir_scan_new_sources(mgr, detected_version, mgr->_sources);
-
-	return 0;
-}
-
-static void _scir_free_resource_sources(ResourceSource *rss) {
+void ResourceManager::freeResourceSources(ResourceSource *rss) {
 	if (rss) {
-		_scir_free_resource_sources(rss->next);
+		freeResourceSources(rss->next);
 		delete rss;
 	}
 }
 
 ResourceManager::ResourceManager(int version, int maxMemory) {
 	int resource_error = 0;
-	ResourceManager *mgr = this;
 	int resmap_version = version;
 
 	_maxMemory = maxMemory;
 
-	mgr->memory_locked = 0;
-	mgr->memory_lru = 0;
+	_memoryLocked = 0;
+	_memoryLRU = 0;
 
 	_resources = NULL;
 	_resourcesNr = 0;
 	_sources = NULL;
-	mgr->sci_version = version;
+	sci_version = version;
 
-	mgr->lru_first = NULL;
-	mgr->lru_last = NULL;
+	lru_first = NULL;
+	lru_last = NULL;
 
-	scir_add_appropriate_sources(mgr);
-	scir_scan_new_sources(mgr, &resmap_version);
+	addAppropriateSources();
+	scanNewSources(&resmap_version, _sources);
 
 	if (!_resources || !_resourcesNr) {
 		if (_resources) {
@@ -480,7 +469,7 @@
 			_resources = NULL;
 		}
 		sciprintf("Resmgr: Could not retrieve a resource list!\n");
-		_scir_free_resource_sources(mgr->_sources);
+		freeResourceSources(_sources);
 		error("FIXME: Move this code to an init() method so that we can perform error handling");
 //		return NULL;
 	}
@@ -490,20 +479,20 @@
 	if (version == SCI_VERSION_AUTODETECT)
 		switch (resmap_version) {
 		case SCI_VERSION_0:
-			if (scir_test_resource(mgr, sci_vocab, VOCAB_RESOURCE_SCI0_MAIN_VOCAB)) {
-				version = sci_test_view_type(mgr);
+			if (testResource(sci_vocab, VOCAB_RESOURCE_SCI0_MAIN_VOCAB)) {
+				version = sci_test_view_type(this);
 				if (version == SCI_VERSION_01_VGA) {
 					sciprintf("Resmgr: Detected KQ5 or similar\n");
 				} else {
 					sciprintf("Resmgr: Detected SCI0\n");
 					version = SCI_VERSION_0;
 				}
-			} else if (scir_test_resource(mgr, sci_vocab, VOCAB_RESOURCE_SCI1_MAIN_VOCAB)) {
-				version = sci_test_view_type(mgr);
+			} else if (testResource(sci_vocab, VOCAB_RESOURCE_SCI1_MAIN_VOCAB)) {
+				version = sci_test_view_type(this);
 				if (version == SCI_VERSION_01_VGA) {
 					sciprintf("Resmgr: Detected KQ5 or similar\n");
 				} else {
-					if (scir_test_resource(mgr, sci_vocab, 912)) {
+					if (testResource(sci_vocab, 912)) {
 						sciprintf("Resmgr: Running KQ1 or similar, using SCI0 resource encoding\n");
 						version = SCI_VERSION_0;
 					} else {
@@ -512,7 +501,7 @@
 					}
 				}
 			} else {
-				version = sci_test_view_type(mgr);
+				version = sci_test_view_type(this);
 				if (version == SCI_VERSION_01_VGA) {
 					sciprintf("Resmgr: Detected KQ5 or similar\n");
 				} else {
@@ -526,13 +515,13 @@
 			sciprintf("Resmgr: Detected Jones/CD or similar\n");
 			break;
 		case SCI_VERSION_1: {
-			resource_t *res = scir_test_resource(mgr, sci_script, 0);
+			resource_t *res = testResource(sci_script, 0);
 
-			mgr->sci_version = version = SCI_VERSION_1_EARLY;
-			_scir_load_resource(mgr, res, true);
+			sci_version = version = SCI_VERSION_1_EARLY;
+			loadResource(res, true);
 
 			if (res->status == SCI_STATUS_NOMALLOC)
-				mgr->sci_version = version = SCI_VERSION_1_LATE;
+				sci_version = version = SCI_VERSION_1_LATE;
 			break;
 		}
 		case SCI_VERSION_1_1:
@@ -547,24 +536,24 @@
 		qsort(_resources, _resourcesNr, sizeof(resource_t), resourcecmp); // Sort resources
 	}
 
-	mgr->sci_version = version;
+	sci_version = version;
 }
 
-static void _scir_free_altsources(resource_altsource_t *dynressrc) {
+void ResourceManager::freeAltSources(resource_altsource_t *dynressrc) {
 	if (dynressrc) {
-		_scir_free_altsources(dynressrc->next);
+		freeAltSources(dynressrc->next);
 		free(dynressrc);
 	}
 }
 
-void _scir_free_resources(resource_t *resources, int _resourcesNr) {
+void ResourceManager::freeResources(resource_t *resources, int _resourcesNr) {
 	int i;
 
 	for (i = 0; i < _resourcesNr; i++) {
 		resource_t *res = resources + i;
 
 		// FIXME: alt_sources->next may point to an invalid memory location
-		_scir_free_altsources(res->alt_sources);
+		freeAltSources(res->alt_sources);
 
 		if (res->status != SCI_STATUS_NOMALLOC)
 			free(res->data);
@@ -574,18 +563,18 @@
 }
 
 ResourceManager::~ResourceManager() {
-	_scir_free_resources(_resources, _resourcesNr);
-	_scir_free_resource_sources(_sources);
+	freeResources(_resources, _resourcesNr);
+	freeResourceSources(_sources);
 	_resources = NULL;
 }
 
-static void _scir_unalloc(resource_t *res) {
+void ResourceManager::unalloc(resource_t *res) {
 	free(res->data);
 	res->data = NULL;
 	res->status = SCI_STATUS_NOMALLOC;
 }
 
-static void _scir_remove_from_lru(ResourceManager *mgr, resource_t *res) {
+void ResourceManager::removeFromLRU(resource_t *res) {
 	if (res->status != SCI_STATUS_ENQUEUED) {
 		sciprintf("Resmgr: Oops: trying to remove resource that isn't enqueued\n");
 		return;
@@ -595,45 +584,45 @@
 		res->next->prev = res->prev;
 	if (res->prev)
 		res->prev->next = res->next;
-	if (mgr->lru_first == res)
-		mgr->lru_first = res->next;
-	if (mgr->lru_last == res)
-		mgr->lru_last = res->prev;
+	if (lru_first == res)
+		lru_first = res->next;
+	if (lru_last == res)
+		lru_last = res->prev;
 
-	mgr->memory_lru -= res->size;
+	_memoryLRU -= res->size;
 
 	res->status = SCI_STATUS_ALLOCATED;
 }
 
-static void _scir_add_to_lru(ResourceManager *mgr, resource_t *res) {
+void ResourceManager::addToLRU(resource_t *res) {
 	if (res->status != SCI_STATUS_ALLOCATED) {
 		sciprintf("Resmgr: Oops: trying to enqueue resource with state %d\n", res->status);
 		return;
 	}
 
 	res->prev = NULL;
-	res->next = mgr->lru_first;
-	mgr->lru_first = res;
-	if (!mgr->lru_last)
-		mgr->lru_last = res;
+	res->next = lru_first;
+	lru_first = res;
+	if (!lru_last)
+		lru_last = res;
 	if (res->next)
 		res->next->prev = res;
 
-	mgr->memory_lru += res->size;
+	_memoryLRU += res->size;
 #if (SCI_VERBOSE_RESMGR > 1)
 	fprintf(stderr, "Adding %s.%03d (%d bytes) to lru control: %d bytes total\n",
 	        sci_resource_types[res->type], res->number, res->size,
-	        mgr->memory_lru);
+	        mgr->_memoryLRU);
 
 #endif
 
 	res->status = SCI_STATUS_ENQUEUED;
 }
 
-static void _scir_print_lru_list(ResourceManager *mgr) {
+void ResourceManager::printLRU() {
 	int mem = 0;
 	int entries = 0;
-	resource_t *res = mgr->lru_first;
+	resource_t *res = lru_first;
 
 	while (res) {
 		fprintf(stderr, "\t%s.%03d: %d bytes\n",
@@ -645,47 +634,47 @@
 	}
 
 	fprintf(stderr, "Total: %d entries, %d bytes (mgr says %d)\n",
-	        entries, mem, mgr->memory_lru);
+	        entries, mem, _memoryLRU);
 }
 
-static void _scir_free_old_resources(ResourceManager *mgr, int last_invulnerable) {
-	while (mgr->_maxMemory < mgr->memory_lru && (!last_invulnerable || mgr->lru_first != mgr->lru_last)) {
-		resource_t *goner = mgr->lru_last;
+void ResourceManager::freeOldResources(int last_invulnerable) {
+	while (_maxMemory < _memoryLRU && (!last_invulnerable || lru_first != lru_last)) {
+		resource_t *goner = lru_last;
 		if (!goner) {
 			fprintf(stderr, "Internal error: mgr->lru_last is NULL!\n");
-			fprintf(stderr, "LRU-mem= %d\n", mgr->memory_lru);
-			fprintf(stderr, "lru_first = %p\n", (void *)mgr->lru_first);
-			_scir_print_lru_list(mgr);
+			fprintf(stderr, "LRU-mem= %d\n", _memoryLRU);
+			fprintf(stderr, "lru_first = %p\n", (void *)lru_first);
+			printLRU();
 		}
 
-		_scir_remove_from_lru(mgr, goner);
-		_scir_unalloc(goner);
+		removeFromLRU(goner);
+		unalloc(goner);
 #ifdef SCI_VERBOSE_RESMGR
 		sciprintf("Resmgr-debug: LRU: Freeing %s.%03d (%d bytes)\n", sci_resource_types[goner->type], goner->number, goner->size);
 #endif
 	}
 }
 
-resource_t * scir_find_resource(ResourceManager *mgr, int type, int number, int lock) {
+resource_t *ResourceManager::findResource(int type, int number, int lock) {
 	resource_t *retval;
 
-	if (number >= sci_max_resource_nr[mgr->sci_version]) {
-		int modded_number = number % sci_max_resource_nr[mgr->sci_version];
+	if (number >= sci_max_resource_nr[sci_version]) {
+		int modded_number = number % sci_max_resource_nr[sci_version];
 		sciprintf("[resmgr] Requested invalid resource %s.%d, mapped to %s.%d\n",
 		          sci_resource_types[type], number, sci_resource_types[type], modded_number);
 		number = modded_number;
 	}
 
-	retval = scir_test_resource(mgr, type, number);
+	retval = testResource(type, number);
 
 	if (!retval)
 		return NULL;
 
 	if (!retval->status)
-		_scir_load_resource(mgr, retval, false);
+		loadResource(retval, false);
 
 	else if (retval->status == SCI_STATUS_ENQUEUED)
-		_scir_remove_from_lru(mgr, retval);
+		removeFromLRU(retval);
 	// Unless an error occured, the resource is now either
 	// locked or allocated, but never queued or freed.
 
@@ -693,17 +682,17 @@
 		if (retval->status == SCI_STATUS_ALLOCATED) {
 			retval->status = SCI_STATUS_LOCKED;
 			retval->lockers = 0;
-			mgr->memory_locked += retval->size;
+			_memoryLocked += retval->size;
 		}
 
 		++retval->lockers;
 
 	} else if (retval->status != SCI_STATUS_LOCKED) { // Don't lock it
 		if (retval->status == SCI_STATUS_ALLOCATED)
-			_scir_add_to_lru(mgr, retval);
+			addToLRU(retval);
 	}
 
-	_scir_free_old_resources(mgr, retval->status == SCI_STATUS_ALLOCATED);
+	freeOldResources(retval->status == SCI_STATUS_ALLOCATED);
 
 	if (retval->data)
 		return retval;
@@ -713,7 +702,7 @@
 	}
 }
 
-void scir_unlock_resource(ResourceManager *mgr, resource_t *res, int resnum, int restype) {
+void ResourceManager::unlockResource(resource_t *res, int resnum, int restype) {
 	if (!res) {
 		if (restype >= ARRAYSIZE(sci_resource_types))
 			sciprintf("Resmgr: Warning: Attempt to unlock non-existant resource %03d.%03d!\n", restype, resnum);
@@ -730,11 +719,11 @@
 
 	if (!--res->lockers) { // No more lockers?
 		res->status = SCI_STATUS_ALLOCATED;
-		mgr->memory_locked -= res->size;
-		_scir_add_to_lru(mgr, res);
+		_memoryLocked -= res->size;
+		addToLRU(res);
 	}
 
-	_scir_free_old_resources(mgr, 0);
+	freeOldResources(0);
 }
 
 } // End of namespace Sci

Modified: scummvm/trunk/engines/sci/scicore/resource.h
===================================================================
--- scummvm/trunk/engines/sci/scicore/resource.h	2009-02-28 19:31:42 UTC (rev 38977)
+++ scummvm/trunk/engines/sci/scicore/resource.h	2009-02-28 20:45:36 UTC (rev 38978)
@@ -27,6 +27,8 @@
 #define SCI_SCICORE_RESOURCE_H
 
 #include "common/str.h"
+#include "common/file.h"
+#include "common/archive.h"
 
 namespace Common {
 	class ReadStream;
@@ -160,21 +162,9 @@
 };
 
 
-struct ResourceManager {
-	int _maxMemory; /* Config option: Maximum total byte number allocated */
-	int sci_version; /* SCI resource version to use */
-
-	int _resourcesNr;
-	ResourceSource *_sources;
-	resource_t *_resources;
-
-	int memory_locked; /* Amount of resource bytes in locked memory */
-	int memory_lru; /* Amount of resource bytes under LRU control */
-
-	resource_t *lru_first, *lru_last; /* Pointers to the first and last LRU queue entries */
-	/* LRU queue: lru_first points to the most recent entry */
-
+class ResourceManager {
 public:
+	int sci_version; /* SCI resource version to use */
 	/**
 	 * Creates a new FreeSCI resource manager.
 	 * @param version		The SCI version to look for; use SCI_VERSION_AUTODETECT
@@ -187,237 +177,228 @@
 	 */
 	ResourceManager(int version, int maxMemory);
 	~ResourceManager();
-};
 
-/**** FUNCTION DECLARATIONS ****/
+	/* Add a path to the resource manager's list of sources.
+	** Returns: A pointer to the added source structure, or NULL if an error occurred.
+	*/
+	ResourceSource *addPatchDir(const char *path);
+	ResourceSource *getVolume(ResourceSource *map, int volume_nr);
+	//! Add a volume to the resource manager's list of sources.
+	/** @param map		The map associated with this volume
+	 *	@param filename	The name of the volume to add
+	 *	@param extended_addressing	1 if this volume uses extended addressing,
+	 *                                        0 otherwise.
+	 *	@return A pointer to the added source structure, or NULL if an error occurred.
+	 */
+	ResourceSource *addVolume(ResourceSource *map, const char *filename,
+		int number, int extended_addressing);
+	//! Add an external (i.e. separate file) map resource to the resource manager's list of sources.
+	/**	@param file_name	 The name of the volume to add
+	 *	@return		A pointer to the added source structure, or NULL if an error occurred.
+	 */
+	ResourceSource *addExternalMap(const char *file_name);
+	//! Scans newly registered resource sources for resources, earliest addition first.
+	/** @param detected_version: Pointer to the detected version number,
+	 *					 used during startup. May be NULL.
+	 * @return One of SCI_ERROR_*.
+	 */
+	int scanNewSources(int *detected_version, ResourceSource *source);
+	//! Looks up a resource's data
+	/**	@param type: The resource type to look for
+	 *	@param number: The resource number to search
+	 *	@param lock: non-zero iff the resource should be locked
+	 *	@return (resource_t *): The resource, or NULL if it doesn't exist
+	 *	@note Locked resources are guaranteed not to have their contents freed until
+	 *		they are unlocked explicitly (by unlockResource).
+	 */
+	resource_t *findResource(int type, int number, int lock);
+	/* Unlocks a previously locked resource
+	**             (resource_t *) res: The resource to free
+	**             (int) type: Type of the resource to check (for error checking)
+	**             (int) number: Number of the resource to check (ditto)
+	** Returns   : (void)
+	*/
+	void unlockResource(resource_t *res, int restype, int resnum);
+	/* Tests whether a resource exists
+	**             (int) type: Type of the resource to check
+	**             (int) number: Number of the resource to check
+	** Returns   : (resource_t *) non-NULL if the resource exists, NULL otherwise
+	** This function may often be much faster than finding the resource
+	** and should be preferred for simple tests.
+	** The resource object returned is, indeed, the resource in question, but
+	** it should be used with care, as it may be unallocated.
+	** Use scir_find_resource() if you want to use the data contained in the resource.
+	*/
+	resource_t *testResource(int type, int number);
 
-/**--- New Resource manager ---**/
+protected:
+	int _maxMemory; /* Config option: Maximum total byte number allocated */
+	int _resourcesNr;
+	ResourceSource *_sources;
+	resource_t *_resources;
+	int _memoryLocked;	// Amount of resource bytes in locked memory
+	int _memoryLRU;		// Amount of resource bytes under LRU control
+	resource_t *lru_first, *lru_last;	// Pointers to the first and last LRU queue entries
+										// LRU queue: lru_first points to the most recent entry
 
-ResourceSource *scir_add_patch_dir(ResourceManager *mgr, const char *path);
-/* Add a path to the resource manager's list of sources.
-** Parameters: (ResourceManager *) mgr: The resource manager to look up in
-**             (const char *) path: The path to add
-** Returns: A pointer to the added source structure, or NULL if an error occurred.
-*/
 
-ResourceSource *scir_get_volume(ResourceManager *mgr, ResourceSource *map, int volume_nr);
+	/* Frees a block of resources and associated data
+	** Parameters: (resource_t *) resources: The resources to free
+	**             (int) _resourcesNr: Number of resources in the block
+	** Returns   : (void)
+	*/
+	void freeResources(resource_t *resources, int _resourcesNr);
+	/* Finds a resource matching type.number in an unsorted resource_t block
+	** To be used during initial resource loading, when the resource list
+	** may not have been sorted yet.
+	** Parameters: (resource_t *) res: Pointer to the block to search in
+	**             (int) res_nr: Number of resource_t structs allocated and defined
+	**                           in the block pointed to by res
+	**             (int) type: Type of the resource to look for
+	**             (int) number: Number of the resource to look for
+	** Returns   : (resource_t) The matching resource entry, or NULL if not found
+	*/
+	resource_t *findResourceUnsorted(resource_t *res, int res_nr, int type, int number);
+	/* Adds an alternative source to a resource
+	** Parameters: (resource_t *) res: The resource to add to
+	**             (ResourceSource *) source: The source of the resource
+	**             (unsigned int) file_offset: Offset in the file the resource
+	**                            is stored at
+	** Returns   : (void)
+	*/
+	int addAppropriateSources();
+	void addAltSource(resource_t *res, ResourceSource *source, unsigned int file_offset);
+	void freeResourceSources(ResourceSource *rss);
+	void freeAltSources(resource_altsource_t *dynressrc);
 
-ResourceSource *scir_add_volume(ResourceManager *mgr, ResourceSource *map, const char *filename,
-	int number, int extended_addressing);
-/* Add a volume to the resource manager's list of sources.
-** Parameters: (ResourceManager *) mgr: The resource manager to look up in
-**             (ResourceSource *) map: The map associated with this volume
-**             (char *) filename: The name of the volume to add
-**             (int) extended_addressing: 1 if this volume uses extended addressing,
-**                                        0 otherwise.
-** Returns: A pointer to the added source structure, or NULL if an error occurred.
-*/
+	void loadResource(resource_t *res, bool protect);
+	void loadFromPatchFile(Common::File &file, resource_t *res, char *filename);
+	void freeOldResources(int last_invulnerable);
+	void unalloc(resource_t *res);
 
-ResourceSource *scir_add_external_map(ResourceManager *mgr, const char *file_name);
-/* Add an external (i.e. separate file) map resource to the resource manager's list of sources.
-** Parameters: (ResourceManager *) mgr: The resource manager to look up in
-**             (const char *) file_name: The name of the volume to add
-** Returns: A pointer to the added source structure, or NULL if an error occurred.
-*/
+	/**--- Resource map decoding functions ---*/
 
-int scir_scan_new_sources(ResourceManager *mgr, int *detected_version);
-/* Scans newly registered resource sources for resources, earliest addition first.
-** Parameters: (ResourceManager *) mgr: The resource manager to look up in
-**             (int *) detected_version: Pointer to the detected version number,
-**					 used during startup. May be NULL.
-** Returns: One of SCI_ERROR_*.
-*/
+	/* Reads the SCI0 resource.map file from a local directory
+	** Parameters: (char *) path: (unused)
+	**             (int) sci_version: SCI resource version
+	** Returns   : (int) 0 on success, an SCI_ERROR_* code otherwise
+	*/
+	int readResourceMapSCI0(ResourceSource *map, int *sci_version);
+	/* Reads the SCI1 resource.map file from a local directory
+	** Parameters: (char *) path: (unused)
+	**             (int) sci_version: SCI resource version
+	** Returns   : (int) 0 on success, an SCI_ERROR_* code otherwise
+	*/
+	int readResourceMapSCI1(ResourceSource *map, ResourceSource *vol, int *sci_version);
+	int isSCI10or11(int *types);
+	int detectOddSCI01(Common::File &file);
+	int resReadEntry(ResourceSource *map, byte *buf, resource_t *res, int sci_version);
+	int resTypeSCI1(int ofs, int *types, int lastrt);
+	int parseHeaderSCI1(Common::ReadStream &stream, int *types, int *lastrt);
 
-resource_t *scir_find_resource(ResourceManager *mgr, int type, int number, int lock);
-/* Looks up a resource's data
-** Parameters: (ResourceManager *) mgr: The resource manager to look up in
-**             (int) type: The resource type to look for
-**             (int) number: The resource number to search
-**             (int) lock: non-zero iff the resource should be locked
-** Returns   : (resource_t *): The resource, or NULL if it doesn't exist
-** Locked resources are guaranteed not to have their contents freed until
-** they are unlocked explicitly (by scir_unlock_resource).
-*/
+	/**--- Patch management functions ---*/
 
-void scir_unlock_resource(ResourceManager *mgr, resource_t *res, int restype, int resnum);
-/* Unlocks a previously locked resource
-** Parameters: (ResourceManager *) mgr: The manager the resource should be freed from
-**             (resource_t *) res: The resource to free
-**             (int) type: Type of the resource to check (for error checking)
-**             (int) number: Number of the resource to check (ditto)
-** Returns   : (void)
-*/
+	/* Reads SCI0 patch files from a local directory
+	** Parameters: (char *) path: (unused)
+	**             (resource_t **) resources: Pointer to a pointer
+	**                                        that will be set to the
+	**                                        location of the resources
+	**                                        (in one large chunk)
+	**             (int *) resource_nr_p: Pointer to an int the number of resources
+	**                                    read is stored in
+	** Returns   : (int) 0 on success, an SCI_ERROR_* code otherwise
+	*/
+	int readResourcePatchesSCI0(ResourceSource *source);
 
-resource_t *scir_test_resource(ResourceManager *mgr, int type, int number);
-/* Tests whether a resource exists
-** Parameters: (ResourceManager *) mgr: The resource manager to search in
-**             (int) type: Type of the resource to check
-**             (int) number: Number of the resource to check
-** Returns   : (resource_t *) non-NULL if the resource exists, NULL otherwise
-** This function may often be much faster than finding the resource
-** and should be preferred for simple tests.
-** The resource object returned is, indeed, the resource in question, but
-** it should be used with care, as it may be unallocated.
-** Use scir_find_resource() if you want to use the data contained in the resource.
-*/
+	/* Reads SCI1 patch files from a local directory
+	** Parameters: (char *) path: (unused)
+	**             (resource_t **) resources: Pointer to a pointer
+	**                                        that will be set to the
+	**                                        location of the resources
+	**                                        (in one large chunk)
+	**             (int *) resource_nr_p: Pointer to an int the number of resources
+	**                                    read is stored in
+	** Returns   : (int) 0 on success, an SCI_ERROR_* code otherwise
+	*/
+	int readResourcePatchesSCI1(ResourceSource *source);
+	void process_patch(ResourceSource *source, Common::ArchiveMember &member, int restype,
+		int resnumber);
 
-/**--- Resource map decoding functions ---*/
+	void printLRU();
+	void addToLRU(resource_t *res);
+	void removeFromLRU(resource_t *res);
+};
 
-int sci0_read_resource_map(ResourceManager *mgr, ResourceSource *map, resource_t **resources, int *resource_nr_p, int *sci_version);
-/* Reads the SCI0 resource.map file from a local directory
-** Parameters: (char *) path: (unused)
-**             (resource_t **) resources: Pointer to a pointer
-**                                        that will be set to the
-**                                        location of the resources
-**                                        (in one large chunk)
-**             (int *) resource_nr_p: Pointer to an int the number of resources
-**                                    read is stored in
-**             (int) sci_version: SCI resource version
-** Returns   : (int) 0 on success, an SCI_ERROR_* code otherwise
-*/
 
-int sci1_read_resource_map(ResourceManager *mgr, ResourceSource *map, ResourceSource *vol,
-	resource_t **resource_p, int *resource_nr_p, int *sci_version);
-/* Reads the SCI1 resource.map file from a local directory
-** Parameters: (char *) path: (unused)
-**             (resource_t **) resources: Pointer to a pointer
-**                                        that will be set to the
-**                                        location of the resources
-**                                        (in one large chunk)
-**             (int *) resource_nr_p: Pointer to an int the number of resources
-**                                    read is stored in
-**             (int) sci_version: SCI resource version
-** Returns   : (int) 0 on success, an SCI_ERROR_* code otherwise
-*/
+	/* Prints the name of a matching patch to a string buffer
+	** Parameters: (char *) string: The buffer to print to
+	**             (resource_t *) res: Resource containing the number and type of the
+	**                                 resource whose name is to be print
+	** Returns   : (void)
+	*/
+	void sci0_sprintf_patch_file_name(char *string, resource_t *res);
 
-/**--- Patch management functions ---*/
+	/* Prints the name of a matching patch to a string buffer
+	** Parameters: (char *) string: The buffer to print to
+	**             (resource_t *) res: Resource containing the number and type of the
+	**                                 resource whose name is to be print
+	** Returns   : (void)
+	*/
+	void sci1_sprintf_patch_file_name(char *string, resource_t *res);
 
-void sci0_sprintf_patch_file_name(char *string, resource_t *res);
-/* Prints the name of a matching patch to a string buffer
-** Parameters: (char *) string: The buffer to print to
-**             (resource_t *) res: Resource containing the number and type of the
-**                                 resource whose name is to be print
-** Returns   : (void)
-*/
+	/**--- Decompression functions ---**/
+	int decompress0(resource_t *result, Common::ReadStream &stream, int sci_version);
+	/* Decrypts resource data and stores the result for SCI0-style compression.
+	** Parameters : result: The resource_t the decompressed data is stored in.
+	**              stream: Stream of the resource file
+	**              sci_version : Actual SCI resource version
+	** Returns    : (int) 0 on success, one of SCI_ERROR_* if a problem was
+	**               encountered.
+	*/
 
-void sci1_sprintf_patch_file_name(char *string, resource_t *res);
-/* Prints the name of a matching patch to a string buffer
-** Parameters: (char *) string: The buffer to print to
-**             (resource_t *) res: Resource containing the number and type of the
-**                                 resource whose name is to be print
-** Returns   : (void)
-*/
+	int decompress01(resource_t *result, Common::ReadStream &stream, int sci_version);
+	/* Decrypts resource data and stores the result for SCI01-style compression.
+	** Parameters : result: The resource_t the decompressed data is stored in.
+	**              stream: Stream of the resource file
+	**              sci_version : Actual SCI resource version
+	** Returns    : (int) 0 on success, one of SCI_ERROR_* if a problem was
+	**               encountered.
+	*/
 
-int sci0_read_resource_patches(ResourceSource *source, resource_t **resources, int *resource_nr_p);
-/* Reads SCI0 patch files from a local directory
-** Parameters: (char *) path: (unused)
-**             (resource_t **) resources: Pointer to a pointer
-**                                        that will be set to the
-**                                        location of the resources
-**                                        (in one large chunk)
-**             (int *) resource_nr_p: Pointer to an int the number of resources
-**                                    read is stored in
-** Returns   : (int) 0 on success, an SCI_ERROR_* code otherwise
-*/
+	int decompress1(resource_t *result, Common::ReadStream &stream, int sci_version);
+	/* Decrypts resource data and stores the result for SCI1.1-style compression.
+	** Parameters : result: The resource_t the decompressed data is stored in.
+	**              sci_version : Actual SCI resource version
+	**              stream: Stream of the resource file
+	** Returns    : (int) 0 on success, one of SCI_ERROR_* if a problem was
+	**               encountered.
+	*/
 
-int sci1_read_resource_patches(ResourceSource *source, resource_t **resources, int *resource_nr_p);
-/* Reads SCI1 patch files from a local directory
-** Parameters: (char *) path: (unused)
-**             (resource_t **) resources: Pointer to a pointer
-**                                        that will be set to the
-**                                        location of the resources
-**                                        (in one large chunk)
-**             (int *) resource_nr_p: Pointer to an int the number of resources
-**                                    read is stored in
-** Returns   : (int) 0 on success, an SCI_ERROR_* code otherwise
-*/
 
+	int decompress11(resource_t *result, Common::ReadStream &stream, int sci_version);
+	/* Decrypts resource data and stores the result for SCI1.1-style compression.
+	** Parameters : result: The resource_t the decompressed data is stored in.
+	**              sci_version : Actual SCI resource version
+	**              stream: Stream of the resource file
+	** Returns    : (int) 0 on success, one of SCI_ERROR_* if a problem was
+	**               encountered.
+	*/
 
-/**--- Decompression functions ---**/
 
+	int decrypt2(uint8* dest, uint8* src, int length, int complength);
+	/* Huffman token decryptor - defined in decompress0.c and used in decompress01.c
+	*/
 
-int decompress0(resource_t *result, Common::ReadStream &stream, int sci_version);
-/* Decrypts resource data and stores the result for SCI0-style compression.
-** Parameters : result: The resource_t the decompressed data is stored in.
-**              stream: Stream of the resource file
-**              sci_version : Actual SCI resource version
-** Returns    : (int) 0 on success, one of SCI_ERROR_* if a problem was
-**               encountered.
-*/
+	int decrypt4(uint8* dest, uint8* src, int length, int complength);
+	/* DCL inflate- implemented in decompress1.c
+	*/
 
-int decompress01(resource_t *result, Common::ReadStream &stream, int sci_version);
-/* Decrypts resource data and stores the result for SCI01-style compression.
-** Parameters : result: The resource_t the decompressed data is stored in.
-**              stream: Stream of the resource file
-**              sci_version : Actual SCI resource version
-** Returns    : (int) 0 on success, one of SCI_ERROR_* if a problem was
-**               encountered.
-*/
+	byte *view_reorder(byte *inbuffer, int dsize);
+	/* SCI1 style view compression */
 
-int decompress1(resource_t *result, Common::ReadStream &stream, int sci_version);
-/* Decrypts resource data and stores the result for SCI1.1-style compression.
-** Parameters : result: The resource_t the decompressed data is stored in.
-**              sci_version : Actual SCI resource version
-**              stream: Stream of the resource file
-** Returns    : (int) 0 on success, one of SCI_ERROR_* if a problem was
-**               encountered.
-*/
+	byte *pic_reorder(byte *inbuffer, int dsize);
+	/* SCI1 style pic compression */
 
-
-int decompress11(resource_t *result, Common::ReadStream &stream, int sci_version);
-/* Decrypts resource data and stores the result for SCI1.1-style compression.
-** Parameters : result: The resource_t the decompressed data is stored in.
-**              sci_version : Actual SCI resource version
-**              stream: Stream of the resource file
-** Returns    : (int) 0 on success, one of SCI_ERROR_* if a problem was
-**               encountered.
-*/
-
-
-int decrypt2(uint8* dest, uint8* src, int length, int complength);
-/* Huffman token decryptor - defined in decompress0.c and used in decompress01.c
-*/
-
-int decrypt4(uint8* dest, uint8* src, int length, int complength);
-/* DCL inflate- implemented in decompress1.c
-*/
-
-byte *view_reorder(byte *inbuffer, int dsize);
-/* SCI1 style view compression */
-
-byte *pic_reorder(byte *inbuffer, int dsize);
-/* SCI1 style pic compression */
-
-/*--- Internal helper functions ---*/
-
-void _scir_free_resources(resource_t *resources, int _resourcesNr);
-/* Frees a block of resources and associated data
-** Parameters: (resource_t *) resources: The resources to free
-**             (int) _resourcesNr: Number of resources in the block
-** Returns   : (void)
-*/
-
-resource_t *_scir_find_resource_unsorted(resource_t *res, int res_nr, int type, int number);
-/* Finds a resource matching type.number in an unsorted resource_t block
-** To be used during initial resource loading, when the resource list
-** may not have been sorted yet.
-** Parameters: (resource_t *) res: Pointer to the block to search in
-**             (int) res_nr: Number of resource_t structs allocated and defined
-**                           in the block pointed to by res
-**             (int) type: Type of the resource to look for
-**             (int) number: Number of the resource to look for
-** Returns   : (resource_t) The matching resource entry, or NULL if not found
-*/
-
-void _scir_add_altsource(resource_t *res, ResourceSource *source, unsigned int file_offset);
-/* Adds an alternative source to a resource
-** Parameters: (resource_t *) res: The resource to add to
-**             (ResourceSource *) source: The source of the resource
-**             (unsigned int) file_offset: Offset in the file the resource
-**                            is stored at
-** Returns   : (void)
-*/
-
 } // End of namespace Sci
 
 #endif // SCI_SCICORE_RESOURCE_H

Modified: scummvm/trunk/engines/sci/scicore/resource_map.cpp
===================================================================
--- scummvm/trunk/engines/sci/scicore/resource_map.cpp	2009-02-28 19:31:42 UTC (rev 38977)
+++ scummvm/trunk/engines/sci/scicore/resource_map.cpp	2009-02-28 20:45:36 UTC (rev 38978)
@@ -88,7 +88,7 @@
 		| (((bytes)[3]) << 9) \
 		| (((bytes)[2]) << 1))
 
-static int detect_odd_sci01(Common::File &file) {
+int ResourceManager::detectOddSCI01(Common::File &file) {
 	byte buf[6];
 	int files_ok = 1;
 	int fsize, resource_nr, read_ok;
@@ -119,15 +119,14 @@
 	return files_ok;
 }
 
-static int sci_res_read_entry(ResourceManager *mgr, ResourceSource *map,
-	byte *buf, resource_t *res, int sci_version) {
+int ResourceManager::resReadEntry(ResourceSource *map, byte *buf, resource_t *res, int sci_version) {
 	res->id = buf[0] | (buf[1] << 8);
 	res->type = SCI0_RESID_GET_TYPE(buf);
 	res->number = SCI0_RESID_GET_NUMBER(buf);
 	res->status = SCI_STATUS_NOMALLOC;
 
 	if (sci_version == SCI_VERSION_01_VGA_ODD) {
-		res->source = scir_get_volume(mgr, map, SCI01V_RESFILE_GET_FILE(buf + 2));
+		res->source = getVolume(map, SCI01V_RESFILE_GET_FILE(buf + 2));
 		res->file_offset = SCI01V_RESFILE_GET_OFFSET(buf + 2);
 
 #if 0
@@ -135,7 +134,7 @@
 			return 1;
 #endif
 	} else {
-		res->source = scir_get_volume(mgr, map, SCI0_RESFILE_GET_FILE(buf + 2));
+		res->source = getVolume(map, SCI0_RESFILE_GET_FILE(buf + 2));
 		res->file_offset = SCI0_RESFILE_GET_OFFSET(buf + 2);
 
 #if 0
@@ -157,7 +156,7 @@
 	return 0;
 }
 
-inline int sci1_res_type(int ofs, int *types, int lastrt) {
+int ResourceManager::resTypeSCI1(int ofs, int *types, int lastrt) {
 	int i, last = -1;
 
 	for (i = 0; i <= sci1_last_resource;i++)
@@ -170,7 +169,7 @@
 	return lastrt;
 }
 
-int sci1_parse_header(Common::ReadStream &stream, int *types, int *lastrt) {
+int ResourceManager::parseHeaderSCI1(Common::ReadStream &stream, int *types, int *lastrt) {
 	unsigned char rtype;
 	unsigned char offset[2];
 	int read_ok;
@@ -198,7 +197,7 @@
 
 
 
-int sci0_read_resource_map(ResourceManager *mgr, ResourceSource *map, resource_t **resource_p, int *resource_nr_p, int *sci_version) {
+int ResourceManager::readResourceMapSCI0(ResourceSource *map, int *sci_version) {
 	int fsize;
 	Common::File file;
 	resource_t *resources;
@@ -237,7 +236,7 @@
 
 	file.seek(0, SEEK_SET);
 
-	switch (detect_odd_sci01(file)) {
+	switch (detectOddSCI01(file)) {
 	case 0 : // Odd SCI01
 		if (*sci_version == SCI_VERSION_AUTODETECT)
 			*sci_version = SCI_VERSION_01_VGA_ODD;
@@ -279,7 +278,7 @@
 			int addto = resource_index;
 			int i;
 
-			if (sci_res_read_entry(mgr, map, buf, resources + resource_index, *sci_version)) {
+			if (resReadEntry(map, buf, resources + resource_index, *sci_version)) {
 				free(resources);
 				return SCI_ERROR_RESMAP_NOT_FOUND;
 			}
@@ -290,7 +289,7 @@
 					fresh = 0;
 				}
 
-			_scir_add_altsource(resources + addto, resources[resource_index].source, resources[resource_index].file_offset);
+			addAltSource(resources + addto, resources[resource_index].source, resources[resource_index].file_offset);
 
 			if (fresh)
 				++resource_index;
@@ -308,12 +307,12 @@
 
 	if (!resource_index) {
 		sciprintf("resource.map was empty!\n");
-		_scir_free_resources(resources, resource_nr);
+		freeResources(resources, resource_nr);
 		return SCI_ERROR_RESMAP_NOT_FOUND;
 	}
 
 	if (max_resfile_nr > 999) {
-		_scir_free_resources(resources, resource_nr);
+		freeResources(resources, resource_nr);
 		return SCI_ERROR_INVALID_RESMAP_ENTRY;
 	} else {
 #if 0
@@ -333,15 +332,15 @@
 	if (resource_index < resource_nr)
 		resources = (resource_t *)sci_realloc(resources, sizeof(resource_t) * resource_index);
 
-	*resource_p = resources;
-	*resource_nr_p = resource_index;
+	_resources = resources;
+	_resourcesNr = resource_index;
 
 	return 0;
 }
 
 #define TEST fprintf(stderr, "OK in line %d\n", __LINE__);
 
-static int sci10_or_11(int *types) {
+int ResourceManager::isSCI10or11(int *types) {
 	int this_restype = 0;
 	int next_restype = 1;
 
@@ -372,8 +371,7 @@
 	return SCI_VERSION_AUTODETECT;
 }
 
-int sci1_read_resource_map(ResourceManager *mgr, ResourceSource *map, ResourceSource *vol,
-	resource_t **resource_p, int *resource_nr_p, int *sci_version) {
+int ResourceManager::readResourceMapSCI1(ResourceSource *map, ResourceSource *vol, int *sci_version) {
 	int fsize;
 	Common::File file;
 	resource_t *resources, *resource_start;
@@ -392,11 +390,11 @@
 
 	memset(types, 0, sizeof(int) * (sci1_last_resource + 1));
 
-	if (!(sci1_parse_header(file, types, &lastrt))) {
+	if (!(parseHeaderSCI1(file, types, &lastrt))) {
 		return SCI_ERROR_INVALID_RESMAP_ENTRY;
 	}
 
-	entry_size_selector = sci10_or_11(types);
+	entry_size_selector = isSCI10or11(types);
 	if (*sci_version == SCI_VERSION_AUTODETECT)
 		*sci_version = entry_size_selector;
 
@@ -414,8 +412,8 @@
 	}
 
 	resource_nr = (fsize - types[0]) / entrysize;
-	resource_start = resources = (resource_t*)sci_realloc(mgr->_resources, (mgr->_resourcesNr + resource_nr) * sizeof(resource_t));
-	resources += mgr->_resourcesNr;
+	resource_start = resources = (resource_t*)sci_realloc(_resources, (_resourcesNr + resource_nr) * sizeof(resource_t));
+	resources += _resourcesNr;
 
 	i = 0;
 	while (types[i] == 0)
@@ -443,12 +441,12 @@
 		}
 
 		res = &(resources[resource_index]);
-		res->type = sci1_res_type(ofs, types, lastrt);
+		res->type = resTypeSCI1(ofs, types, lastrt);
 		res->number = SCI1_RESFILE_GET_NUMBER(buf);
 		res->status = SCI_STATUS_NOMALLOC;
 
 		if (entry_size_selector < SCI_VERSION_1_1) {
-			res->source = scir_get_volume(mgr, map, SCI1_RESFILE_GET_FILE(buf));
+			res->source = getVolume(map, SCI1_RESFILE_GET_FILE(buf));
 			res->file_offset = SCI1_RESFILE_GET_OFFSET(buf);
 		} else {
 			res->source = vol;
@@ -470,7 +468,7 @@
 		        res->file, res->file_offset, addto);
 #endif
 
-		_scir_add_altsource(resources + addto, resources[resource_index].source, resources[resource_index].file_offset);
+		addAltSource(resources + addto, resources[resource_index].source, resources[resource_index].file_offset);
 
 		if (fresh)
 			++resource_index;
@@ -480,8 +478,8 @@
 
 	free(types);
 
-	*resource_p = resource_start;
-	*resource_nr_p += resource_index;
+	_resources = resource_start;
+	_resourcesNr += resource_index;
 	return 0;
 
 }

Modified: scummvm/trunk/engines/sci/scicore/resource_patch.cpp
===================================================================
--- scummvm/trunk/engines/sci/scicore/resource_patch.cpp	2009-02-28 19:31:42 UTC (rev 38977)
+++ scummvm/trunk/engines/sci/scicore/resource_patch.cpp	2009-02-28 20:45:36 UTC (rev 38978)
@@ -40,8 +40,8 @@
 }
 
 // version-agnostic patch application
-static void process_patch(ResourceSource *source,
-	Common::ArchiveMember &member, int restype, int resnumber, resource_t **resource_p, int *resource_nr_p) {
+void ResourceManager::process_patch(ResourceSource *source,
+	Common::ArchiveMember &member, int restype, int resnumber) {
 	Common::File file;
 
 	if (restype == sci_invalid_resource)
@@ -52,7 +52,7 @@
 		perror("""__FILE__"": (""__LINE__""): failed to open");
 	else {
 		uint8 filehdr[2];
-		resource_t *newrsc = _scir_find_resource_unsorted(*resource_p, *resource_nr_p, restype, resnumber);
+		resource_t *newrsc = findResourceUnsorted(_resources, _resourcesNr, restype, resnumber);
 		int fsize = file.size();
 		if (fsize < 3) {
 			printf("File too small\n");
@@ -76,9 +76,9 @@
 			// Prepare destination, if neccessary
 			if (!newrsc) {
 				// Completely new resource!
-				++(*resource_nr_p);
-				*resource_p = (resource_t *)sci_realloc(*resource_p, *resource_nr_p * sizeof(resource_t));
-				newrsc = (*resource_p - 1) + *resource_nr_p;
+				_resourcesNr++;
+				_resources = (resource_t *)sci_realloc(_resources, _resourcesNr * sizeof(resource_t));
+				newrsc = (_resources - 1) + _resourcesNr;
 				newrsc->alt_sources = NULL;
 			}
 
@@ -90,16 +90,14 @@
 			newrsc->type = restype;
 			newrsc->source = source;
 			newrsc->file_offset = 2 + patch_data_offset;
-
-			_scir_add_altsource(newrsc, source, 2);
-
+			addAltSource(newrsc, source, 2);
 			printf("OK\n");
 		}
 	}
 }
 
 
-int sci0_read_resource_patches(ResourceSource *source, resource_t **resource_p, int *resource_nr_p) {
+int ResourceManager::readResourcePatchesSCI0(ResourceSource *source) {
 	Common::ArchiveMemberList files;
 	SearchMan.listMatchingMembers(files, "*.???");
 
@@ -130,13 +128,13 @@
 			}
 		}
 
-		process_patch(source, **x, restype, resnumber, resource_p, resource_nr_p);
+		process_patch(source, **x, restype, resnumber);
 	}
 
 	return 0;
 }
 
-int sci1_read_resource_patches(ResourceSource *source, resource_t **resource_p, int *resource_nr_p) {
+int ResourceManager::readResourcePatchesSCI1(ResourceSource *source) {
 	Common::ArchiveMemberList files;
 	SearchMan.listMatchingMembers(files, "*.*");
 
@@ -169,7 +167,7 @@
 				restype = sci_invalid_resource;
 		}
 
-		process_patch(source, **x, restype, resnumber, resource_p, resource_nr_p);
+		process_patch(source, **x, restype, resnumber);
 	}
 
 	return 0;

Modified: scummvm/trunk/engines/sci/scicore/script.cpp
===================================================================
--- scummvm/trunk/engines/sci/scicore/script.cpp	2009-02-28 19:31:42 UTC (rev 38977)
+++ scummvm/trunk/engines/sci/scicore/script.cpp	2009-02-28 20:45:36 UTC (rev 38978)
@@ -329,7 +329,7 @@
 void script_dissect(ResourceManager *resmgr, int res_no, const Common::StringList &selectorNames) {
 	int objectctr[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
 	unsigned int _seeker = 0;
-	resource_t *script = scir_find_resource(resmgr, sci_script, res_no, 0);
+	resource_t *script = resmgr->findResource(sci_script, res_no, 0);
 	word_t **words;
 	int word_count;
 

Modified: scummvm/trunk/engines/sci/scicore/vocab.cpp
===================================================================
--- scummvm/trunk/engines/sci/scicore/vocab.cpp	2009-02-28 19:31:42 UTC (rev 38977)
+++ scummvm/trunk/engines/sci/scicore/vocab.cpp	2009-02-28 20:45:36 UTC (rev 38978)
@@ -75,12 +75,12 @@
 	resource_t *resource;
 
 	// First try to load the SCI0 vocab resource.
-	resource = scir_find_resource(resmgr, sci_vocab, VOCAB_RESOURCE_SCI0_MAIN_VOCAB, 0);
+	resource = resmgr->findResource(sci_vocab, VOCAB_RESOURCE_SCI0_MAIN_VOCAB, 0);
 	vocab_version = 0;
 
 	if (!resource) {
 		warning("SCI0: Could not find a main vocabulary, trying SCI01");
-		resource = scir_find_resource(resmgr, sci_vocab, VOCAB_RESOURCE_SCI1_MAIN_VOCAB, 0);
+		resource = resmgr->findResource(sci_vocab, VOCAB_RESOURCE_SCI1_MAIN_VOCAB, 0);
 		vocab_version = 1;
 	}
 
@@ -179,7 +179,7 @@
 suffix_t **vocab_get_suffices(ResourceManager *resmgr, int *suffices_nr) {
 	int counter = 0;
 	suffix_t **suffices;
-	resource_t *resource = scir_find_resource(resmgr, sci_vocab, VOCAB_RESOURCE_SUFFIX_VOCAB, 1);
+	resource_t *resource = resmgr->findResource(sci_vocab, VOCAB_RESOURCE_SUFFIX_VOCAB, 1);
 	unsigned int seeker = 1;
 
 	if (!resource) {
@@ -226,7 +226,7 @@
 void vocab_free_suffices(ResourceManager *resmgr, suffix_t **suffices, int suffices_nr) {
 	int i;
 
-	scir_unlock_resource(resmgr, scir_find_resource(resmgr, sci_vocab, VOCAB_RESOURCE_SUFFIX_VOCAB, 0),
+	resmgr->unlockResource(resmgr->findResource(sci_vocab, VOCAB_RESOURCE_SUFFIX_VOCAB, 0),
 	                     VOCAB_RESOURCE_SUFFIX_VOCAB, sci_vocab);
 
 	for (i = 0; i < suffices_nr; i++)
@@ -241,7 +241,7 @@
 }
 
 parse_tree_branch_t *vocab_get_branches(ResourceManager * resmgr, int *branches_nr) {
-	resource_t *resource = scir_find_resource(resmgr, sci_vocab, VOCAB_RESOURCE_PARSE_TREE_BRANCHES, 0);
+	resource_t *resource = resmgr->findResource(sci_vocab, VOCAB_RESOURCE_PARSE_TREE_BRANCHES, 0);
 	parse_tree_branch_t *retval;
 	int i;
 

Modified: scummvm/trunk/engines/sci/scicore/vocab_debug.cpp
===================================================================
--- scummvm/trunk/engines/sci/scicore/vocab_debug.cpp	2009-02-28 19:31:42 UTC (rev 38977)
+++ scummvm/trunk/engines/sci/scicore/vocab_debug.cpp	2009-02-28 20:45:36 UTC (rev 38978)
@@ -159,7 +159,7 @@
 	int *c;
 	unsigned int i;
 
-	if ((r = scir_find_resource(resmgr, sci_vocab, 996, 0)) == NULL)
+	if ((r = resmgr->findResource(sci_vocab, 996, 0)) == NULL)
 		return 0;
 
 	c = (int *)sci_malloc(sizeof(int) * r->size / 2);
@@ -174,7 +174,7 @@
 int vocabulary_get_class_count(ResourceManager *resmgr) {
 	resource_t* r;
 
-	if ((r = scir_find_resource(resmgr, sci_vocab, 996, 0)) == 0)
+	if ((r = resmgr->findResource(sci_vocab, 996, 0)) == 0)
 		return 0;
 
 	return r->size / 4;
@@ -183,7 +183,7 @@
 bool vocabulary_get_snames(ResourceManager *resmgr, sci_version_t version, Common::StringList &selectorNames) {
 	int count;
 
-	resource_t *r = scir_find_resource(resmgr, sci_vocab, 997, 0);
+	resource_t *r = resmgr->findResource(sci_vocab, 997, 0);
 
 	if (!r) // No such resource?
 		return false;
@@ -218,7 +218,7 @@
 opcode* vocabulary_get_opcodes(ResourceManager *resmgr) {
 	opcode* o;
 	int count, i = 0;
-	resource_t* r = scir_find_resource(resmgr, sci_vocab, VOCAB_RESOURCE_OPCODES, 0);
+	resource_t* r = resmgr->findResource(sci_vocab, VOCAB_RESOURCE_OPCODES, 0);
 
 	// if the resource couldn't be loaded, leave
 	if (r == NULL) {
@@ -295,7 +295,7 @@
 static char **vocabulary_get_knames0(ResourceManager *resmgr, int* names) {
 	char** t;
 	int count, i, index = 2, empty_to_add = 1;
-	resource_t *r = scir_find_resource(resmgr, sci_vocab, VOCAB_RESOURCE_KNAMES, 0);
+	resource_t *r = resmgr->findResource(sci_vocab, VOCAB_RESOURCE_KNAMES, 0);
 
 	if (!r) { // No kernel name table found? Fall back to default table
 		t = (char **)sci_malloc((SCI0_KNAMES_DEFAULT_ENTRIES_NR + 1) * sizeof(char*));
@@ -345,7 +345,7 @@
 static char **vocabulary_get_knames1(ResourceManager *resmgr, int *count) {
 	char **t = NULL;
 	unsigned int size = 64, used = 0, pos = 0;
-	resource_t *r = scir_find_resource(resmgr, sci_vocab, VOCAB_RESOURCE_KNAMES, 0);
+	resource_t *r = resmgr->findResource(sci_vocab, VOCAB_RESOURCE_KNAMES, 0);
 
 	while (pos < r->size) {
 		int len;

Modified: scummvm/trunk/engines/sci/scicore/vocabulary.h
===================================================================
--- scummvm/trunk/engines/sci/scicore/vocabulary.h	2009-02-28 19:31:42 UTC (rev 38977)
+++ scummvm/trunk/engines/sci/scicore/vocabulary.h	2009-02-28 20:45:36 UTC (rev 38978)
@@ -32,7 +32,7 @@
 
 namespace Sci {
 
-struct ResourceManager;
+class ResourceManager;
 
 /*#define VOCABULARY_DEBUG */
 /*#define SCI_SIMPLE_SAID_CODE */ /* Whether the simplified Said() matching should be used */

Modified: scummvm/trunk/engines/sci/sfx/player/polled.cpp
===================================================================
--- scummvm/trunk/engines/sci/sfx/player/polled.cpp	2009-02-28 19:31:42 UTC (rev 38977)
+++ scummvm/trunk/engines/sci/sfx/player/polled.cpp	2009-02-28 20:45:36 UTC (rev 38978)
@@ -176,11 +176,11 @@
 	}
 
 	if (seq->patch_nr != SFX_SEQ_PATCHFILE_NONE) {
-		res = scir_find_resource(resmgr, sci_patch, seq->patch_nr, 0);
+		res = resmgr->findResource(sci_patch, seq->patch_nr, 0);
 	}
 
 	if (seq->patch2_nr != SFX_SEQ_PATCHFILE_NONE) {
-		res2 = scir_find_resource(resmgr, sci_patch, seq->patch2_nr, 0);
+		res2 = resmgr->findResource(sci_patch, seq->patch2_nr, 0);
 	}
 
 	if (seq->init(seq,

Modified: scummvm/trunk/engines/sci/sfx/player/realtime.cpp
===================================================================
--- scummvm/trunk/engines/sci/sfx/player/realtime.cpp	2009-02-28 19:31:42 UTC (rev 38977)
+++ scummvm/trunk/engines/sci/sfx/player/realtime.cpp	2009-02-28 20:45:36 UTC (rev 38978)
@@ -132,7 +132,7 @@
 	resource_t *res = NULL;
 
 	if (patchfile != SFX_SEQ_PATCHFILE_NONE) {
-		res = scir_find_resource(resmgr, sci_patch, patchfile, 0);
+		res = resmgr->findResource(sci_patch, patchfile, 0);
 		if (!res) {
 			fprintf(stderr, "[SFX] " __FILE__": patch.%03d requested by sequencer (%s), but not found\n",
 			        patchfile, seq_name);


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