aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorJordi Vilalta Prat2009-02-28 11:12:59 +0000
committerJordi Vilalta Prat2009-02-28 11:12:59 +0000
commit501e4bb91a9f1bf91e6632dc158ee343dc1e069e (patch)
treea61b59606ac5219ec83efc2ff70611a9ebfb0a87 /engines
parentd3b2a4ede9faa3a9bf648ded5ac00b3bd86deda3 (diff)
downloadscummvm-rg350-501e4bb91a9f1bf91e6632dc158ee343dc1e069e.tar.gz
scummvm-rg350-501e4bb91a9f1bf91e6632dc158ee343dc1e069e.tar.bz2
scummvm-rg350-501e4bb91a9f1bf91e6632dc158ee343dc1e069e.zip
SCI: Renamed some kernel types and general cleanup
svn-id: r38961
Diffstat (limited to 'engines')
-rw-r--r--engines/sci/engine/game.cpp18
-rw-r--r--engines/sci/engine/gc.cpp8
-rw-r--r--engines/sci/engine/heap.cpp286
-rw-r--r--engines/sci/engine/heap.h115
-rw-r--r--engines/sci/engine/heapmgr.h38
-rw-r--r--engines/sci/engine/kernel.cpp8
-rw-r--r--engines/sci/engine/kernel.h24
-rw-r--r--engines/sci/engine/kgraphics.cpp30
-rw-r--r--engines/sci/engine/klists.cpp78
-rw-r--r--engines/sci/engine/kmovement.cpp4
-rw-r--r--engines/sci/engine/kpathing.cpp12
-rw-r--r--engines/sci/engine/kscripts.cpp37
-rw-r--r--engines/sci/engine/kstring.cpp12
-rw-r--r--engines/sci/engine/message.cpp38
-rw-r--r--engines/sci/engine/message.h32
-rw-r--r--engines/sci/engine/savegame.cfsml133
-rw-r--r--engines/sci/engine/savegame.cpp1735
-rw-r--r--engines/sci/engine/script.h3
-rw-r--r--engines/sci/engine/scriptconsole.cpp6
-rw-r--r--engines/sci/engine/scriptdebug.cpp118
-rw-r--r--engines/sci/engine/seg_manager.cpp280
-rw-r--r--engines/sci/engine/seg_manager.h103
-rw-r--r--engines/sci/engine/state.h20
-rw-r--r--engines/sci/engine/vm.cpp126
-rw-r--r--engines/sci/engine/vm.h274
-rw-r--r--engines/sci/engine/vm_types.h9
26 files changed, 1577 insertions, 1970 deletions
diff --git a/engines/sci/engine/game.cpp b/engines/sci/engine/game.cpp
index 04a410d51b..20ff91b476 100644
--- a/engines/sci/engine/game.cpp
+++ b/engines/sci/engine/game.cpp
@@ -37,7 +37,7 @@
namespace Sci {
// Structures and data from vm.c:
-extern calls_struct_t *send_calls;
+extern CallsStruct *send_calls;
extern int send_calls_allocated;
extern int bp_flag;
@@ -314,7 +314,7 @@ int create_class_table_sci11(EngineState *s) {
else
s->classtable_size = vocab996->size >> 2;
- s->classtable = (class_t*)sci_calloc(sizeof(class_t), s->classtable_size);
+ 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);
@@ -335,9 +335,9 @@ int create_class_table_sci11(EngineState *s) {
return 1;
}
- s->classtable = (class_t*)sci_realloc(s->classtable, sizeof(class_t) * (classnr + 1));
+ s->classtable = (Class*)sci_realloc(s->classtable, sizeof(Class) * (classnr + 1));
// Clear after resize
- memset(&(s->classtable[s->classtable_size]), 0, sizeof(class_t) * (1 + classnr - s->classtable_size));
+ memset(&(s->classtable[s->classtable_size]), 0, sizeof(Class) * (1 + classnr - s->classtable_size));
s->classtable_size = classnr + 1; // Adjust maximum number of entries
}
@@ -369,7 +369,7 @@ static int create_class_table_sci0(EngineState *s) {
else
s->classtable_size = vocab996->size >> 2;
- s->classtable = (class_t*)sci_calloc(sizeof(class_t), s->classtable_size);
+ s->classtable = (Class*)sci_calloc(sizeof(Class), s->classtable_size);
for (scriptnr = 0; scriptnr < 1000; scriptnr++) {
int objtype = 0;
@@ -409,9 +409,9 @@ static int create_class_table_sci0(EngineState *s) {
return 1;
}
- s->classtable = (class_t*)sci_realloc(s->classtable, sizeof(class_t) * (classnr + 1));
+ s->classtable = (Class*)sci_realloc(s->classtable, sizeof(Class) * (classnr + 1));
// Clear after resize
- memset(&(s->classtable[s->classtable_size]), 0, sizeof(class_t) * (1 + classnr - s->classtable_size));
+ memset(&(s->classtable[s->classtable_size]), 0, sizeof(Class) * (1 + classnr - s->classtable_size));
s->classtable_size = classnr + 1; // Adjust maximum number of entries
}
@@ -559,7 +559,7 @@ void script_free_engine(EngineState *s) {
}
void script_free_breakpoints(EngineState *s) {
- breakpoint_t *bp, *bp_next;
+ Breakpoint *bp, *bp_next;
// Free breakpoint list
bp = s->bp_list;
@@ -602,7 +602,7 @@ int game_init(EngineState *s) {
if (!send_calls_allocated) {
send_calls_allocated = 16;
- send_calls = (calls_struct_t*)sci_calloc(sizeof(calls_struct_t), send_calls_allocated);
+ send_calls = (CallsStruct*)sci_calloc(sizeof(CallsStruct), send_calls_allocated);
}
if (s->gfx_state && _reset_graphics_input(s))
diff --git a/engines/sci/engine/gc.cpp b/engines/sci/engine/gc.cpp
index 531ecf8d19..ae0b9fefed 100644
--- a/engines/sci/engine/gc.cpp
+++ b/engines/sci/engine/gc.cpp
@@ -153,7 +153,7 @@ reg_t_hash_map *find_all_used_references(EngineState *s) {
// Init: Value Stack
// We do this one by hand since the stack doesn't know the current execution stack
{
- exec_stack_t *xs = s->execution_stack + s->execution_stack_pos;
+ ExecStack *xs = s->execution_stack + s->execution_stack_pos;
reg_t *pos;
for (pos = s->stack_base; pos < xs->sp; pos++)
@@ -165,7 +165,7 @@ reg_t_hash_map *find_all_used_references(EngineState *s) {
// Init: Execution Stack
for (i = 0; i <= s->execution_stack_pos; i++) {
- exec_stack_t *es = s->execution_stack + i;
+ ExecStack *es = s->execution_stack + i;
if (es->type != EXEC_STACK_TYPE_KERNEL) {
worklist_push(&worklist, nonnormal_map, es->objp);
@@ -182,7 +182,7 @@ reg_t_hash_map *find_all_used_references(EngineState *s) {
for (i = 1; i < sm->heap_size; i++)
if (interfaces[i]
&& interfaces[i]->getType() == MEM_OBJ_SCRIPT) {
- script_t *script = &(interfaces[i]->getMobj()->data.script);
+ Script *script = &(interfaces[i]->getMobj()->data.script);
if (script->lockers) { // Explicitly loaded?
int obj_nr;
@@ -192,7 +192,7 @@ reg_t_hash_map *find_all_used_references(EngineState *s) {
// All objects (may be classes, may be indirectly reachable)
for (obj_nr = 0; obj_nr < script->objects_nr; obj_nr++) {
- object_t *obj = script->objects + obj_nr;
+ Object *obj = script->objects + obj_nr;
worklist_push(&worklist, nonnormal_map, obj->pos);
}
}
diff --git a/engines/sci/engine/heap.cpp b/engines/sci/engine/heap.cpp
deleted file mode 100644
index 5907582e37..0000000000
--- a/engines/sci/engine/heap.cpp
+++ /dev/null
@@ -1,286 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * $URL$
- * $Id$
- *
- */
-
-#include "sci/engine/state.h"
-#include "sci/scicore/sciconsole.h"
-#include "sci/engine/heap.h"
-
-namespace Sci {
-
-#define assert_in_range(pos) assert(pos >= 1000 && pos <= 0xffff)
-
-static void set_size(heap_t *h, int block_pos, int size) {
- assert_in_range(block_pos);
- assert(size <= 0xffff - 1000);
- putInt16(h->start + block_pos, size);
-}
-
-static void set_next(heap_t *h, int block_pos, int next) {
- assert_in_range(block_pos);
- assert_in_range(next);
- putInt16(h->start + block_pos + 2, next);
-}
-
-
-static unsigned int get_size(heap_t *h, int block_pos) {
- assert_in_range(block_pos);
- return (uint16)getInt16(h->start + block_pos);
-}
-
-static unsigned int get_next(heap_t *h, int block_pos) {
- assert_in_range(block_pos);
- return (uint16)getInt16(h->start + block_pos + 2);
-}
-
-// Allocates a new heap
-heap_t *heap_new() {
- heap_t *h;
-
- if ((h = (heap_t*)sci_malloc(sizeof(heap_t))) == 0)
- return 0;
-
- if ((h->start = (byte *)sci_calloc(SCI_HEAP_SIZE, 1)) == 0) {
- free(h);
- return 0;
- }
-
- h->base = h->start + 1000;
- h->first_free = 1000;
- h->old_ff = -1;
- set_size(h, 1000, 0xffff - 1000);
- set_next(h, 1000, 0xffff);
-
- return h;
-}
-
-// Deletes a heap
-void heap_del(heap_t *h) {
- free(h->start);
- free(h);
-}
-
-int heap_meminfo(heap_t *h) {
- heap_ptr current = h->first_free;
- int total = 0;
-
- while (current != 0xffff) {
- total += get_size(h, current);
- current = get_next(h, current);
- }
-
- return total;
-}
-
-
-int heap_largest(heap_t *h) {
- int current = h->first_free;
- int best_pos = -1, best_size = 0;
-
- while (current != 0xffff) {
- int size = get_size(h, current);
- int next = get_next(h, current);
-
- if (size > best_size) {
- best_pos = current;
- best_size = size;
- }
-
- current = next;
- }
-
- return best_size;
-}
-
-heap_ptr heap_allocate(heap_t *h, int size) {
- unsigned int previous = h->first_free;
- unsigned int current = previous;
-
- if (!size) {
- fprintf(stderr, "Warning: heap_alloc'd zero bytes!\n");
- size += 2;
- }
-
- size += 2 + (size & 1);
-
- while (current < 0xffff) {
- int block_size = get_size(h, current);
- int next = get_next(h, current);
-
- // Is this block large enough?
- if (block_size >= size) {
- // Swallow the block whole
- if (block_size <= size + 4) {
- size = block_size;
- set_next(h, previous, next);
- } else {
- // Split the block
- int rest = current + size;
-
- set_next(h, previous, rest);
- set_size(h, rest, block_size - size);
- set_next(h, rest, next);
- next = rest;
- }
- set_size(h, current, size);
- if (current == h->first_free) h->first_free = next;
- return current;
- }
- previous = current;
- current = next;
- }
-
- // No large enough block was found.
- return 0;
-}
-
-void heap_free(heap_t *h, unsigned int m) {
- unsigned int previous, next;
- assert_in_range(m);
- previous = next = h->first_free;
-
- // Find the previous and next blocks
- while (next < m) {
- previous = next;
- assert(previous < 0xffff);
- next = get_next(h, previous);
- if (next <= previous) {
- sciprintf("Heap corrupt. Aborting heap_free()...\n");
- return;
- }
- }
-
- if (h->first_free > m)
- h->first_free = m; // Guarantee that first_free is correct
-
- if (previous == next) {
- if (m < previous) {
- h->first_free = m;
- if (m + get_size(h, m) == previous) {
- set_size(h, m, get_size(h, m) + get_size(h, previous));
- set_next(h, m, get_next(h, previous));
- } else
- set_next(h, m, previous);
- } else {
- if (previous + get_size(h, previous) == m) {
- set_size(h, previous, get_size(h, previous) + get_size(h, m));
- set_next(h, previous, 0xffff);
- } else {
- set_next(h, previous, m);
- set_next(h, m, next);
- }
- }
- } else {
- set_next(h, previous, m);
- set_next(h, m, next);
-
- // Try to merge with previous
- if (previous + get_size(h, previous) == m) {
- set_size(h, previous, get_size(h, previous) + get_size(h, m));
- set_next(h, previous, next);
- m = previous;
- }
-
- // Try to merge with next
- if (m + get_size(h, m) == next) {
- set_size(h, m, get_size(h, m) + get_size(h, next));
- set_next(h, m, get_next(h, next));
- }
- }
-}
-
-void save_ff(heap_t *h) {
- h->old_ff = h->first_free;
-}
-
-void restore_ff(heap_t *h) {
- h->first_free = h->old_ff;
- set_size(h, h->first_free, 0xffff - h->first_free);
- set_next(h, h->first_free, 0xffff);
-}
-
-void heap_dump_free(heap_t *h) {
- int freedomseeker;
-
- printf("\tfirst_free= %#x (oldff= %#x)\n\tFree Blocks:\n", h->first_free, h->old_ff);
-
- freedomseeker = h->first_free;
- while (freedomseeker != 0xffff) {
- printf("\t %#04x: size: %#04x\n", freedomseeker, get_size(h, freedomseeker));
- freedomseeker = get_next(h, freedomseeker);
- }
-}
-
-void heap_dump_all(heap_t *h) {
- int seeker = 1000;
- int free_seeker = h->first_free;
-
- while (seeker < 0xffff) {
- int is_free = (seeker == free_seeker);
- int size = get_size(h, seeker);
-
- if (is_free)
- free_seeker = get_next(h, free_seeker);
-
- printf("%04x\t%d\t%s\n", seeker, size, is_free ? "FREE" : "");
- seeker += size;
- }
-}
-
-#if 0
-int main(int argc, char **argv) {
- heap_t *h = heap_new();
- int a, b, c, d, e;
-
- printf("Running heap tests:\nHeap initialization:\n");
- heap_dump_free(h);
-
- printf("[a] Allocating 0x1: position is %#x\n", a = heap_allocate(h, 1));
- heap_dump_free(h);
-
- printf("[b] Allocating 0x10: position is %#x\n", b = heap_allocate(h, 0x10));
- printf("[c] Allocating 0x10: position is %#x\n", c = heap_allocate(h, 0x10));
- printf("[d] Allocating 0x10: position is %#x\n", d = heap_allocate(h, 0x10));
- printf("[e] Allocating 0x1000: position is %#x\n", e = heap_allocate(h, 0x1000));
- heap_dump_free(h);
-
- printf("Freeing [b]:\n");
- heap_free(h, b);
- heap_dump_free(h);
-
- printf("Freeing [d]:\n");
- heap_free(h, d);
- heap_dump_free(h);
-
- printf("Freeing [c]:\n");
- heap_free(h, c);
- heap_dump_free(h);
-
- heap_del(h);
-
- return 0;
-}
-#endif
-
-} // End of namespace Sci
diff --git a/engines/sci/engine/heap.h b/engines/sci/engine/heap.h
deleted file mode 100644
index f826c6e8a1..0000000000
--- a/engines/sci/engine/heap.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * $URL$
- * $Id$
- *
- */
-
-#ifndef SCI_ENGINE_HEAP_H
-#define SCI_ENGINE_HEAP_H
-
-#include "sci/tools.h"
-
-namespace Sci {
-
-#define SCI_HEAP_SIZE 0x10000
-
-typedef uint16 heap_ptr;
-
-struct heap_t {
- byte *start;
- byte *base;
- unsigned int first_free;
- int old_ff;
-};
-
-heap_t *heap_new();
-/* Allocates a new heap.
-** Parameters: (void)
-** Returns : (heap_t *) A new 0xffff-sized heap
-*/
-
-void heap_del(heap_t *h);
-/* Frees an allocated heap
-** Parameters: (heap_t *) h: The heap to unallocate
-** Returns : (void)
-*/
-
-int heap_meminfo(heap_t *h);
-/* Returns the total number of free bytes on the heap
-** Parameters: (heap_t *) h: The heap to check
-** Returns : (int) The total free space in bytes
-*/
-
-int heap_largest(heap_t *h);
-/* Returns the block size of the largest free block on the heap
-** Parameters: (heap_t *) h: The heap to check
-** Returns : (int) The size of the largest free block
-*/
-
-heap_ptr heap_allocate(heap_t *h, int size);
-/* Allocates memory on a heap.
-** Parameters: (heap_t *) h: The heap to work with
-** (int) size: The block size to allocate
-** Returns : (heap_ptr): The heap pointer to the new block, or 0 on failure
-*/
-
-void heap_free(heap_t *h, unsigned int m);
-/* Frees allocated heap memory.
-** Parameters: (heap_t *) h: The heap to work with
-** (int) m: The handle at which memory is to be unallocated
-** Returns : (void)
-** This function automatically prevents fragmentation from happening.
-*/
-
-void save_ff(heap_t *h);
-/* Stores the current first free position
-** Parameters: (heap_t *) h: The heap which is to be manipulated
-** Returns : (void)
-** This function can be used to save the heap state for later restoration (see
-** the next function)
-*/
-
-void restore_ff(heap_t *h);
-/* Restores the first free heap state
-** Parameters: (heap_t *) h: The heap to restore
-** Returns : (void)
-** Restoring the first free state will reset the heap to the position stored
-** when save_ff() was called, if and only if none of the blocks allocated before
-** save_ff() was called was ever freed ("ever" includes "before save_ff() was
-** called").
-*/
-
-void heap_dump_free(heap_t *h);
-/* Dumps debugging information about the stack
-** Parameters: (heap_t *) h: The heap to check
-** Returns : (void)
-*/
-
-void heap_dump_all(heap_t *h);
-/* Dumps all allocated/unallocated zones on the heap
-** Parameters: (heap_t *) h: The heap to check
-** Returns : (void)
-*/
-
-} // End of namespace Sci
-
-#endif // SCI_ENGINE_HEAP_H
diff --git a/engines/sci/engine/heapmgr.h b/engines/sci/engine/heapmgr.h
index 70e963ce80..f907e75afc 100644
--- a/engines/sci/engine/heapmgr.h
+++ b/engines/sci/engine/heapmgr.h
@@ -40,37 +40,37 @@ namespace Sci {
#define ENTRY_IS_VALID(t, i) ((i == 0 || i > 0) && (i) < (t)->max_entry && (t)->table[(i)].next_free == (i))
#define DECLARE_HEAPENTRY(ENTRY) \
-typedef struct { \
+struct ENTRY##Entry { \
int next_free; /* Only used for free entries */ \
- ENTRY##_t entry; \
-} ENTRY##_entry_t; \
+ ENTRY entry; \
+}; \
\
-typedef struct { \
+struct ENTRY##Table { \
int entries_nr; /* Number of entries allocated */ \
int first_free; /* Beginning of a singly linked list for entries */ \
int entries_used; /* Statistical information */ \
int max_entry; /* Highest entry used */ \
- ENTRY##_entry_t *table; \
-} ENTRY##_table_t; \
+ ENTRY##Entry *table; \
+}; \
\
-void init_##ENTRY##_table(ENTRY##_table_t *table); \
-int alloc_##ENTRY##_entry(ENTRY##_table_t *table); \
-void free_##ENTRY##_entry(ENTRY##_table_t *table, int index);
+void init_##ENTRY##_table(ENTRY##Table *table); \
+int alloc_##ENTRY##_entry(ENTRY##Table *table); \
+void free_##ENTRY##_entry(ENTRY##Table *table, int index);
#define DEFINE_HEAPENTRY_WITH_CLEANUP(ENTRY, INITIAL, INCREMENT, CLEANUP_FN) \
-void init_##ENTRY##_table(ENTRY##_table_t *table) { \
+void init_##ENTRY##_table(ENTRY##Table *table) { \
table->entries_nr = INITIAL; \
table->max_entry = 0; \
table->entries_used = 0; \
table->first_free = HEAPENTRY_INVALID; \
- table->table = (ENTRY##_entry_t *)sci_malloc(sizeof(ENTRY##_entry_t) * INITIAL);\
- memset(table->table, 0, sizeof(ENTRY##_entry_t) * INITIAL); \
+ table->table = (ENTRY##Entry *)sci_malloc(sizeof(ENTRY##Entry) * INITIAL);\
+ memset(table->table, 0, sizeof(ENTRY##Entry) * INITIAL); \
} \
\
-void free_##ENTRY##_entry(ENTRY##_table_t *table, int index) { \
- ENTRY##_entry_t *e = table->table + index; \
+void free_##ENTRY##_entry(ENTRY##Table *table, int index) { \
+ ENTRY##Entry *e = table->table + index; \
\
if (index < 0 || index >= table->max_entry) { \
fprintf(stderr, "heapmgr: Attempt to release" \
@@ -84,7 +84,7 @@ void free_##ENTRY##_entry(ENTRY##_table_t *table, int index) { \
table->entries_used--; \
} \
\
-int alloc_##ENTRY##_entry(ENTRY##_table_t *table) { \
+int alloc_##ENTRY##_entry(ENTRY##Table *table) { \
table->entries_used++; \
if (table->first_free != HEAPENTRY_INVALID) { \
int oldff = table->first_free; \
@@ -96,11 +96,11 @@ int alloc_##ENTRY##_entry(ENTRY##_table_t *table) { \
if (table->max_entry == table->entries_nr) { \
table->entries_nr += INCREMENT; \
\
- table->table = (ENTRY##_entry_t*)sci_realloc(table->table,\
- sizeof(ENTRY##_entry_t) * table->entries_nr); \
- memset(&table->table[table->entries_nr-INCREMENT], 0, INCREMENT*sizeof(ENTRY##_entry_t)); \
+ table->table = (ENTRY##Entry *)sci_realloc(table->table,\
+ sizeof(ENTRY##Entry) * table->entries_nr);\
+ memset(&table->table[table->entries_nr-INCREMENT], 0, INCREMENT * sizeof(ENTRY##Entry));\
} \
- table->table[table->max_entry].next_free = table->max_entry; /* Tag as 'valid' */ \
+ table->table[table->max_entry].next_free = table->max_entry; /* Tag as 'valid' */\
return table->max_entry++; \
} \
}
diff --git a/engines/sci/engine/kernel.cpp b/engines/sci/engine/kernel.cpp
index 4d66d07ba7..0d70be21a4 100644
--- a/engines/sci/engine/kernel.cpp
+++ b/engines/sci/engine/kernel.cpp
@@ -191,7 +191,7 @@ static int sci_max_allowed_unknown_kernel_functions[] = {
#define DEFUN(nm, cname, sig) {KF_NEW, nm, {cname, sig, NULL}}
#define NOFUN(nm) {KF_NONE, nm, {NULL, NULL, NULL}}
-sci_kernel_function_t kfunct_mappers[] = {
+SciKernelFunction kfunct_mappers[] = {
/*00*/ DEFUN("Load", kLoad, "iii*"),
/*01*/ DEFUN("UnLoad", kUnLoad, "i.*"),
/*02*/ DEFUN("ScriptID", kScriptID, "Ioi*"),
@@ -379,8 +379,8 @@ int has_kernel_function(EngineState *s, const char *kname) {
// Returns a pointer to the memory indicated by the specified handle
byte *kmem(EngineState *s, reg_t handle) {
- mem_obj_t *mobj = GET_SEGMENT(*s->seg_manager, handle.segment, MEM_OBJ_HUNK);
- hunk_table_t *ht = &(mobj->data.hunks);
+ MemObject *mobj = GET_SEGMENT(*s->seg_manager, handle.segment, MEM_OBJ_HUNK);
+ HunkTable *ht = &(mobj->data.hunks);
if (!mobj || !ENTRY_IS_VALID(ht, handle.offset)) {
SCIkwarn(SCIkERROR, "Error: kmem() with invalid handle\n");
@@ -808,7 +808,7 @@ void free_kfunct_tables(EngineState *s) {
}
int determine_reg_type(EngineState *s, reg_t reg, int allow_invalid) {
- mem_obj_t *mobj;
+ MemObject *mobj;
if (!reg.segment) {
if (!reg.offset)
diff --git a/engines/sci/engine/kernel.h b/engines/sci/engine/kernel.h
index a9f21dfa18..8e7c8b7b8e 100644
--- a/engines/sci/engine/kernel.h
+++ b/engines/sci/engine/kernel.h
@@ -35,8 +35,8 @@
namespace Sci {
-struct node_t; // from vm.h
-struct list_t; // from vm.h
+struct Node; // from vm.h
+struct List; // from vm.h
extern int _kdebug_cheap_event_hack;
extern int _kdebug_cheap_soundcue_hack;
@@ -86,10 +86,10 @@ struct abs_rect_t {
*/
-reg_t read_selector(EngineState *s, reg_t object, selector_t selector_id, const char *fname, int line);
-void write_selector(EngineState *s, reg_t object, selector_t selector_id, reg_t value, const char *fname, int line);
+reg_t read_selector(EngineState *s, reg_t object, Selector selector_id, const char *fname, int line);
+void write_selector(EngineState *s, reg_t object, Selector selector_id, reg_t value, const char *fname, int line);
int invoke_selector(EngineState *s, reg_t object, int selector_id, int noinvalid, int kfunct,
- stack_ptr_t k_argp, int k_argc, const char *fname, int line, int argc, ...);
+ StackPtr k_argp, int k_argc, const char *fname, int line, int argc, ...);
/******************** Text functionality ********************/
@@ -132,7 +132,7 @@ bool is_object(EngineState *s, reg_t obj);
/* Checks whether a heap address contains an object
** Parameters: (EngineState *) s: The current state
** (reg_t) obj: The address to check
-** Returns : (int) 1 if it is an object, 0 otherwise
+** Returns : (bool) true if it is an object, false otherwise
*/
/******************** Kernel function parameter macros ********************/
@@ -243,23 +243,23 @@ void process_sound_events(EngineState *s); /* Get all sound events, apply their
#define LOOKUP_NODE(addr) lookup_node(s, (addr), __FILE__, __LINE__)
#define LOOKUP_LIST(addr) lookup_list(s, addr, __FILE__, __LINE__)
-node_t *lookup_node(EngineState *s, reg_t addr, const char *file, int line);
+Node *lookup_node(EngineState *s, reg_t addr, const char *file, int line);
/* Resolves an address into a list node
** Parameters: (EngineState *) s: The state to operate on
** (reg_t) addr: The address to resolve
** (const char *) file: The file the function was called from
** (int) line: The line number the function was called from
-** Returns : (node_t *) The list node referenced, or NULL on error
+** Returns : (Node *) The list node referenced, or NULL on error
*/
-list_t *lookup_list(EngineState *s, reg_t addr, const char *file, int line);
+List *lookup_list(EngineState *s, reg_t addr, const char *file, int line);
/* Resolves a list pointer to a list
** Parameters: (EngineState *) s: The state to operate on
** (reg_t) addr: The address to resolve
** (const char *) file: The file the function was called from
** (int) line: The line number the function was called from
-** Returns : (list_t *) The list referenced, or NULL on error
+** Returns : (List *) The list referenced, or NULL on error
*/
@@ -320,13 +320,13 @@ struct kfunct_sig_pair_t {
#define KF_NONE -1 /* No mapping, but name is known */
#define KF_TERMINATOR -42 /* terminates kfunct_mappers */
-struct sci_kernel_function_t {
+struct SciKernelFunction {
int type; /* KF_* */
const char *name;
kfunct_sig_pair_t sig_pair;
};
-extern sci_kernel_function_t kfunct_mappers[];
+extern SciKernelFunction kfunct_mappers[];
} // End of namespace Sci
diff --git a/engines/sci/engine/kgraphics.cpp b/engines/sci/engine/kgraphics.cpp
index 4869cddc48..b90153e98d 100644
--- a/engines/sci/engine/kgraphics.cpp
+++ b/engines/sci/engine/kgraphics.cpp
@@ -445,7 +445,7 @@ void _k_redraw_box(EngineState *s, int x1, int y1, int x2, int y2) {
sciprintf("_k_redraw_box(): Unimplemented!\n");
#if 0
int i;
- view_object_t *list = s->dyn_views;
+ ViewObject *list = s->dyn_views;
sciprintf("Reanimating views\n", s->dyn_views_nr);
@@ -777,7 +777,7 @@ static int collides_with(EngineState *s, abs_rect_t area, reg_t other_obj, int u
reg_t kCanBeHere(EngineState *s, int funct_nr, int argc, reg_t * argv) {
reg_t obj = argv[0];
reg_t cliplist_ref = KP_ALT(1, NULL_REG);
- list_t *cliplist = NULL;
+ List *cliplist = NULL;
gfxw_port_t *port = s->picture_port;
uint16 signal;
int retval;
@@ -838,7 +838,7 @@ reg_t kCanBeHere(EngineState *s, int funct_nr, int argc, reg_t * argv) {
cliplist = LOOKUP_LIST(cliplist_ref);
if (cliplist) {
- node_t *node = LOOKUP_NODE(cliplist->first);
+ Node *node = LOOKUP_NODE(cliplist->first);
retval = 0; // Assume that we Can'tBeHere...
@@ -984,7 +984,7 @@ reg_t kOnControl(EngineState *s, int funct_nr, int argc, reg_t *argv) {
return make_reg(0, gfxop_scan_bitmask(s->gfx_state, gfx_rect(xstart, ystart + 10, xlen, ylen), map));
}
-void _k_view_list_free_backgrounds(EngineState *s, view_object_t *list, int list_nr);
+void _k_view_list_free_backgrounds(EngineState *s, ViewObject *list, int list_nr);
int sci01_priority_table_flags = 0;
@@ -1149,7 +1149,7 @@ abs_rect_t set_base(EngineState *s, reg_t object) {
void _k_base_setter(EngineState *s, reg_t object) {
abs_rect_t absrect = set_base(s, object);
- if (lookup_selector(s, object, s->selector_map.brLeft, NULL, NULL) != SELECTOR_VARIABLE)
+ if (lookup_selector(s, object, s->selector_map.brLeft, NULL, NULL) != kSelectorVariable)
return; // non-fatal
if (s->version <= SCI_VERSION_LTU_BASE_OB1)
@@ -1248,7 +1248,7 @@ abs_rect_t get_nsrect(EngineState *s, reg_t object, byte clip) {
static void _k_set_now_seen(EngineState *s, reg_t object) {
abs_rect_t absrect = get_nsrect(s, object, 0);
- if (lookup_selector(s, object, s->selector_map.nsTop, NULL, NULL) != SELECTOR_VARIABLE) {
+ if (lookup_selector(s, object, s->selector_map.nsTop, NULL, NULL) != kSelectorVariable) {
return;
} // This isn't fatal
@@ -1703,7 +1703,7 @@ static void _k_view_list_do_postdraw(EngineState *s, gfxw_list_t *list) {
* if ((widget->signal & (_K_VIEW_SIG_FLAG_FREESCI_PRIVATE | _K_VIEW_SIG_FLAG_REMOVE | _K_VIEW_SIG_FLAG_NO_UPDATE)) == _K_VIEW_SIG_FLAG_FREESCI_PRIVATE) {
*/
if ((widget->signal & (_K_VIEW_SIG_FLAG_REMOVE | _K_VIEW_SIG_FLAG_NO_UPDATE)) == 0) {
- int has_nsrect = lookup_selector(s, obj, s->selector_map.nsBottom, NULL, NULL) == SELECTOR_VARIABLE;
+ int has_nsrect = lookup_selector(s, obj, s->selector_map.nsBottom, NULL, NULL) == kSelectorVariable;
if (has_nsrect) {
int temp;
@@ -1761,7 +1761,7 @@ void _k_view_list_mark_free(EngineState *s, reg_t off) {
static int _k_animate_ran = 0;
-int _k_view_list_dispose_loop(EngineState *s, list_t *list, gfxw_dyn_view_t *widget, int funct_nr, int argc, reg_t *argv) {
+int _k_view_list_dispose_loop(EngineState *s, List *list, gfxw_dyn_view_t *widget, int funct_nr, int argc, reg_t *argv) {
// disposes all list members flagged for disposal; funct_nr is the invoking kfunction
// returns non-zero IFF views were dropped
int signal;
@@ -1899,14 +1899,14 @@ static gfxw_dyn_view_t *_k_make_dynview_obj(EngineState *s, reg_t obj, int optio
PUT_SEL32V(obj, cel, cel);
}
- if (lookup_selector(s, obj, s->selector_map.underBits, &(under_bitsp), NULL) != SELECTOR_VARIABLE) {
+ if (lookup_selector(s, obj, s->selector_map.underBits, &(under_bitsp), NULL) != kSelectorVariable) {
under_bitsp = NULL;
under_bits = NULL_REG;
SCIkdebug(SCIkGRAPHICS, "Object at "PREG" has no underBits\n", PRINT_REG(obj));
} else
under_bits = *((reg_t *)under_bitsp);
- if (lookup_selector(s, obj, s->selector_map.signal, &(signalp), NULL) != SELECTOR_VARIABLE) {
+ if (lookup_selector(s, obj, s->selector_map.signal, &(signalp), NULL) != kSelectorVariable) {
signalp = NULL;
signal = 0;
SCIkdebug(SCIkGRAPHICS, "Object at "PREG" has no signal selector\n", PRINT_REG(obj));
@@ -1929,12 +1929,12 @@ static gfxw_dyn_view_t *_k_make_dynview_obj(EngineState *s, reg_t obj, int optio
}
}
-static void _k_make_view_list(EngineState *s, gfxw_list_t **widget_list, list_t *list, int options, int funct_nr, int argc, reg_t *argv) {
+static void _k_make_view_list(EngineState *s, gfxw_list_t **widget_list, List *list, int options, int funct_nr, int argc, reg_t *argv) {
/* Creates a view_list from a node list in heap space. Returns the list, stores the
** number of list entries in *list_nr. Calls doit for each entry if cycle is set.
** argc, argv, funct_nr should be the same as in the calling kernel function.
*/
- node_t *node;
+ Node *node;
int sequence_nr = 0;
gfxw_dyn_view_t *widget;
@@ -1995,7 +1995,7 @@ static void _k_prepare_view_list(EngineState *s, gfxw_list_t *list, int options)
while (view) {
reg_t obj = make_reg(view->ID, view->subID);
int priority, _priority;
- int has_nsrect = (view->ID <= 0) ? 0 : lookup_selector(s, obj, s->selector_map.nsBottom, NULL, NULL) == SELECTOR_VARIABLE;
+ int has_nsrect = (view->ID <= 0) ? 0 : lookup_selector(s, obj, s->selector_map.nsBottom, NULL, NULL) == kSelectorVariable;
int oldsignal = view->signal;
_k_set_now_seen(s, obj);
@@ -2276,7 +2276,7 @@ reg_t kAddToPic(EngineState *s, int funct_nr, int argc, reg_t *argv) {
ADD_TO_CURRENT_PICTURE_PORT(gfxw_picviewize_dynview((gfxw_dyn_view_t *) widget));
}
} else {
- list_t *list;
+ List *list;
if (!list_ref.segment) {
warning("Attempt to AddToPic single non-list: "PREG"", PRINT_REG(list_ref));
@@ -2923,7 +2923,7 @@ reg_t kAnimate(EngineState *s, int funct_nr, int argc, reg_t *argv) {
// Animations are supposed to take a maximum of s->animation_delay milliseconds.
reg_t cast_list_ref = KP_ALT(0, NULL_REG);
int cycle = (KP_ALT(1, NULL_REG)).offset;
- list_t *cast_list = NULL;
+ List *cast_list = NULL;
int open_animation = 0;
process_sound_events(s); // Take care of incoming events (kAnimate is called semi-regularly)
diff --git a/engines/sci/engine/klists.cpp b/engines/sci/engine/klists.cpp
index 563099d609..ecfd64a88d 100644
--- a/engines/sci/engine/klists.cpp
+++ b/engines/sci/engine/klists.cpp
@@ -33,9 +33,9 @@ namespace Sci {
# define LOOKUP_NODE(addr) inline_lookup_node(s, (addr), __FILE__, __LINE__)
#endif
-inline node_t *inline_lookup_node(EngineState *s, reg_t addr, const char *file, int line) {
- mem_obj_t *mobj;
- node_table_t *nt;
+inline Node *inline_lookup_node(EngineState *s, reg_t addr, const char *file, int line) {
+ MemObject *mobj;
+ NodeTable *nt;
if (!addr.offset && !addr.segment)
return NULL; // Non-error null
@@ -58,15 +58,15 @@ inline node_t *inline_lookup_node(EngineState *s, reg_t addr, const char *file,
return &(nt->table[addr.offset].entry);
}
-node_t *lookup_node(EngineState *s, reg_t addr, const char *file, int line) {
+Node *lookup_node(EngineState *s, reg_t addr, const char *file, int line) {
return inline_lookup_node(s, addr, file, line);
}
#define LOOKUP_NULL_LIST(addr) _lookup_list(s, addr, __FILE__, __LINE__, 1)
-inline list_t *_lookup_list(EngineState *s, reg_t addr, const char *file, int line, int may_be_null) {
- mem_obj_t *mobj;
- list_table_t *lt;
+inline List *_lookup_list(EngineState *s, reg_t addr, const char *file, int line, int may_be_null) {
+ MemObject *mobj;
+ ListTable *lt;
if (may_be_null && !addr.segment && !addr.offset)
return NULL;
@@ -90,7 +90,7 @@ inline list_t *_lookup_list(EngineState *s, reg_t addr, const char *file, int li
return &(lt->table[addr.offset].entry);
}
-list_t *lookup_list(EngineState *s, reg_t addr, const char *file, int line) {
+List *lookup_list(EngineState *s, reg_t addr, const char *file, int line) {
return _lookup_list(s, addr, file, line, 0);
}
@@ -106,7 +106,7 @@ static inline int sane_nodep(EngineState *s, reg_t addr) {
reg_t prev = addr;
do {
- node_t *node = LOOKUP_NODE(addr);
+ Node *node = LOOKUP_NODE(addr);
if (!node)
return 0;
@@ -123,7 +123,7 @@ static inline int sane_nodep(EngineState *s, reg_t addr) {
}
int sane_listp(EngineState *s, reg_t addr) {
- list_t *l = LOOKUP_LIST(addr);
+ List *l = LOOKUP_LIST(addr);
int empties = 0;
if (IS_NULL_REG(l->first))
@@ -136,7 +136,7 @@ int sane_listp(EngineState *s, reg_t addr) {
return 0;
if (!empties) {
- node_t *node_a, *node_z;
+ Node *node_a, *node_z;
node_a = LOOKUP_NODE(l->first);
node_z = LOOKUP_NODE(l->last);
@@ -159,8 +159,8 @@ int sane_listp(EngineState *s, reg_t addr) {
reg_t kNewList(EngineState *s, int funct_nr, int argc, reg_t *argv) {
reg_t listbase;
- list_t *l;
- l = s->seg_manager->alloc_list(&listbase);
+ List *l;
+ l = s->seg_manager->alloc_List(&listbase);
l->first = l->last = NULL_REG;
SCIkdebug(SCIkNODES, "New listbase at "PREG"\n", PRINT_REG(listbase));
@@ -168,7 +168,7 @@ reg_t kNewList(EngineState *s, int funct_nr, int argc, reg_t *argv) {
}
reg_t kDisposeList(EngineState *s, int funct_nr, int argc, reg_t *argv) {
- list_t *l = LOOKUP_LIST(argv[0]);
+ List *l = LOOKUP_LIST(argv[0]);
if (!l) {
SCIkwarn(SCIkERROR, "Attempt to dispose non-list at "PREG"!\n", PRINT_REG(argv[0]));
@@ -182,8 +182,8 @@ reg_t kDisposeList(EngineState *s, int funct_nr, int argc, reg_t *argv) {
reg_t n_addr = l->first;
while (!IS_NULL_REG(n_addr)) { // Free all nodes
- node_t *n = LOOKUP_NODE(n_addr);
- s->seg_manager->free_node(n_addr);
+ Node *n = LOOKUP_NODE(n_addr);
+ s->seg_manager->free_Node(n_addr);
n_addr = n->succ;
}
}
@@ -195,7 +195,7 @@ reg_t kDisposeList(EngineState *s, int funct_nr, int argc, reg_t *argv) {
inline reg_t _k_new_node(EngineState *s, reg_t value, reg_t key) {
reg_t nodebase;
- node_t *n = s->seg_manager->alloc_node(&nodebase);
+ Node *n = s->seg_manager->alloc_Node(&nodebase);
if (!n) {
KERNEL_OOPS("Out of memory while creating a node");
@@ -218,7 +218,7 @@ reg_t kNewNode(EngineState *s, int funct_nr, int argc, reg_t *argv) {
}
reg_t kFirstNode(EngineState *s, int funct_nr, int argc, reg_t *argv) {
- list_t *l = LOOKUP_NULL_LIST(argv[0]);
+ List *l = LOOKUP_NULL_LIST(argv[0]);
if (l && !sane_listp(s, argv[0]))
SCIkwarn(SCIkERROR, "List at "PREG" is not sane anymore!\n", PRINT_REG(argv[0]));
@@ -230,7 +230,7 @@ reg_t kFirstNode(EngineState *s, int funct_nr, int argc, reg_t *argv) {
}
reg_t kLastNode(EngineState *s, int funct_nr, int argc, reg_t *argv) {
- list_t *l = LOOKUP_LIST(argv[0]);
+ List *l = LOOKUP_LIST(argv[0]);
if (l && !sane_listp(s, argv[0]))
SCIkwarn(SCIkERROR, "List at "PREG" is not sane anymore!\n", PRINT_REG(argv[0]));
@@ -242,7 +242,7 @@ reg_t kLastNode(EngineState *s, int funct_nr, int argc, reg_t *argv) {
}
reg_t kEmptyList(EngineState *s, int funct_nr, int argc, reg_t *argv) {
- list_t *l = LOOKUP_LIST(argv[0]);
+ List *l = LOOKUP_LIST(argv[0]);
if (!l || !sane_listp(s, argv[0]))
SCIkwarn(SCIkERROR, "List at "PREG" is invalid or not sane anymore!\n", PRINT_REG(argv[0]));
@@ -251,8 +251,8 @@ reg_t kEmptyList(EngineState *s, int funct_nr, int argc, reg_t *argv) {
}
inline void _k_add_to_front(EngineState *s, reg_t listbase, reg_t nodebase) {
- list_t *l = LOOKUP_LIST(listbase);
- node_t *new_n = LOOKUP_NODE(nodebase);
+ List *l = LOOKUP_LIST(listbase);
+ Node *new_n = LOOKUP_NODE(nodebase);
SCIkdebug(SCIkNODES, "Adding node "PREG" to end of list "PREG"\n", PRINT_REG(nodebase), PRINT_REG(listbase));
@@ -267,15 +267,15 @@ inline void _k_add_to_front(EngineState *s, reg_t listbase, reg_t nodebase) {
if (IS_NULL_REG(l->first))
l->last = nodebase;
else {
- node_t *old_n = LOOKUP_NODE(l->first);
+ Node *old_n = LOOKUP_NODE(l->first);
old_n->pred = nodebase;
}
l->first = nodebase;
}
inline void _k_add_to_end(EngineState *s, reg_t listbase, reg_t nodebase) {
- list_t *l = LOOKUP_LIST(listbase);
- node_t *new_n = LOOKUP_NODE(nodebase);
+ List *l = LOOKUP_LIST(listbase);
+ Node *new_n = LOOKUP_NODE(nodebase);
SCIkdebug(SCIkNODES, "Adding node "PREG" to end of list "PREG"\n", PRINT_REG(nodebase), PRINT_REG(listbase));
@@ -290,14 +290,14 @@ inline void _k_add_to_end(EngineState *s, reg_t listbase, reg_t nodebase) {
if (IS_NULL_REG(l->last))
l->first = nodebase;
else {
- node_t *old_n = LOOKUP_NODE(l->last);
+ Node *old_n = LOOKUP_NODE(l->last);
old_n->succ = nodebase;
}
l->last = nodebase;
}
reg_t kNextNode(EngineState *s, int funct_nr, int argc, reg_t *argv) {
- node_t *n = LOOKUP_NODE(argv[0]);
+ Node *n = LOOKUP_NODE(argv[0]);
if (!sane_nodep(s, argv[0])) {
SCIkwarn(SCIkERROR, "List node at "PREG" is not sane anymore!\n", PRINT_REG(argv[0]));
script_error_flag = script_debug_flag = 0;
@@ -308,7 +308,7 @@ reg_t kNextNode(EngineState *s, int funct_nr, int argc, reg_t *argv) {
}
reg_t kPrevNode(EngineState *s, int funct_nr, int argc, reg_t *argv) {
- node_t *n = LOOKUP_NODE(argv[0]);
+ Node *n = LOOKUP_NODE(argv[0]);
if (!sane_nodep(s, argv[0]))
SCIkwarn(SCIkERROR, "List node at "PREG" is not sane anymore!\n", PRINT_REG(argv[0]));
@@ -316,7 +316,7 @@ reg_t kPrevNode(EngineState *s, int funct_nr, int argc, reg_t *argv) {
}
reg_t kNodeValue(EngineState *s, int funct_nr, int argc, reg_t *argv) {
- node_t *n = LOOKUP_NODE(argv[0]);
+ Node *n = LOOKUP_NODE(argv[0]);
if (!sane_nodep(s, argv[0])) {
SCIkwarn(SCIkERROR, "List node at "PREG" is not sane!\n", PRINT_REG(argv[0]));
script_debug_flag = script_error_flag = 0;
@@ -332,9 +332,9 @@ reg_t kAddToFront(EngineState *s, int funct_nr, int argc, reg_t *argv) {
}
reg_t kAddAfter(EngineState *s, int funct_nr, int argc, reg_t *argv) {
- list_t *l = LOOKUP_LIST(argv[0]);
- node_t *firstnode = IS_NULL_REG(argv[1]) ? NULL : LOOKUP_NODE(argv[1]);
- node_t *newnode = LOOKUP_NODE(argv[2]);
+ List *l = LOOKUP_LIST(argv[0]);
+ Node *firstnode = IS_NULL_REG(argv[1]) ? NULL : LOOKUP_NODE(argv[1]);
+ Node *newnode = LOOKUP_NODE(argv[2]);
if (!l || !sane_listp(s, argv[0]))
SCIkwarn(SCIkERROR, "List at "PREG" is not sane anymore!\n", PRINT_REG(argv[0]));
@@ -390,7 +390,7 @@ reg_t kFindKey(EngineState *s, int funct_nr, int argc, reg_t *argv) {
SCIkdebug(SCIkNODES, "First node at "PREG"\n", PRINT_REG(node_pos));
while (!IS_NULL_REG(node_pos)) {
- node_t *n = LOOKUP_NODE(node_pos);
+ Node *n = LOOKUP_NODE(node_pos);
if (REG_EQ(n->key, key)) {
SCIkdebug(SCIkNODES, " Found key at "PREG"\n", PRINT_REG(node_pos));
return node_pos;
@@ -406,8 +406,8 @@ reg_t kFindKey(EngineState *s, int funct_nr, int argc, reg_t *argv) {
reg_t kDeleteKey(EngineState *s, int funct_nr, int argc, reg_t *argv) {
reg_t node_pos = kFindKey(s, funct_nr, 2, argv);
- node_t *n;
- list_t *l = LOOKUP_LIST(argv[0]);
+ Node *n;
+ List *l = LOOKUP_LIST(argv[0]);
if (IS_NULL_REG(node_pos))
return NULL_REG; // Signal falure
@@ -423,7 +423,7 @@ reg_t kDeleteKey(EngineState *s, int funct_nr, int argc, reg_t *argv) {
if (!IS_NULL_REG(n->succ))
LOOKUP_NODE(n->succ)->pred = n->pred;
- //s->seg_manager->free_node(node_pos);
+ //s->seg_manager->free_Node(node_pos);
return make_reg(0, 1); // Signal success
}
@@ -459,14 +459,14 @@ reg_t kSort(EngineState *s, int funct_nr, int argc, reg_t *argv) {
reg_t input_data = GET_SEL32(source, elements);
reg_t output_data = GET_SEL32(dest, elements);
- list_t *list;
- node_t *node;
+ List *list;
+ Node *node;
if (!input_size)
return s->r_acc;
if (IS_NULL_REG(output_data)) {
- list = s->seg_manager->alloc_list(&output_data);
+ list = s->seg_manager->alloc_List(&output_data);
list->first = list->last = NULL_REG;
PUT_SEL32(dest, elements, output_data);
}
diff --git a/engines/sci/engine/kmovement.cpp b/engines/sci/engine/kmovement.cpp
index 54f7bf14b2..1af9f779ba 100644
--- a/engines/sci/engine/kmovement.cpp
+++ b/engines/sci/engine/kmovement.cpp
@@ -255,7 +255,7 @@ static void bresenham_autodetect(EngineState *s) {
reg_t motion_class;
if (!parse_reg_t(s, "?Motion", &motion_class)) {
- object_t *obj = obj_get(s, motion_class);
+ Object *obj = obj_get(s, motion_class);
reg_t fptr;
byte *buf;
@@ -265,7 +265,7 @@ static void bresenham_autodetect(EngineState *s) {
return;
}
- if (lookup_selector(s, motion_class, s->selector_map.doit, NULL, &fptr) != SELECTOR_METHOD) {
+ if (lookup_selector(s, motion_class, s->selector_map.doit, NULL, &fptr) != kSelectorMethod) {
warning("bresenham_autodetect failed");
handle_movecnt = INCREMENT_MOVECNT; // Most games do this, so best guess
return;
diff --git a/engines/sci/engine/kpathing.cpp b/engines/sci/engine/kpathing.cpp
index 231200f5c2..95b65babb7 100644
--- a/engines/sci/engine/kpathing.cpp
+++ b/engines/sci/engine/kpathing.cpp
@@ -351,8 +351,8 @@ static void draw_polygon(EngineState *s, reg_t polygon) {
}
static void draw_input(EngineState *s, reg_t poly_list, Common::Point start, Common::Point end, int opt) {
- list_t *list;
- node_t *node;
+ List *list;
+ Node *node;
draw_point(s, start, 1);
draw_point(s, end, 0);
@@ -396,8 +396,8 @@ static void print_polygon(EngineState *s, reg_t polygon) {
}
static void print_input(EngineState *s, reg_t poly_list, Common::Point start, Common::Point end, int opt) {
- list_t *list;
- node_t *node;
+ List *list;
+ Node *node;
sciprintf("Start point: (%i, %i)\n", start.x, start.y);
sciprintf("End point: (%i, %i)\n", end.x, end.y);
@@ -1224,8 +1224,8 @@ static PathfindingState *convert_polygon_set(EngineState *s, reg_t poly_list, Co
// Convert all polygons
if (poly_list.segment) {
- list_t *list = LOOKUP_LIST(poly_list);
- node_t *node = LOOKUP_NODE(list->first);
+ List *list = LOOKUP_LIST(poly_list);
+ Node *node = LOOKUP_NODE(list->first);
while (node) {
polygon = convert_polygon(s, node->value);
diff --git a/engines/sci/engine/kscripts.cpp b/engines/sci/engine/kscripts.cpp
index d2f7256c79..805a979701 100644
--- a/engines/sci/engine/kscripts.cpp
+++ b/engines/sci/engine/kscripts.cpp
@@ -30,16 +30,16 @@
namespace Sci {
-reg_t read_selector(EngineState *s, reg_t object, selector_t selector_id, const char *file, int line) {
+reg_t read_selector(EngineState *s, reg_t object, Selector selector_id, const char *file, int line) {
reg_t *address;
- if (lookup_selector(s, object, selector_id, &address, NULL) != SELECTOR_VARIABLE)
+ if (lookup_selector(s, object, selector_id, &address, NULL) != kSelectorVariable)
return NULL_REG;
else
return *address;
}
-void write_selector(EngineState *s, reg_t object, selector_t selector_id, reg_t value, const char *fname, int line) {
+void write_selector(EngineState *s, reg_t object, Selector selector_id, reg_t value, const char *fname, int line) {
reg_t *address;
if ((selector_id < 0) || (selector_id > (int)s->_selectorNames.size())) {
@@ -48,7 +48,7 @@ void write_selector(EngineState *s, reg_t object, selector_t selector_id, reg_t
return;
}
- if (lookup_selector(s, object, selector_id, &address, NULL) != SELECTOR_VARIABLE)
+ if (lookup_selector(s, object, selector_id, &address, NULL) != kSelectorVariable)
warning("Selector '%s' of object at "PREG" could not be"
" written to (%s L%d)", s->_selectorNames[selector_id].c_str(), PRINT_REG(object), fname, line);
else
@@ -56,29 +56,30 @@ void write_selector(EngineState *s, reg_t object, selector_t selector_id, reg_t
}
int invoke_selector(EngineState *s, reg_t object, int selector_id, int noinvalid, int kfunct,
- stack_ptr_t k_argp, int k_argc, const char *fname, int line, int argc, ...) {
+ StackPtr k_argp, int k_argc, const char *fname, int line, int argc, ...) {
va_list argp;
int i;
int framesize = 2 + 1 * argc;
reg_t address;
int slc_type;
- stack_ptr_t stackframe = k_argp + k_argc;
+ StackPtr stackframe = k_argp + k_argc;
- exec_stack_t *xstack; // Execution stack
+ // Execution stack
+ ExecStack *xstack;
stackframe[0] = make_reg(0, selector_id); // The selector we want to call
stackframe[1] = make_reg(0, argc); // Argument count
slc_type = lookup_selector(s, object, selector_id, NULL, &address);
- if (slc_type == SELECTOR_NONE) {
+ if (slc_type == kSelectorNone) {
SCIkwarn(SCIkERROR, "Selector '%s' of object at "PREG" could not be invoked (%s L%d)\n",
s->_selectorNames[selector_id].c_str(), PRINT_REG(object), fname, line);
if (noinvalid == 0)
KERNEL_OOPS("Not recoverable: VM was halted\n");
return 1;
}
- if (slc_type == SELECTOR_VARIABLE) // Swallow silently
+ if (slc_type == kSelectorVariable) // Swallow silently
return 0;
va_start(argp, argc);
@@ -155,9 +156,9 @@ reg_t kUnLoad(EngineState *s, int funct_nr, int argc, reg_t *argv) {
reg_t kClone(EngineState *s, int funct_nr, int argc, reg_t *argv) {
reg_t parent_addr = argv[0];
- object_t *parent_obj = obj_get(s, parent_addr);
+ Object *parent_obj = obj_get(s, parent_addr);
reg_t clone_addr;
- clone_t *clone_obj; // same as object_t*
+ Clone *clone_obj; // same as Object*
int varblock_size;
if (!parent_obj) {
@@ -167,14 +168,14 @@ reg_t kClone(EngineState *s, int funct_nr, int argc, reg_t *argv) {
SCIkdebug(SCIkMEM, "Attempting to clone from "PREG"\n", PRINT_REG(parent_addr));
- clone_obj = s->seg_manager->alloc_clone(&clone_addr);
+ clone_obj = s->seg_manager->alloc_Clone(&clone_addr);
if (!clone_obj) {
SCIkwarn(SCIkERROR, "Cloning "PREG" failed-- internal error!\n", PRINT_REG(parent_addr));
return NULL_REG;
}
- memcpy(clone_obj, parent_obj, sizeof(clone_t));
+ memcpy(clone_obj, parent_obj, sizeof(Clone));
clone_obj->flags = 0;
varblock_size = parent_obj->variables_nr * sizeof(reg_t);
clone_obj->variables = (reg_t*)sci_malloc(varblock_size);
@@ -195,7 +196,7 @@ extern void _k_view_list_mark_free(EngineState *s, reg_t off);
reg_t kDisposeClone(EngineState *s, int funct_nr, int argc, reg_t *argv) {
reg_t victim_addr = argv[0];
- clone_t *victim_obj = obj_get(s, victim_addr);
+ Clone *victim_obj = obj_get(s, victim_addr);
uint16 underBits;
if (!victim_obj) {
@@ -235,8 +236,8 @@ reg_t kScriptID(EngineState *s, int funct_nr, int argc, reg_t *argv) {
int script = KP_UINT(argv[0]);
int index = KP_UINT(KP_ALT(1, NULL_REG));
- seg_id_t scriptid = script_get_segment(s, script, SCRIPT_GET_LOAD);
- script_t *scr;
+ SegmentId scriptid = script_get_segment(s, script, SCRIPT_GET_LOAD);
+ Script *scr;
if (argv[0].segment)
return argv[0];
@@ -279,7 +280,7 @@ reg_t kDisposeScript(EngineState *s, int funct_nr, int argc, reg_t *argv) {
}
int is_heap_object(EngineState *s, reg_t pos) {
- object_t *obj = obj_get(s, pos);
+ Object *obj = obj_get(s, pos);
return (obj != NULL && (!(obj->flags & OBJECT_FLAG_FREED)) && (!s->seg_manager->scriptIsMarkedAsDeleted(pos.segment)));
}
@@ -294,7 +295,7 @@ reg_t kRespondsTo(EngineState *s, int funct_nr, int argc, reg_t *argv) {
reg_t obj = argv[0];
int selector = KP_UINT(argv[1]);
- return make_reg(0, is_heap_object(s, obj) && lookup_selector(s, obj, selector, NULL, NULL) != SELECTOR_NONE);
+ return make_reg(0, is_heap_object(s, obj) && lookup_selector(s, obj, selector, NULL, NULL) != kSelectorNone);
}
} // End of namespace Sci
diff --git a/engines/sci/engine/kstring.cpp b/engines/sci/engine/kstring.cpp
index 4b001b9782..ee1d02616e 100644
--- a/engines/sci/engine/kstring.cpp
+++ b/engines/sci/engine/kstring.cpp
@@ -78,7 +78,7 @@ char *kernel_lookup_text(EngineState *s, reg_t address, int index) {
/**********/
#ifdef SCI_SIMPLE_SAID_CODE
-int vocab_match_simple(EngineState *s, heap_ptr addr) {
+int vocab_match_simple(EngineState *s, HeapPtr addr) {
int nextitem;
int listpos = 0;
@@ -182,8 +182,8 @@ reg_t kSaid(EngineState *s, int funct_nr, int argc, reg_t *argv) {
reg_t kSetSynonyms(EngineState *s, int funct_nr, int argc, reg_t *argv) {
reg_t object = argv[0];
- list_t *list;
- node_t *node;
+ List *list;
+ Node *node;
int script;
int synpos = 0;
@@ -733,7 +733,7 @@ reg_t kGetFarText(EngineState *s, int funct_nr, int argc, reg_t *argv) {
#define DUMMY_MESSAGE "No MESSAGE support in FreeSCI yet"
-static message_state_t state;
+static MessageState state;
reg_t kMessage(EngineState *s, int funct_nr, int argc, reg_t *argv) {
if (!state.initialized)
@@ -742,7 +742,7 @@ reg_t kMessage(EngineState *s, int funct_nr, int argc, reg_t *argv) {
switch (UKPV(0)) {
case 0 : {
char *buffer = argc == 7 ? kernel_dereference_char_pointer(s, argv[6], 0) : NULL;
- message_tuple_t tuple;
+ MessageTuple tuple;
int module = UKPV(1);
tuple.noun = UKPV(2);
@@ -772,7 +772,7 @@ reg_t kMessage(EngineState *s, int funct_nr, int argc, reg_t *argv) {
}
}
case 2 : {
- message_tuple_t tuple;
+ MessageTuple tuple;
int module = UKPV(1);
tuple.noun = UKPV(2);
tuple.verb = UKPV(3);
diff --git a/engines/sci/engine/message.cpp b/engines/sci/engine/message.cpp
index 4f539b270a..a8f8eed6ec 100644
--- a/engines/sci/engine/message.cpp
+++ b/engines/sci/engine/message.cpp
@@ -30,7 +30,7 @@ namespace Sci {
#if 0
// Unreferenced - removed
-static int get_talker_trivial(index_record_cursor_t *cursor) {
+static int get_talker_trivial(IndexRecordCursor *cursor) {
return -1;
}
#endif
@@ -39,7 +39,7 @@ static int get_talker_trivial(index_record_cursor_t *cursor) {
#if 0
// Unreferenced - removed
-static void index_record_parse_2101(index_record_cursor_t *cursor, message_tuple_t *t) {
+static void index_record_parse_2101(IndexRecordCursor *cursor, MessageTuple *t) {
int noun = *(cursor->index_record + 0);
int verb = *(cursor->index_record + 1);
@@ -51,7 +51,7 @@ static void index_record_parse_2101(index_record_cursor_t *cursor, message_tuple
#if 0
// Unreferenced - removed
-static void index_record_get_text_2101(index_record_cursor_t *cursor, char *buffer, int buffer_size) {
+static void index_record_get_text_2101(IndexRecordCursor *cursor, char *buffer, int buffer_size) {
int offset = getUInt16(cursor->index_record + 2);
char *stringptr = (char *)cursor->resource_beginning + offset;
@@ -68,7 +68,7 @@ static int header_get_index_record_count_2101(byte *header) {
// Version 3.411 and later code ahead
-static void index_record_parse_3411(index_record_cursor_t *cursor, message_tuple_t *t) {
+static void index_record_parse_3411(IndexRecordCursor *cursor, MessageTuple *t) {
int noun = *(cursor->index_record + 0);
int verb = *(cursor->index_record + 1);
int cond = *(cursor->index_record + 2);
@@ -80,11 +80,11 @@ static void index_record_parse_3411(index_record_cursor_t *cursor, message_tuple
t->seq = seq;
}
-static int index_record_get_talker_3411(index_record_cursor_t *cursor) {
+static int index_record_get_talker_3411(IndexRecordCursor *cursor) {
return *(cursor->index_record + 4);
}
-static void index_record_get_text_3411(index_record_cursor_t *cursor, char *buffer, int buffer_size) {
+static void index_record_get_text_3411(IndexRecordCursor *cursor, char *buffer, int buffer_size) {
int offset = getUInt16(cursor->index_record + 5);
char *stringptr = (char *)cursor->resource_beginning + offset;
@@ -97,17 +97,17 @@ static int header_get_index_record_count_3411(byte *header) {
// Generic code from here on
-static int four_tuple_match(message_tuple_t *t1, message_tuple_t *t2) {
+static int four_tuple_match(MessageTuple *t1, MessageTuple *t2) {
return t1->noun == t2->noun && t1->verb == t2->verb && t1->cond == t2->cond && t1->seq == t2->seq;
}
-static void index_record_cursor_initialize(message_state_t *state, index_record_cursor_t *cursor) {
+static void index_record_cursor_initialize(MessageState *state, IndexRecordCursor *cursor) {
cursor->resource_beginning = state->current_res->data;
cursor->index_record = state->index_records;
cursor->index = 1;
}
-static int index_record_next(message_state_t *state, index_record_cursor_t *cursor) {
+static int index_record_next(MessageState *state, IndexRecordCursor *cursor) {
if (cursor->index == state->record_count)
return 0;
cursor->index_record += state->handler->index_record_size;
@@ -115,8 +115,8 @@ static int index_record_next(message_state_t *state, index_record_cursor_t *curs
return 1;
}
-static int index_record_find(message_state_t *state, message_tuple_t *t, index_record_cursor_t *cursor) {
- message_tuple_t looking_at;
+static int index_record_find(MessageState *state, MessageTuple *t, IndexRecordCursor *cursor) {
+ MessageTuple looking_at;
int found = 0;
index_record_cursor_initialize(state, cursor);
@@ -132,31 +132,31 @@ static int index_record_find(message_state_t *state, message_tuple_t *t, index_r
return found;
}
-int message_get_specific(message_state_t *state, message_tuple_t *t) {
+int message_get_specific(MessageState *state, MessageTuple *t) {
return index_record_find(state, t, &state->engine_cursor);
}
-int message_get_next(message_state_t *state) {
+int message_get_next(MessageState *state) {
return index_record_next(state, &state->engine_cursor);
}
-int message_get_talker(message_state_t *state) {
+int message_get_talker(MessageState *state) {
return state->handler->get_talker(&state->engine_cursor);
}
-int message_get_text(message_state_t *state, char *buffer, int length) {
+int message_get_text(MessageState *state, char *buffer, int length) {
state->handler->get_text(&state->engine_cursor, buffer, length);
return strlen(buffer);
}
-int message_get_length(message_state_t *state) {
+int message_get_length(MessageState *state) {
char buffer[500];
state->handler->get_text(&state->engine_cursor, buffer, sizeof(buffer));
return strlen(buffer);
}
-int message_state_load_res(message_state_t *state, int module) {
+int message_state_load_res(MessageState *state, int module) {
if (state->module == module)
return 1;
@@ -175,7 +175,7 @@ int message_state_load_res(message_state_t *state, int module) {
return 1;
}
-static message_handler_t fixed_handler = {
+static MessageHandler fixed_handler = {
3411,
index_record_parse_3411,
index_record_get_talker_3411,
@@ -185,7 +185,7 @@ static message_handler_t fixed_handler = {
11
};
-void message_state_initialize(ResourceManager *resmgr, message_state_t *state) {
+void message_state_initialize(ResourceManager *resmgr, MessageState *state) {
//resource_t *tester = scir_find_resource(resmgr, sci_message, 0, 0);
//int version;
diff --git a/engines/sci/engine/message.h b/engines/sci/engine/message.h
index dd41b5a7f9..86ac5c752e 100644
--- a/engines/sci/engine/message.h
+++ b/engines/sci/engine/message.h
@@ -30,26 +30,26 @@
namespace Sci {
-struct message_tuple_t {
+struct MessageTuple {
int noun;
int verb;
int cond;
int seq;
};
-struct index_record_cursor_t {
+struct IndexRecordCursor {
byte *index_record;
int index;
byte *resource_beginning;
};
typedef int index_record_size_t();
-typedef void parse_index_record_t(index_record_cursor_t *index_record, message_tuple_t *t);
-typedef int get_talker_t(index_record_cursor_t *cursor);
-typedef void get_text_t(index_record_cursor_t *cursor, char *buffer, int buffer_size);
+typedef void parse_index_record_t(IndexRecordCursor *index_record, MessageTuple *t);
+typedef int get_talker_t(IndexRecordCursor *cursor);
+typedef void get_text_t(IndexRecordCursor *cursor, char *buffer, int buffer_size);
typedef int index_record_count_t(byte *header);
-struct message_handler_t {
+struct MessageHandler {
int version_id;
parse_index_record_t *parse;
get_talker_t *get_talker;
@@ -60,24 +60,24 @@ struct message_handler_t {
int index_record_size;
};
-struct message_state_t {
+struct MessageState {
int initialized;
- message_handler_t *handler;
+ MessageHandler *handler;
ResourceManager *resmgr;
resource_t *current_res;
int module;
int record_count;
byte *index_records;
- index_record_cursor_t engine_cursor;
+ IndexRecordCursor engine_cursor;
};
-int message_get_specific(message_state_t *state, message_tuple_t *t);
-int message_get_next(message_state_t *state);
-int message_get_talker(message_state_t *state);
-int message_get_length(message_state_t *state);
-int message_get_text(message_state_t *state, char *buffer, int length);
-int message_state_load_res(message_state_t *state, int module);
-void message_state_initialize(ResourceManager *resmgr, message_state_t *state);
+int message_get_specific(MessageState *state, MessageTuple *t);
+int message_get_next(MessageState *state);
+int message_get_talker(MessageState *state);
+int message_get_length(MessageState *state);
+int message_get_text(MessageState *state, char *buffer, int length);
+int message_state_load_res(MessageState *state, int module);
+void message_state_initialize(ResourceManager *resmgr, MessageState *state);
} // End of namespace Sci
diff --git a/engines/sci/engine/savegame.cfsml b/engines/sci/engine/savegame.cfsml
index 53983f5cca..66eec5aed9 100644
--- a/engines/sci/engine/savegame.cfsml
+++ b/engines/sci/engine/savegame.cfsml
@@ -37,7 +37,6 @@
#include "sci/gfx/menubar.h"
#include "sci/sfx/sfx_engine.h"
#include "sci/engine/state.h"
-#include "sci/engine/heap.h"
#include "sci/engine/intmap.h"
#ifdef _WIN32
@@ -196,8 +195,8 @@ int read_CommonString(Common::SeekableReadStream *fh, Common::String *string, co
void write_menubar_tp(Common::WriteStream *fh, const menubar_t * const *foo);
int read_menubar_tp(Common::SeekableReadStream *fh, menubar_t **foo, const char *lastval, int *line, int *hiteof);
-void write_mem_obj_tp(Common::WriteStream *fh, const mem_obj_t * const *foo);
-int read_mem_obj_tp(Common::SeekableReadStream *fh, mem_obj_t **foo, const char *lastval, int *line, int *hiteof);
+void write_MemObjPtr(Common::WriteStream *fh, const MemObject * const *foo);
+int read_MemObjPtr(Common::SeekableReadStream *fh, MemObject **foo, const char *lastval, int *line, int *hiteof);
void write_songlib_t(Common::WriteStream *fh, songlib_t const *foo);
int read_songlib_t(Common::SeekableReadStream *fh, songlib_t *foo, const char *lastval, int *line, int *hiteof);
@@ -213,7 +212,7 @@ int read_IntMapperNodePtr(Common::SeekableReadStream *fh, IntMapper::Node **foo,
void write_SegManagerPtr(Common::WriteStream *fh, const SegManager * const *foo);
int read_SegManagerPtr(Common::SeekableReadStream *fh, SegManager **foo, const char *lastval, int *line, int *hiteof);
-typedef mem_obj_t *mem_obj_ptr;
+typedef MemObject *mem_obj_ptr;
// Unused types
/*
@@ -231,11 +230,11 @@ RECORD synonym_t "synonym_t" {
TYPE bool "bool" LIKE int;
TYPE byte "byte" LIKE int;
TYPE Common::String ""Common::String" USING write_CommonString read_CommonString;
-TYPE seg_id_t "seg_id_t" LIKE int;
+TYPE SegmentId "SegmentId" LIKE int;
TYPE sci_version_t "sci_version_t" USING write_sci_version read_sci_version;
TYPE menubar_tp "menubar_t *" USING write_menubar_tp read_menubar_tp;
-TYPE mem_obj_t "mem_obj_t" USING write_mem_obj_t read_mem_obj_t;
-TYPE mem_obj_ptr "mem_obj_t *" USING write_mem_obj_tp read_mem_obj_tp;
+TYPE MemObject "MemObject" USING write_MemObject read_MemObject;
+TYPE mem_obj_ptr "MemObject *" USING write_MemObjPtr read_MemObjPtr;
TYPE reg_t "reg_t" USING write_reg_t read_reg_t;
TYPE size_t "size_t" LIKE int;
TYPE IntMapperPtr "IntMapper *" USING write_IntMapperPtr read_IntMapperPtr;
@@ -298,12 +297,12 @@ RECORD SegManager "SegManager" {
int exports_wide;
int gc_mark_bits;
size_t mem_allocated;
- seg_id_t clones_seg_id;
- seg_id_t lists_seg_id;
- seg_id_t nodes_seg_id;
+ SegmentId Clones_seg_id;
+ SegmentId Lists_seg_id;
+ SegmentId Nodes_seg_id;
}
-RECORD class_t "class_t" {
+RECORD Class "Class" {
int script;
reg_t reg;
}
@@ -331,17 +330,17 @@ RECORD EngineState "EngineState" {
int status_bar_background;
SegManagerPtr seg_manager;
int classtable_size;
- class_t classtable[DYNAMIC classtable_size];
+ Class classtable[DYNAMIC classtable_size];
sfx_state_t sound;
}
-RECORD local_variables_t "local_variables_t" {
+RECORD LocalVariables "LocalVariables" {
int script_id;
int nr;
reg_t locals[DYNAMIC nr];
}
-RECORD object_t "object_t" {
+RECORD Object "Object" {
int flags;
reg_t pos;
int variables_nr;
@@ -350,7 +349,7 @@ RECORD object_t "object_t" {
reg_t variables[DYNAMIC variables_nr];
}
-RECORD clone_t "clone_t" {
+RECORD Clone "Clone" {
int flags;
reg_t pos;
int variables_nr;
@@ -359,58 +358,58 @@ RECORD clone_t "clone_t" {
reg_t variables[DYNAMIC variables_nr];
}
-RECORD list_t "list_t" {
+RECORD List "List" {
reg_t first;
reg_t last;
}
-RECORD node_t "node_t" {
+RECORD Node "Node" {
reg_t pred;
reg_t succ;
reg_t key;
reg_t value;
}
-RECORD clone_entry_t "clone_entry_t" {
+RECORD CloneEntry "CloneEntry" {
int next_free;
- clone_t entry;
+ Clone entry;
}
-RECORD clone_table_t "clone_table_t" {
+RECORD CloneTable "CloneTable" {
int entries_nr;
int first_free;
int entries_used;
int max_entry;
- clone_entry_t table[DYNAMIC entries_nr];
+ CloneEntry table[DYNAMIC entries_nr];
}
-RECORD list_entry_t "list_entry_t" {
+RECORD ListEntry "ListEntry" {
int next_free;
- list_t entry;
+ List entry;
}
-RECORD list_table_t "list_table_t" {
+RECORD ListTable "ListTable" {
int entries_nr;
int first_free;
int entries_used;
int max_entry;
- list_entry_t table[DYNAMIC entries_nr];
+ ListEntry table[DYNAMIC entries_nr];
}
-RECORD node_entry_t "node_entry_t" {
+RECORD NodeEntry "NodeEntry" {
int next_free;
- node_t entry;
+ Node entry;
}
-RECORD node_table_t "node_table_t" {
+RECORD NodeTable "NodeTable" {
int entries_nr;
int first_free;
int entries_used;
int max_entry;
- node_entry_t table[DYNAMIC entries_nr];
+ NodeEntry table[DYNAMIC entries_nr];
}
-RECORD script_t "script_t" {
+RECORD Script "Script" {
int nr;
size_t buf_size;
@@ -423,7 +422,7 @@ RECORD script_t "script_t" {
int lockers;
int objects_allocated;
int objects_nr;
- object_t objects[DYNAMIC objects_allocated];
+ Object objects[DYNAMIC objects_allocated];
int locals_offset;
int locals_segment;
@@ -441,7 +440,7 @@ RECORD SystemStrings "SystemStrings" {
SystemString strings[STATIC SYS_STRINGS_MAX];
}
-RECORD dynmem_t "dynmem_t" {
+RECORD DynMem "DynMem" {
int size;
string description;
byte buf[DYNAMIC size];
@@ -613,18 +612,18 @@ int mem_obj_string_to_enum(const char *str) {
return -1;
}
-void write_mem_obj_t(Common::WriteStream *fh, mem_obj_t const *foo) {
+void write_MemObject(Common::WriteStream *fh, MemObject const *foo) {
WSprintf(fh, "%s\n", mem_obj_string_names[foo->type].name);
%CFSMLWRITE int &foo->segmgr_id INTO fh;
switch (foo->type) {
case MEM_OBJ_SCRIPT:
- %CFSMLWRITE script_t &foo->data.script INTO fh;
+ %CFSMLWRITE Script &foo->data.script INTO fh;
break;
case MEM_OBJ_CLONES:
- %CFSMLWRITE clone_table_t &foo->data.clones INTO fh;
+ %CFSMLWRITE CloneTable &foo->data.clones INTO fh;
break;
case MEM_OBJ_LOCALS:
- %CFSMLWRITE local_variables_t &foo->data.locals INTO fh;
+ %CFSMLWRITE LocalVariables &foo->data.locals INTO fh;
break;
case MEM_OBJ_SYS_STRINGS:
%CFSMLWRITE SystemStrings &foo->data.sys_strings INTO fh;
@@ -635,55 +634,55 @@ void write_mem_obj_t(Common::WriteStream *fh, mem_obj_t const *foo) {
case MEM_OBJ_HUNK:
break;
case MEM_OBJ_LISTS:
- %CFSMLWRITE list_table_t &foo->data.lists INTO fh;
+ %CFSMLWRITE ListTable &foo->data.lists INTO fh;
break;
case MEM_OBJ_NODES:
- %CFSMLWRITE node_table_t &foo->data.nodes INTO fh;
+ %CFSMLWRITE NodeTable &foo->data.nodes INTO fh;
break;
case MEM_OBJ_DYNMEM:
- %CFSMLWRITE dynmem_t &foo->data.dynmem INTO fh;
+ %CFSMLWRITE DynMem &foo->data.dynmem INTO fh;
break;
default:
break;
}
}
-int read_mem_obj_t(Common::SeekableReadStream *fh, mem_obj_t *foo, const char *lastval, int *line, int *hiteof) {
+int read_MemObject(Common::SeekableReadStream *fh, MemObject *foo, const char *lastval, int *line, int *hiteof) {
foo->type = (memObjType)mem_obj_string_to_enum(lastval);
if (foo->type < 0) {
- sciprintf("Unknown mem_obj_t type %s on line %d\n", lastval, *line);
+ sciprintf("Unknown MemObject type %s on line %d\n", lastval, *line);
return 1;
}
%CFSMLREAD int &foo->segmgr_id FROM fh ERRVAR *hiteof LINECOUNTER *line;
switch (foo->type) {
case MEM_OBJ_SCRIPT:
- %CFSMLREAD script_t &foo->data.script FROM fh ERRVAR *hiteof LINECOUNTER *line;
+ %CFSMLREAD Script &foo->data.script FROM fh ERRVAR *hiteof LINECOUNTER *line;
break;
case MEM_OBJ_CLONES:
- %CFSMLREAD clone_table_t &foo->data.clones FROM fh ERRVAR *hiteof LINECOUNTER *line;
+ %CFSMLREAD CloneTable &foo->data.clones FROM fh ERRVAR *hiteof LINECOUNTER *line;
break;
case MEM_OBJ_LOCALS:
- %CFSMLREAD local_variables_t &foo->data.locals FROM fh ERRVAR *hiteof LINECOUNTER *line;
+ %CFSMLREAD LocalVariables &foo->data.locals FROM fh ERRVAR *hiteof LINECOUNTER *line;
break;
case MEM_OBJ_SYS_STRINGS:
%CFSMLREAD SystemStrings &foo->data.sys_strings FROM fh ERRVAR *hiteof LINECOUNTER *line;
break;
case MEM_OBJ_LISTS:
- %CFSMLREAD list_table_t &foo->data.lists FROM fh ERRVAR *hiteof LINECOUNTER *line;
+ %CFSMLREAD ListTable &foo->data.lists FROM fh ERRVAR *hiteof LINECOUNTER *line;
break;
case MEM_OBJ_NODES:
- %CFSMLREAD node_table_t &foo->data.nodes FROM fh ERRVAR *hiteof LINECOUNTER *line;
+ %CFSMLREAD NodeTable &foo->data.nodes FROM fh ERRVAR *hiteof LINECOUNTER *line;
break;
case MEM_OBJ_STACK:
%CFSMLREAD int &foo->data.stack.nr FROM fh ERRVAR *hiteof LINECOUNTER *line;
foo->data.stack.entries = (reg_t *)sci_calloc(foo->data.stack.nr, sizeof(reg_t));
break;
case MEM_OBJ_HUNK:
- init_hunk_table(&foo->data.hunks);
+ init_Hunk_table(&foo->data.hunks);
break;
case MEM_OBJ_DYNMEM:
- %CFSMLREAD dynmem_t &foo->data.dynmem FROM fh ERRVAR *hiteof LINECOUNTER *line;
+ %CFSMLREAD DynMem &foo->data.dynmem FROM fh ERRVAR *hiteof LINECOUNTER *line;
break;
default:
break;
@@ -692,20 +691,20 @@ int read_mem_obj_t(Common::SeekableReadStream *fh, mem_obj_t *foo, const char *l
return *hiteof;
}
-void write_mem_obj_tp(Common::WriteStream *fh, const mem_obj_t * const *foo) {
+void write_MemObjPtr(Common::WriteStream *fh, const MemObject * const *foo) {
if (*foo) {
- %CFSMLWRITE mem_obj_t (*foo) INTO fh;
+ %CFSMLWRITE MemObject (*foo) INTO fh;
} else { // Nothing to write
WSprintf(fh, "\\null\\");
}
}
-int read_mem_obj_tp(Common::SeekableReadStream *fh, mem_obj_t **foo, const char *lastval, int *line, int *hiteof) {
+int read_MemObjPtr(Common::SeekableReadStream *fh, MemObject **foo, const char *lastval, int *line, int *hiteof) {
if (lastval[0] == '\\') {
*foo = NULL; // No menu bar
} else {
- *foo = (mem_obj_t *)sci_malloc(sizeof(mem_obj_t));
- %CFSMLREAD mem_obj_t (*foo) FROM fh ERRVAR *hiteof FIRSTTOKEN lastval LINECOUNTER *line;
+ *foo = (MemObject *)sci_malloc(sizeof(MemObject));
+ %CFSMLREAD MemObject (*foo) FROM fh ERRVAR *hiteof FIRSTTOKEN lastval LINECOUNTER *line;
return *hiteof;
}
return 0;
@@ -793,7 +792,7 @@ int gamestate_save(EngineState *s, Common::WriteStream *fh, const char* savename
return 0;
}
-static seg_id_t find_unique_seg_by_type(SegManager *self, int type) {
+static SegmentId find_unique_seg_by_type(SegManager *self, int type) {
int i;
for (i = 0; i < self->heap_size; i++)
@@ -822,7 +821,7 @@ static byte *find_unique_script_block(EngineState *s, byte *buf, int type) {
}
static void reconstruct_stack(EngineState *retval) {
- seg_id_t stack_seg = find_unique_seg_by_type(retval->seg_manager, MEM_OBJ_STACK);
+ SegmentId stack_seg = find_unique_seg_by_type(retval->seg_manager, MEM_OBJ_STACK);
dstack_t *stack = &(retval->seg_manager->heap[stack_seg]->data.stack);
retval->stack_segment = stack_seg;
@@ -830,10 +829,10 @@ static void reconstruct_stack(EngineState *retval) {
retval->stack_top = retval->stack_base + VM_STACK_SIZE;
}
-static int clone_entry_used(clone_table_t *table, int n) {
+static int clone_entry_used(CloneTable *table, int n) {
int backup;
int seeker = table->first_free;
- clone_entry_t *entries = table->table;
+ CloneEntry *entries = table->table;
if (seeker == HEAPENTRY_INVALID) return 1;
@@ -846,9 +845,9 @@ static int clone_entry_used(clone_table_t *table, int n) {
return 1;
}
-static void load_script(EngineState *s, seg_id_t seg) {
+static void load_script(EngineState *s, SegmentId seg) {
resource_t *script, *heap = NULL;
- script_t *scr = &(s->seg_manager->heap[seg]->data.script);
+ Script *scr = &(s->seg_manager->heap[seg]->data.script);
scr->buf = (byte *)malloc(scr->buf_size);
@@ -869,14 +868,14 @@ static void load_script(EngineState *s, seg_id_t seg) {
static void reconstruct_scripts(EngineState *s, SegManager *self) {
int i;
- mem_obj_t *mobj;
+ MemObject *mobj;
for (i = 0; i < self->heap_size; i++) {
if (self->heap[i]) {
mobj = self->heap[i];
switch (mobj->type) {
case MEM_OBJ_SCRIPT: {
int j;
- script_t *scr = &mobj->data.script;
+ Script *scr = &mobj->data.script;
load_script(s, i);
scr->locals_block = scr->locals_segment == 0 ? NULL : &s->seg_manager->heap[scr->locals_segment]->data.locals;
@@ -908,7 +907,7 @@ static void reconstruct_scripts(EngineState *s, SegManager *self) {
switch (mobj->type) {
case MEM_OBJ_SCRIPT: {
int j;
- script_t *scr = &mobj->data.script;
+ Script *scr = &mobj->data.script;
for (j = 0; j < scr->objects_nr; j++) {
byte *data = scr->buf + scr->objects[j].pos.offset;
@@ -921,7 +920,7 @@ static void reconstruct_scripts(EngineState *s, SegManager *self) {
scr->objects[j].base_vars = prop_area;
} else {
int funct_area = getUInt16( data + SCRIPT_FUNCTAREAPTR_OFFSET );
- object_t *base_obj;
+ Object *base_obj;
base_obj = obj_get(s, scr->objects[j].variables[SCRIPT_SPECIES_SELECTOR]);
@@ -948,7 +947,7 @@ static void reconstruct_scripts(EngineState *s, SegManager *self) {
void reconstruct_clones(EngineState *s, SegManager *self) {
int i;
- mem_obj_t *mobj;
+ MemObject *mobj;
for (i = 0; i < self->heap_size; i++) {
if (self->heap[i]) {
@@ -956,7 +955,7 @@ void reconstruct_clones(EngineState *s, SegManager *self) {
switch (mobj->type) {
case MEM_OBJ_CLONES: {
int j;
- clone_entry_t *seeker = mobj->data.clones.table;
+ CloneEntry *seeker = mobj->data.clones.table;
sciprintf("Free list: ");
for (j = mobj->data.clones.first_free; j != HEAPENTRY_INVALID; j = mobj->data.clones.table[j].next_free) {
@@ -972,7 +971,7 @@ void reconstruct_clones(EngineState *s, SegManager *self) {
sciprintf("\n");
for (j = 0; j < mobj->data.clones.max_entry; j++) {
- object_t *base_obj;
+ Object *base_obj;
if (!clone_entry_used(&mobj->data.clones, j)) {
seeker++;
@@ -1119,7 +1118,7 @@ EngineState *gamestate_restore(EngineState *s, Common::SeekableReadStream *fh) {
retval->save_dir_copy = make_reg(s->sys_strings_segment, SYS_STRING_SAVEDIR);
retval->save_dir_edit_offset = 0;
retval->sys_strings_segment = find_unique_seg_by_type(retval->seg_manager, MEM_OBJ_SYS_STRINGS);
- retval->sys_strings = &(((mem_obj_t *)(GET_SEGMENT(*retval->seg_manager, retval->sys_strings_segment, MEM_OBJ_SYS_STRINGS)))->data.sys_strings);
+ retval->sys_strings = &(((MemObject *)(GET_SEGMENT(*retval->seg_manager, retval->sys_strings_segment, MEM_OBJ_SYS_STRINGS)))->data.sys_strings);
// Restore system strings
SystemString *str;
diff --git a/engines/sci/engine/savegame.cpp b/engines/sci/engine/savegame.cpp
index f51d2c25f3..c6d2086436 100644
--- a/engines/sci/engine/savegame.cpp
+++ b/engines/sci/engine/savegame.cpp
@@ -37,7 +37,6 @@
#include "sci/gfx/menubar.h"
#include "sci/sfx/sfx_engine.h"
#include "sci/engine/state.h"
-#include "sci/engine/heap.h"
#include "sci/engine/intmap.h"
#ifdef _WIN32
@@ -196,8 +195,8 @@ int read_CommonString(Common::SeekableReadStream *fh, Common::String *string, co
void write_menubar_tp(Common::WriteStream *fh, const menubar_t * const *foo);
int read_menubar_tp(Common::SeekableReadStream *fh, menubar_t **foo, const char *lastval, int *line, int *hiteof);
-void write_mem_obj_tp(Common::WriteStream *fh, const mem_obj_t * const *foo);
-int read_mem_obj_tp(Common::SeekableReadStream *fh, mem_obj_t **foo, const char *lastval, int *line, int *hiteof);
+void write_MemObjPtr(Common::WriteStream *fh, const MemObject * const *foo);
+int read_MemObjPtr(Common::SeekableReadStream *fh, MemObject **foo, const char *lastval, int *line, int *hiteof);
void write_songlib_t(Common::WriteStream *fh, songlib_t const *foo);
int read_songlib_t(Common::SeekableReadStream *fh, songlib_t *foo, const char *lastval, int *line, int *hiteof);
@@ -213,7 +212,7 @@ int read_IntMapperNodePtr(Common::SeekableReadStream *fh, IntMapper::Node **foo,
void write_SegManagerPtr(Common::WriteStream *fh, const SegManager * const *foo);
int read_SegManagerPtr(Common::SeekableReadStream *fh, SegManager **foo, const char *lastval, int *line, int *hiteof);
-typedef mem_obj_t *mem_obj_ptr;
+typedef MemObject *mem_obj_ptr;
// Unused types
/*
@@ -454,14 +453,6 @@ static void _cfsml_write_sfx_state_t(Common::WriteStream *fh, sfx_state_t const
static int _cfsml_read_sfx_state_t(Common::SeekableReadStream *fh, sfx_state_t* save_struc, const char *lastval, int *line, int *hiteof);
#line 383 "engines/sci/engine/savegame.cfsml"
-static void _cfsml_write_clone_entry_t(Common::WriteStream *fh, clone_entry_t const * save_struc);
-static int _cfsml_read_clone_entry_t(Common::SeekableReadStream *fh, clone_entry_t* save_struc, const char *lastval, int *line, int *hiteof);
-
-#line 383 "engines/sci/engine/savegame.cfsml"
-static void _cfsml_write_object_t(Common::WriteStream *fh, object_t const * save_struc);
-static int _cfsml_read_object_t(Common::SeekableReadStream *fh, object_t* save_struc, const char *lastval, int *line, int *hiteof);
-
-#line 383 "engines/sci/engine/savegame.cfsml"
static void _cfsml_write_string(Common::WriteStream *fh, const char * const * save_struc);
static int _cfsml_read_string(Common::SeekableReadStream *fh, char ** save_struc, const char *lastval, int *line, int *hiteof);
@@ -470,12 +461,20 @@ static void _cfsml_write_menubar_t(Common::WriteStream *fh, menubar_t const * sa
static int _cfsml_read_menubar_t(Common::SeekableReadStream *fh, menubar_t* save_struc, const char *lastval, int *line, int *hiteof);
#line 383 "engines/sci/engine/savegame.cfsml"
+static void _cfsml_write_CloneTable(Common::WriteStream *fh, CloneTable const * save_struc);
+static int _cfsml_read_CloneTable(Common::SeekableReadStream *fh, CloneTable* save_struc, const char *lastval, int *line, int *hiteof);
+
+#line 383 "engines/sci/engine/savegame.cfsml"
static void _cfsml_write_size_t(Common::WriteStream *fh, size_t const * save_struc);
static int _cfsml_read_size_t(Common::SeekableReadStream *fh, size_t* save_struc, const char *lastval, int *line, int *hiteof);
#line 383 "engines/sci/engine/savegame.cfsml"
-static void _cfsml_write_list_entry_t(Common::WriteStream *fh, list_entry_t const * save_struc);
-static int _cfsml_read_list_entry_t(Common::SeekableReadStream *fh, list_entry_t* save_struc, const char *lastval, int *line, int *hiteof);
+static void _cfsml_write_SegmentId(Common::WriteStream *fh, SegmentId const * save_struc);
+static int _cfsml_read_SegmentId(Common::SeekableReadStream *fh, SegmentId* save_struc, const char *lastval, int *line, int *hiteof);
+
+#line 383 "engines/sci/engine/savegame.cfsml"
+static void _cfsml_write_Node(Common::WriteStream *fh, Node const * save_struc);
+static int _cfsml_read_Node(Common::SeekableReadStream *fh, Node* save_struc, const char *lastval, int *line, int *hiteof);
#line 383 "engines/sci/engine/savegame.cfsml"
static void _cfsml_write_SegManager(Common::WriteStream *fh, SegManager const * save_struc);
@@ -490,28 +489,12 @@ static void _cfsml_write_menu_item_t(Common::WriteStream *fh, menu_item_t const
static int _cfsml_read_menu_item_t(Common::SeekableReadStream *fh, menu_item_t* save_struc, const char *lastval, int *line, int *hiteof);
#line 383 "engines/sci/engine/savegame.cfsml"
-static void _cfsml_write_node_entry_t(Common::WriteStream *fh, node_entry_t const * save_struc);
-static int _cfsml_read_node_entry_t(Common::SeekableReadStream *fh, node_entry_t* save_struc, const char *lastval, int *line, int *hiteof);
-
-#line 383 "engines/sci/engine/savegame.cfsml"
-static void _cfsml_write_seg_id_t(Common::WriteStream *fh, seg_id_t const * save_struc);
-static int _cfsml_read_seg_id_t(Common::SeekableReadStream *fh, seg_id_t* save_struc, const char *lastval, int *line, int *hiteof);
-
-#line 383 "engines/sci/engine/savegame.cfsml"
-static void _cfsml_write_dynmem_t(Common::WriteStream *fh, dynmem_t const * save_struc);
-static int _cfsml_read_dynmem_t(Common::SeekableReadStream *fh, dynmem_t* save_struc, const char *lastval, int *line, int *hiteof);
-
-#line 383 "engines/sci/engine/savegame.cfsml"
-static void _cfsml_write_local_variables_t(Common::WriteStream *fh, local_variables_t const * save_struc);
-static int _cfsml_read_local_variables_t(Common::SeekableReadStream *fh, local_variables_t* save_struc, const char *lastval, int *line, int *hiteof);
-
-#line 383 "engines/sci/engine/savegame.cfsml"
static void _cfsml_write_bool(Common::WriteStream *fh, bool const * save_struc);
static int _cfsml_read_bool(Common::SeekableReadStream *fh, bool* save_struc, const char *lastval, int *line, int *hiteof);
#line 383 "engines/sci/engine/savegame.cfsml"
-static void _cfsml_write_node_table_t(Common::WriteStream *fh, node_table_t const * save_struc);
-static int _cfsml_read_node_table_t(Common::SeekableReadStream *fh, node_table_t* save_struc, const char *lastval, int *line, int *hiteof);
+static void _cfsml_write_NodeTable(Common::WriteStream *fh, NodeTable const * save_struc);
+static int _cfsml_read_NodeTable(Common::SeekableReadStream *fh, NodeTable* save_struc, const char *lastval, int *line, int *hiteof);
#line 383 "engines/sci/engine/savegame.cfsml"
static void _cfsml_write_SystemString(Common::WriteStream *fh, SystemString const * save_struc);
@@ -522,24 +505,28 @@ static void _cfsml_write_byte(Common::WriteStream *fh, byte const * save_struc);
static int _cfsml_read_byte(Common::SeekableReadStream *fh, byte* save_struc, const char *lastval, int *line, int *hiteof);
#line 383 "engines/sci/engine/savegame.cfsml"
-static void _cfsml_write_node_t(Common::WriteStream *fh, node_t const * save_struc);
-static int _cfsml_read_node_t(Common::SeekableReadStream *fh, node_t* save_struc, const char *lastval, int *line, int *hiteof);
+static void _cfsml_write_ListTable(Common::WriteStream *fh, ListTable const * save_struc);
+static int _cfsml_read_ListTable(Common::SeekableReadStream *fh, ListTable* save_struc, const char *lastval, int *line, int *hiteof);
+
+#line 383 "engines/sci/engine/savegame.cfsml"
+static void _cfsml_write_Class(Common::WriteStream *fh, Class const * save_struc);
+static int _cfsml_read_Class(Common::SeekableReadStream *fh, Class* save_struc, const char *lastval, int *line, int *hiteof);
#line 383 "engines/sci/engine/savegame.cfsml"
static void _cfsml_write_SystemStrings(Common::WriteStream *fh, SystemStrings const * save_struc);
static int _cfsml_read_SystemStrings(Common::SeekableReadStream *fh, SystemStrings* save_struc, const char *lastval, int *line, int *hiteof);
#line 383 "engines/sci/engine/savegame.cfsml"
-static void _cfsml_write_list_table_t(Common::WriteStream *fh, list_table_t const * save_struc);
-static int _cfsml_read_list_table_t(Common::SeekableReadStream *fh, list_table_t* save_struc, const char *lastval, int *line, int *hiteof);
+static void _cfsml_write_song_handle_t(Common::WriteStream *fh, song_handle_t const * save_struc);
+static int _cfsml_read_song_handle_t(Common::SeekableReadStream *fh, song_handle_t* save_struc, const char *lastval, int *line, int *hiteof);
#line 383 "engines/sci/engine/savegame.cfsml"
-static void _cfsml_write_class_t(Common::WriteStream *fh, class_t const * save_struc);
-static int _cfsml_read_class_t(Common::SeekableReadStream *fh, class_t* save_struc, const char *lastval, int *line, int *hiteof);
+static void _cfsml_write_List(Common::WriteStream *fh, List const * save_struc);
+static int _cfsml_read_List(Common::SeekableReadStream *fh, List* save_struc, const char *lastval, int *line, int *hiteof);
#line 383 "engines/sci/engine/savegame.cfsml"
-static void _cfsml_write_song_handle_t(Common::WriteStream *fh, song_handle_t const * save_struc);
-static int _cfsml_read_song_handle_t(Common::SeekableReadStream *fh, song_handle_t* save_struc, const char *lastval, int *line, int *hiteof);
+static void _cfsml_write_NodeEntry(Common::WriteStream *fh, NodeEntry const * save_struc);
+static int _cfsml_read_NodeEntry(Common::SeekableReadStream *fh, NodeEntry* save_struc, const char *lastval, int *line, int *hiteof);
#line 383 "engines/sci/engine/savegame.cfsml"
static void _cfsml_write_int(Common::WriteStream *fh, int const * save_struc);
@@ -550,10 +537,18 @@ static void _cfsml_write_EngineState(Common::WriteStream *fh, EngineState const
static int _cfsml_read_EngineState(Common::SeekableReadStream *fh, EngineState* save_struc, const char *lastval, int *line, int *hiteof);
#line 383 "engines/sci/engine/savegame.cfsml"
+static void _cfsml_write_CloneEntry(Common::WriteStream *fh, CloneEntry const * save_struc);
+static int _cfsml_read_CloneEntry(Common::SeekableReadStream *fh, CloneEntry* save_struc, const char *lastval, int *line, int *hiteof);
+
+#line 383 "engines/sci/engine/savegame.cfsml"
static void _cfsml_write_SavegameMetadata(Common::WriteStream *fh, SavegameMetadata const * save_struc);
static int _cfsml_read_SavegameMetadata(Common::SeekableReadStream *fh, SavegameMetadata* save_struc, const char *lastval, int *line, int *hiteof);
#line 383 "engines/sci/engine/savegame.cfsml"
+static void _cfsml_write_LocalVariables(Common::WriteStream *fh, LocalVariables const * save_struc);
+static int _cfsml_read_LocalVariables(Common::SeekableReadStream *fh, LocalVariables* save_struc, const char *lastval, int *line, int *hiteof);
+
+#line 383 "engines/sci/engine/savegame.cfsml"
static void _cfsml_write_IntMapper(Common::WriteStream *fh, IntMapper const * save_struc);
static int _cfsml_read_IntMapper(Common::SeekableReadStream *fh, IntMapper* save_struc, const char *lastval, int *line, int *hiteof);
@@ -562,20 +557,24 @@ static void _cfsml_write_menu_t(Common::WriteStream *fh, menu_t const * save_str
static int _cfsml_read_menu_t(Common::SeekableReadStream *fh, menu_t* save_struc, const char *lastval, int *line, int *hiteof);
#line 383 "engines/sci/engine/savegame.cfsml"
-static void _cfsml_write_clone_table_t(Common::WriteStream *fh, clone_table_t const * save_struc);
-static int _cfsml_read_clone_table_t(Common::SeekableReadStream *fh, clone_table_t* save_struc, const char *lastval, int *line, int *hiteof);
+static void _cfsml_write_Object(Common::WriteStream *fh, Object const * save_struc);
+static int _cfsml_read_Object(Common::SeekableReadStream *fh, Object* save_struc, const char *lastval, int *line, int *hiteof);
#line 383 "engines/sci/engine/savegame.cfsml"
-static void _cfsml_write_list_t(Common::WriteStream *fh, list_t const * save_struc);
-static int _cfsml_read_list_t(Common::SeekableReadStream *fh, list_t* save_struc, const char *lastval, int *line, int *hiteof);
+static void _cfsml_write_ListEntry(Common::WriteStream *fh, ListEntry const * save_struc);
+static int _cfsml_read_ListEntry(Common::SeekableReadStream *fh, ListEntry* save_struc, const char *lastval, int *line, int *hiteof);
#line 383 "engines/sci/engine/savegame.cfsml"
-static void _cfsml_write_clone_t(Common::WriteStream *fh, clone_t const * save_struc);
-static int _cfsml_read_clone_t(Common::SeekableReadStream *fh, clone_t* save_struc, const char *lastval, int *line, int *hiteof);
+static void _cfsml_write_Clone(Common::WriteStream *fh, Clone const * save_struc);
+static int _cfsml_read_Clone(Common::SeekableReadStream *fh, Clone* save_struc, const char *lastval, int *line, int *hiteof);
#line 383 "engines/sci/engine/savegame.cfsml"
-static void _cfsml_write_script_t(Common::WriteStream *fh, script_t const * save_struc);
-static int _cfsml_read_script_t(Common::SeekableReadStream *fh, script_t* save_struc, const char *lastval, int *line, int *hiteof);
+static void _cfsml_write_DynMem(Common::WriteStream *fh, DynMem const * save_struc);
+static int _cfsml_read_DynMem(Common::SeekableReadStream *fh, DynMem* save_struc, const char *lastval, int *line, int *hiteof);
+
+#line 383 "engines/sci/engine/savegame.cfsml"
+static void _cfsml_write_Script(Common::WriteStream *fh, Script const * save_struc);
+static int _cfsml_read_Script(Common::SeekableReadStream *fh, Script* save_struc, const char *lastval, int *line, int *hiteof);
#line 396 "engines/sci/engine/savegame.cfsml"
static void
@@ -644,109 +643,62 @@ _cfsml_read_sfx_state_t(Common::SeekableReadStream *fh, sfx_state_t* save_struc,
#line 396 "engines/sci/engine/savegame.cfsml"
static void
-_cfsml_write_clone_entry_t(Common::WriteStream *fh, clone_entry_t const * save_struc)
+_cfsml_write_string(Common::WriteStream *fh, const char * const * save_struc)
{
-#line 413 "engines/sci/engine/savegame.cfsml"
- WSprintf(fh, "{\n");
- WSprintf(fh, "next_free = ");
- _cfsml_write_int(fh, (int const *) &(save_struc->next_free));
- WSprintf(fh, "\n");
- WSprintf(fh, "entry = ");
- _cfsml_write_clone_t(fh, (clone_t const *) &(save_struc->entry));
- WSprintf(fh, "\n");
- WSprintf(fh, "}");
+#line 403 "engines/sci/engine/savegame.cfsml"
+ if (!(*save_struc))
+ WSprintf(fh, "\\null\\");
+ else {
+ char *token = _cfsml_mangle_string((const char *) *save_struc);
+ WSprintf(fh, "\"%s\"", token);
+ free(token);
+ }
}
#line 487 "engines/sci/engine/savegame.cfsml"
static int
-_cfsml_read_clone_entry_t(Common::SeekableReadStream *fh, clone_entry_t* save_struc, const char *lastval, int *line, int *hiteof)
+_cfsml_read_string(Common::SeekableReadStream *fh, char ** save_struc, const char *lastval, int *line, int *hiteof)
{
-#line 542 "engines/sci/engine/savegame.cfsml"
- char *token;
- int assignment, closed;
+#line 520 "engines/sci/engine/savegame.cfsml"
- if (strcmp(lastval, "{")) {
- _cfsml_error("Reading record clone_entry_t; expected opening braces in line %d, got \"%s\"\n", *line, lastval);
- return CFSML_FAILURE;
- };
- closed = 0;
- do {
- const char *value;
- token = _cfsml_get_identifier(fh, line, hiteof, &assignment);
+ if (strcmp(lastval, "\\null\\")) { // null pointer?
+ unsigned int length = strlen(lastval);
+ if (*lastval == '"') { // Quoted string?
+ while (lastval[length] != '"')
+ --length;
- if (!token) {
- _cfsml_error("Expected token at line %d\n", *line);
- return CFSML_FAILURE;
- }
- if (!assignment) {
- if (!strcmp(token, "}"))
- closed = 1;
- else {
- _cfsml_error("Expected assignment or closing braces in line %d\n", *line);
- return CFSML_FAILURE;
- }
- } else {
- value = "";
- while (!value || !strcmp(value, ""))
- value = _cfsml_get_value(fh, line, hiteof);
- if (!value) {
- _cfsml_error("Expected token at line %d\n", *line);
- return CFSML_FAILURE;
- }
- if (!strcmp(token, "next_free")) {
-#line 691 "engines/sci/engine/savegame.cfsml"
- if (_cfsml_read_int(fh, (int*) &(save_struc->next_free), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_int() for next_free at line %d\n", *line);
- return CFSML_FAILURE;
- }
- } else
- if (!strcmp(token, "entry")) {
-#line 691 "engines/sci/engine/savegame.cfsml"
- if (_cfsml_read_clone_t(fh, (clone_t*) &(save_struc->entry), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_clone_t() for entry at line %d\n", *line);
- return CFSML_FAILURE;
- }
- } else
-#line 700 "engines/sci/engine/savegame.cfsml"
- {
- _cfsml_error("clone_entry_t: Assignment to invalid identifier '%s' in line %d\n", token, *line);
+ if (!length) { // No matching double-quotes?
+ _cfsml_error("Unbalanced quotes at line %d\n", *line);
return CFSML_FAILURE;
}
+
+ lastval++; // ...and skip the opening quotes locally
+ length--;
}
- } while (!closed); // Until closing braces are hit
- return CFSML_SUCCESS;
+ *save_struc = _cfsml_unmangle_string(lastval, length);
+ _cfsml_register_pointer(*save_struc);
+ return CFSML_SUCCESS;
+ } else {
+ *save_struc = NULL;
+ return CFSML_SUCCESS;
+ }
}
#line 396 "engines/sci/engine/savegame.cfsml"
static void
-_cfsml_write_object_t(Common::WriteStream *fh, object_t const * save_struc)
+_cfsml_write_menubar_t(Common::WriteStream *fh, menubar_t const * save_struc)
{
#line 413 "engines/sci/engine/savegame.cfsml"
WSprintf(fh, "{\n");
- WSprintf(fh, "flags = ");
- _cfsml_write_int(fh, (int const *) &(save_struc->flags));
- WSprintf(fh, "\n");
- WSprintf(fh, "pos = ");
- write_reg_t(fh, (reg_t const *) &(save_struc->pos));
- WSprintf(fh, "\n");
- WSprintf(fh, "variables_nr = ");
- _cfsml_write_int(fh, (int const *) &(save_struc->variables_nr));
- WSprintf(fh, "\n");
- WSprintf(fh, "variable_names_nr = ");
- _cfsml_write_int(fh, (int const *) &(save_struc->variable_names_nr));
- WSprintf(fh, "\n");
- WSprintf(fh, "methods_nr = ");
- _cfsml_write_int(fh, (int const *) &(save_struc->methods_nr));
- WSprintf(fh, "\n");
- WSprintf(fh, "variables = ");
+ WSprintf(fh, "menus = ");
int min, max;
- min = max = save_struc->variables_nr;
- if (!save_struc->variables)
+ min = max = save_struc->menus_nr;
+ if (!save_struc->menus)
min = max = 0; /* Don't write if it points to NULL */
#line 440 "engines/sci/engine/savegame.cfsml"
WSprintf(fh, "[%d][\n", max);
for (int i = 0; i < min; i++) {
- write_reg_t(fh, &(save_struc->variables[i]));
+ _cfsml_write_menu_t(fh, &(save_struc->menus[i]));
WSprintf(fh, "\n");
}
WSprintf(fh, "]");
@@ -756,14 +708,14 @@ _cfsml_write_object_t(Common::WriteStream *fh, object_t const * save_struc)
#line 487 "engines/sci/engine/savegame.cfsml"
static int
-_cfsml_read_object_t(Common::SeekableReadStream *fh, object_t* save_struc, const char *lastval, int *line, int *hiteof)
+_cfsml_read_menubar_t(Common::SeekableReadStream *fh, menubar_t* save_struc, const char *lastval, int *line, int *hiteof)
{
#line 542 "engines/sci/engine/savegame.cfsml"
char *token;
int assignment, closed;
if (strcmp(lastval, "{")) {
- _cfsml_error("Reading record object_t; expected opening braces in line %d, got \"%s\"\n", *line, lastval);
+ _cfsml_error("Reading record menubar_t; expected opening braces in line %d, got \"%s\"\n", *line, lastval);
return CFSML_FAILURE;
};
closed = 0;
@@ -790,42 +742,7 @@ _cfsml_read_object_t(Common::SeekableReadStream *fh, object_t* save_struc, const
_cfsml_error("Expected token at line %d\n", *line);
return CFSML_FAILURE;
}
- if (!strcmp(token, "flags")) {
-#line 691 "engines/sci/engine/savegame.cfsml"
- if (_cfsml_read_int(fh, (int*) &(save_struc->flags), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_int() for flags at line %d\n", *line);
- return CFSML_FAILURE;
- }
- } else
- if (!strcmp(token, "pos")) {
-#line 691 "engines/sci/engine/savegame.cfsml"
- if (read_reg_t(fh, (reg_t*) &(save_struc->pos), value, line, hiteof)) {
- _cfsml_error("Token expected by read_reg_t() for pos at line %d\n", *line);
- return CFSML_FAILURE;
- }
- } else
- if (!strcmp(token, "variables_nr")) {
-#line 691 "engines/sci/engine/savegame.cfsml"
- if (_cfsml_read_int(fh, (int*) &(save_struc->variables_nr), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_int() for variables_nr at line %d\n", *line);
- return CFSML_FAILURE;
- }
- } else
- if (!strcmp(token, "variable_names_nr")) {
-#line 691 "engines/sci/engine/savegame.cfsml"
- if (_cfsml_read_int(fh, (int*) &(save_struc->variable_names_nr), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_int() for variable_names_nr at line %d\n", *line);
- return CFSML_FAILURE;
- }
- } else
- if (!strcmp(token, "methods_nr")) {
-#line 691 "engines/sci/engine/savegame.cfsml"
- if (_cfsml_read_int(fh, (int*) &(save_struc->methods_nr), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_int() for methods_nr at line %d\n", *line);
- return CFSML_FAILURE;
- }
- } else
- if (!strcmp(token, "variables")) {
+ if (!strcmp(token, "menus")) {
#line 605 "engines/sci/engine/savegame.cfsml"
if ((value[0] != '[') || (value[strlen(value) - 1] != '[')) {
_cfsml_error("Opening brackets expected at line %d\n", *line);
@@ -841,13 +758,13 @@ _cfsml_read_object_t(Common::SeekableReadStream *fh, object_t* save_struc, const
}
if (max) {
- save_struc->variables = (reg_t *)sci_malloc(max * sizeof(reg_t));
+ save_struc->menus = (menu_t *)sci_malloc(max * sizeof(menu_t));
#ifdef SATISFY_PURIFY
- memset(save_struc->variables, 0, max * sizeof(reg_t));
+ memset(save_struc->menus, 0, max * sizeof(menu_t));
#endif
- _cfsml_register_pointer(save_struc->variables);
+ _cfsml_register_pointer(save_struc->menus);
} else
- save_struc->variables = NULL;
+ save_struc->menus = NULL;
#line 640 "engines/sci/engine/savegame.cfsml"
done = i = 0;
do {
@@ -861,18 +778,18 @@ _cfsml_read_object_t(Common::SeekableReadStream *fh, object_t* save_struc, const
_cfsml_error("More elements than space available (%d) in '%s' at line %d\n", max, token, *line);
return CFSML_FAILURE;
}
- if (read_reg_t(fh, &(save_struc->variables[i++]), value, line, hiteof)) {
- _cfsml_error("Token expected by read_reg_t() for variables[i++] at line %d\n", *line);
+ if (_cfsml_read_menu_t(fh, &(save_struc->menus[i++]), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_menu_t() for menus[i++] at line %d\n", *line);
return CFSML_FAILURE;
}
} else
done = 1;
} while (!done);
- save_struc->variables_nr = max ; // Set array size accordingly
+ save_struc->menus_nr = max ; // Set array size accordingly
} else
#line 700 "engines/sci/engine/savegame.cfsml"
{
- _cfsml_error("object_t: Assignment to invalid identifier '%s' in line %d\n", token, *line);
+ _cfsml_error("menubar_t: Assignment to invalid identifier '%s' in line %d\n", token, *line);
return CFSML_FAILURE;
}
}
@@ -882,62 +799,31 @@ _cfsml_read_object_t(Common::SeekableReadStream *fh, object_t* save_struc, const
#line 396 "engines/sci/engine/savegame.cfsml"
static void
-_cfsml_write_string(Common::WriteStream *fh, const char * const * save_struc)
-{
-#line 403 "engines/sci/engine/savegame.cfsml"
- if (!(*save_struc))
- WSprintf(fh, "\\null\\");
- else {
- char *token = _cfsml_mangle_string((const char *) *save_struc);
- WSprintf(fh, "\"%s\"", token);
- free(token);
- }
-}
-
-#line 487 "engines/sci/engine/savegame.cfsml"
-static int
-_cfsml_read_string(Common::SeekableReadStream *fh, char ** save_struc, const char *lastval, int *line, int *hiteof)
-{
-#line 520 "engines/sci/engine/savegame.cfsml"
-
- if (strcmp(lastval, "\\null\\")) { // null pointer?
- unsigned int length = strlen(lastval);
- if (*lastval == '"') { // Quoted string?
- while (lastval[length] != '"')
- --length;
-
- if (!length) { // No matching double-quotes?
- _cfsml_error("Unbalanced quotes at line %d\n", *line);
- return CFSML_FAILURE;
- }
-
- lastval++; // ...and skip the opening quotes locally
- length--;
- }
- *save_struc = _cfsml_unmangle_string(lastval, length);
- _cfsml_register_pointer(*save_struc);
- return CFSML_SUCCESS;
- } else {
- *save_struc = NULL;
- return CFSML_SUCCESS;
- }
-}
-
-#line 396 "engines/sci/engine/savegame.cfsml"
-static void
-_cfsml_write_menubar_t(Common::WriteStream *fh, menubar_t const * save_struc)
+_cfsml_write_CloneTable(Common::WriteStream *fh, CloneTable const * save_struc)
{
#line 413 "engines/sci/engine/savegame.cfsml"
WSprintf(fh, "{\n");
- WSprintf(fh, "menus = ");
+ WSprintf(fh, "entries_nr = ");
+ _cfsml_write_int(fh, (int const *) &(save_struc->entries_nr));
+ WSprintf(fh, "\n");
+ WSprintf(fh, "first_free = ");
+ _cfsml_write_int(fh, (int const *) &(save_struc->first_free));
+ WSprintf(fh, "\n");
+ WSprintf(fh, "entries_used = ");
+ _cfsml_write_int(fh, (int const *) &(save_struc->entries_used));
+ WSprintf(fh, "\n");
+ WSprintf(fh, "max_entry = ");
+ _cfsml_write_int(fh, (int const *) &(save_struc->max_entry));
+ WSprintf(fh, "\n");
+ WSprintf(fh, "table = ");
int min, max;
- min = max = save_struc->menus_nr;
- if (!save_struc->menus)
+ min = max = save_struc->entries_nr;
+ if (!save_struc->table)
min = max = 0; /* Don't write if it points to NULL */
#line 440 "engines/sci/engine/savegame.cfsml"
WSprintf(fh, "[%d][\n", max);
for (int i = 0; i < min; i++) {
- _cfsml_write_menu_t(fh, &(save_struc->menus[i]));
+ _cfsml_write_CloneEntry(fh, &(save_struc->table[i]));
WSprintf(fh, "\n");
}
WSprintf(fh, "]");
@@ -947,14 +833,14 @@ _cfsml_write_menubar_t(Common::WriteStream *fh, menubar_t const * save_struc)
#line 487 "engines/sci/engine/savegame.cfsml"
static int
-_cfsml_read_menubar_t(Common::SeekableReadStream *fh, menubar_t* save_struc, const char *lastval, int *line, int *hiteof)
+_cfsml_read_CloneTable(Common::SeekableReadStream *fh, CloneTable* save_struc, const char *lastval, int *line, int *hiteof)
{
#line 542 "engines/sci/engine/savegame.cfsml"
char *token;
int assignment, closed;
if (strcmp(lastval, "{")) {
- _cfsml_error("Reading record menubar_t; expected opening braces in line %d, got \"%s\"\n", *line, lastval);
+ _cfsml_error("Reading record CloneTable; expected opening braces in line %d, got \"%s\"\n", *line, lastval);
return CFSML_FAILURE;
};
closed = 0;
@@ -981,7 +867,35 @@ _cfsml_read_menubar_t(Common::SeekableReadStream *fh, menubar_t* save_struc, con
_cfsml_error("Expected token at line %d\n", *line);
return CFSML_FAILURE;
}
- if (!strcmp(token, "menus")) {
+ if (!strcmp(token, "entries_nr")) {
+#line 691 "engines/sci/engine/savegame.cfsml"
+ if (_cfsml_read_int(fh, (int*) &(save_struc->entries_nr), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_int() for entries_nr at line %d\n", *line);
+ return CFSML_FAILURE;
+ }
+ } else
+ if (!strcmp(token, "first_free")) {
+#line 691 "engines/sci/engine/savegame.cfsml"
+ if (_cfsml_read_int(fh, (int*) &(save_struc->first_free), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_int() for first_free at line %d\n", *line);
+ return CFSML_FAILURE;
+ }
+ } else
+ if (!strcmp(token, "entries_used")) {
+#line 691 "engines/sci/engine/savegame.cfsml"
+ if (_cfsml_read_int(fh, (int*) &(save_struc->entries_used), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_int() for entries_used at line %d\n", *line);
+ return CFSML_FAILURE;
+ }
+ } else
+ if (!strcmp(token, "max_entry")) {
+#line 691 "engines/sci/engine/savegame.cfsml"
+ if (_cfsml_read_int(fh, (int*) &(save_struc->max_entry), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_int() for max_entry at line %d\n", *line);
+ return CFSML_FAILURE;
+ }
+ } else
+ if (!strcmp(token, "table")) {
#line 605 "engines/sci/engine/savegame.cfsml"
if ((value[0] != '[') || (value[strlen(value) - 1] != '[')) {
_cfsml_error("Opening brackets expected at line %d\n", *line);
@@ -997,13 +911,13 @@ _cfsml_read_menubar_t(Common::SeekableReadStream *fh, menubar_t* save_struc, con
}
if (max) {
- save_struc->menus = (menu_t *)sci_malloc(max * sizeof(menu_t));
+ save_struc->table = (CloneEntry *)sci_malloc(max * sizeof(CloneEntry));
#ifdef SATISFY_PURIFY
- memset(save_struc->menus, 0, max * sizeof(menu_t));
+ memset(save_struc->table, 0, max * sizeof(CloneEntry));
#endif
- _cfsml_register_pointer(save_struc->menus);
+ _cfsml_register_pointer(save_struc->table);
} else
- save_struc->menus = NULL;
+ save_struc->table = NULL;
#line 640 "engines/sci/engine/savegame.cfsml"
done = i = 0;
do {
@@ -1017,18 +931,18 @@ _cfsml_read_menubar_t(Common::SeekableReadStream *fh, menubar_t* save_struc, con
_cfsml_error("More elements than space available (%d) in '%s' at line %d\n", max, token, *line);
return CFSML_FAILURE;
}
- if (_cfsml_read_menu_t(fh, &(save_struc->menus[i++]), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_menu_t() for menus[i++] at line %d\n", *line);
+ if (_cfsml_read_CloneEntry(fh, &(save_struc->table[i++]), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_CloneEntry() for table[i++] at line %d\n", *line);
return CFSML_FAILURE;
}
} else
done = 1;
} while (!done);
- save_struc->menus_nr = max ; // Set array size accordingly
+ save_struc->entries_nr = max ; // Set array size accordingly
} else
#line 700 "engines/sci/engine/savegame.cfsml"
{
- _cfsml_error("menubar_t: Assignment to invalid identifier '%s' in line %d\n", token, *line);
+ _cfsml_error("CloneTable: Assignment to invalid identifier '%s' in line %d\n", token, *line);
return CFSML_FAILURE;
}
}
@@ -1064,29 +978,61 @@ _cfsml_read_size_t(Common::SeekableReadStream *fh, size_t* save_struc, const cha
#line 396 "engines/sci/engine/savegame.cfsml"
static void
-_cfsml_write_list_entry_t(Common::WriteStream *fh, list_entry_t const * save_struc)
+_cfsml_write_SegmentId(Common::WriteStream *fh, SegmentId const * save_struc)
+{
+ WSprintf(fh, "%li", (long)*save_struc);
+}
+
+#line 487 "engines/sci/engine/savegame.cfsml"
+static int
+_cfsml_read_SegmentId(Common::SeekableReadStream *fh, SegmentId* save_struc, const char *lastval, int *line, int *hiteof)
+{
+#line 507 "engines/sci/engine/savegame.cfsml"
+ char *token;
+
+ *save_struc = strtol(lastval, &token, 0);
+ if ((*save_struc == 0) && (token == lastval)) {
+ _cfsml_error("strtol failed at line %d\n", *line);
+ return CFSML_FAILURE;
+ }
+ if (*token != 0) {
+ _cfsml_error("Non-integer encountered while parsing int value at line %d\n", *line);
+ return CFSML_FAILURE;
+ }
+ return CFSML_SUCCESS;
+}
+
+#line 396 "engines/sci/engine/savegame.cfsml"
+static void
+_cfsml_write_Node(Common::WriteStream *fh, Node const * save_struc)
{
#line 413 "engines/sci/engine/savegame.cfsml"
WSprintf(fh, "{\n");
- WSprintf(fh, "next_free = ");
- _cfsml_write_int(fh, (int const *) &(save_struc->next_free));
+ WSprintf(fh, "pred = ");
+ write_reg_t(fh, (reg_t const *) &(save_struc->pred));
WSprintf(fh, "\n");
- WSprintf(fh, "entry = ");
- _cfsml_write_list_t(fh, (list_t const *) &(save_struc->entry));
+ WSprintf(fh, "succ = ");
+ write_reg_t(fh, (reg_t const *) &(save_struc->succ));
+ WSprintf(fh, "\n");
+ WSprintf(fh, "key = ");
+ write_reg_t(fh, (reg_t const *) &(save_struc->key));
+ WSprintf(fh, "\n");
+ WSprintf(fh, "value = ");
+ write_reg_t(fh, (reg_t const *) &(save_struc->value));
WSprintf(fh, "\n");
WSprintf(fh, "}");
}
#line 487 "engines/sci/engine/savegame.cfsml"
static int
-_cfsml_read_list_entry_t(Common::SeekableReadStream *fh, list_entry_t* save_struc, const char *lastval, int *line, int *hiteof)
+_cfsml_read_Node(Common::SeekableReadStream *fh, Node* save_struc, const char *lastval, int *line, int *hiteof)
{
#line 542 "engines/sci/engine/savegame.cfsml"
char *token;
int assignment, closed;
if (strcmp(lastval, "{")) {
- _cfsml_error("Reading record list_entry_t; expected opening braces in line %d, got \"%s\"\n", *line, lastval);
+ _cfsml_error("Reading record Node; expected opening braces in line %d, got \"%s\"\n", *line, lastval);
return CFSML_FAILURE;
};
closed = 0;
@@ -1113,23 +1059,37 @@ _cfsml_read_list_entry_t(Common::SeekableReadStream *fh, list_entry_t* save_stru
_cfsml_error("Expected token at line %d\n", *line);
return CFSML_FAILURE;
}
- if (!strcmp(token, "next_free")) {
+ if (!strcmp(token, "pred")) {
#line 691 "engines/sci/engine/savegame.cfsml"
- if (_cfsml_read_int(fh, (int*) &(save_struc->next_free), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_int() for next_free at line %d\n", *line);
+ if (read_reg_t(fh, (reg_t*) &(save_struc->pred), value, line, hiteof)) {
+ _cfsml_error("Token expected by read_reg_t() for pred at line %d\n", *line);
return CFSML_FAILURE;
}
} else
- if (!strcmp(token, "entry")) {
+ if (!strcmp(token, "succ")) {
+#line 691 "engines/sci/engine/savegame.cfsml"
+ if (read_reg_t(fh, (reg_t*) &(save_struc->succ), value, line, hiteof)) {
+ _cfsml_error("Token expected by read_reg_t() for succ at line %d\n", *line);
+ return CFSML_FAILURE;
+ }
+ } else
+ if (!strcmp(token, "key")) {
#line 691 "engines/sci/engine/savegame.cfsml"
- if (_cfsml_read_list_t(fh, (list_t*) &(save_struc->entry), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_list_t() for entry at line %d\n", *line);
+ if (read_reg_t(fh, (reg_t*) &(save_struc->key), value, line, hiteof)) {
+ _cfsml_error("Token expected by read_reg_t() for key at line %d\n", *line);
+ return CFSML_FAILURE;
+ }
+ } else
+ if (!strcmp(token, "value")) {
+#line 691 "engines/sci/engine/savegame.cfsml"
+ if (read_reg_t(fh, (reg_t*) &(save_struc->value), value, line, hiteof)) {
+ _cfsml_error("Token expected by read_reg_t() for value at line %d\n", *line);
return CFSML_FAILURE;
}
} else
#line 700 "engines/sci/engine/savegame.cfsml"
{
- _cfsml_error("list_entry_t: Assignment to invalid identifier '%s' in line %d\n", token, *line);
+ _cfsml_error("Node: Assignment to invalid identifier '%s' in line %d\n", token, *line);
return CFSML_FAILURE;
}
}
@@ -1154,7 +1114,7 @@ _cfsml_write_SegManager(Common::WriteStream *fh, SegManager const * save_struc)
#line 440 "engines/sci/engine/savegame.cfsml"
WSprintf(fh, "[%d][\n", max);
for (int i = 0; i < min; i++) {
- write_mem_obj_tp(fh, &(save_struc->heap[i]));
+ write_MemObjPtr(fh, &(save_struc->heap[i]));
WSprintf(fh, "\n");
}
WSprintf(fh, "]");
@@ -1174,14 +1134,14 @@ _cfsml_write_SegManager(Common::WriteStream *fh, SegManager const * save_struc)
WSprintf(fh, "mem_allocated = ");
_cfsml_write_size_t(fh, (size_t const *) &(save_struc->mem_allocated));
WSprintf(fh, "\n");
- WSprintf(fh, "clones_seg_id = ");
- _cfsml_write_seg_id_t(fh, (seg_id_t const *) &(save_struc->clones_seg_id));
+ WSprintf(fh, "Clones_seg_id = ");
+ _cfsml_write_SegmentId(fh, (SegmentId const *) &(save_struc->Clones_seg_id));
WSprintf(fh, "\n");
- WSprintf(fh, "lists_seg_id = ");
- _cfsml_write_seg_id_t(fh, (seg_id_t const *) &(save_struc->lists_seg_id));
+ WSprintf(fh, "Lists_seg_id = ");
+ _cfsml_write_SegmentId(fh, (SegmentId const *) &(save_struc->Lists_seg_id));
WSprintf(fh, "\n");
- WSprintf(fh, "nodes_seg_id = ");
- _cfsml_write_seg_id_t(fh, (seg_id_t const *) &(save_struc->nodes_seg_id));
+ WSprintf(fh, "Nodes_seg_id = ");
+ _cfsml_write_SegmentId(fh, (SegmentId const *) &(save_struc->Nodes_seg_id));
WSprintf(fh, "\n");
WSprintf(fh, "}");
}
@@ -1265,8 +1225,8 @@ _cfsml_read_SegManager(Common::SeekableReadStream *fh, SegManager* save_struc, c
_cfsml_error("More elements than space available (%d) in '%s' at line %d\n", max, token, *line);
return CFSML_FAILURE;
}
- if (read_mem_obj_tp(fh, &(save_struc->heap[i++]), value, line, hiteof)) {
- _cfsml_error("Token expected by read_mem_obj_tp() for heap[i++] at line %d\n", *line);
+ if (read_MemObjPtr(fh, &(save_struc->heap[i++]), value, line, hiteof)) {
+ _cfsml_error("Token expected by read_MemObjPtr() for heap[i++] at line %d\n", *line);
return CFSML_FAILURE;
}
} else
@@ -1309,24 +1269,24 @@ _cfsml_read_SegManager(Common::SeekableReadStream *fh, SegManager* save_struc, c
return CFSML_FAILURE;
}
} else
- if (!strcmp(token, "clones_seg_id")) {
+ if (!strcmp(token, "Clones_seg_id")) {
#line 691 "engines/sci/engine/savegame.cfsml"
- if (_cfsml_read_seg_id_t(fh, (seg_id_t*) &(save_struc->clones_seg_id), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_seg_id_t() for clones_seg_id at line %d\n", *line);
+ if (_cfsml_read_SegmentId(fh, (SegmentId*) &(save_struc->Clones_seg_id), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_SegmentId() for Clones_seg_id at line %d\n", *line);
return CFSML_FAILURE;
}
} else
- if (!strcmp(token, "lists_seg_id")) {
+ if (!strcmp(token, "Lists_seg_id")) {
#line 691 "engines/sci/engine/savegame.cfsml"
- if (_cfsml_read_seg_id_t(fh, (seg_id_t*) &(save_struc->lists_seg_id), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_seg_id_t() for lists_seg_id at line %d\n", *line);
+ if (_cfsml_read_SegmentId(fh, (SegmentId*) &(save_struc->Lists_seg_id), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_SegmentId() for Lists_seg_id at line %d\n", *line);
return CFSML_FAILURE;
}
} else
- if (!strcmp(token, "nodes_seg_id")) {
+ if (!strcmp(token, "Nodes_seg_id")) {
#line 691 "engines/sci/engine/savegame.cfsml"
- if (_cfsml_read_seg_id_t(fh, (seg_id_t*) &(save_struc->nodes_seg_id), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_seg_id_t() for nodes_seg_id at line %d\n", *line);
+ if (_cfsml_read_SegmentId(fh, (SegmentId*) &(save_struc->Nodes_seg_id), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_SegmentId() for Nodes_seg_id at line %d\n", *line);
return CFSML_FAILURE;
}
} else
@@ -1683,89 +1643,14 @@ _cfsml_read_menu_item_t(Common::SeekableReadStream *fh, menu_item_t* save_struc,
#line 396 "engines/sci/engine/savegame.cfsml"
static void
-_cfsml_write_node_entry_t(Common::WriteStream *fh, node_entry_t const * save_struc)
-{
-#line 413 "engines/sci/engine/savegame.cfsml"
- WSprintf(fh, "{\n");
- WSprintf(fh, "next_free = ");
- _cfsml_write_int(fh, (int const *) &(save_struc->next_free));
- WSprintf(fh, "\n");
- WSprintf(fh, "entry = ");
- _cfsml_write_node_t(fh, (node_t const *) &(save_struc->entry));
- WSprintf(fh, "\n");
- WSprintf(fh, "}");
-}
-
-#line 487 "engines/sci/engine/savegame.cfsml"
-static int
-_cfsml_read_node_entry_t(Common::SeekableReadStream *fh, node_entry_t* save_struc, const char *lastval, int *line, int *hiteof)
-{
-#line 542 "engines/sci/engine/savegame.cfsml"
- char *token;
- int assignment, closed;
-
- if (strcmp(lastval, "{")) {
- _cfsml_error("Reading record node_entry_t; expected opening braces in line %d, got \"%s\"\n", *line, lastval);
- return CFSML_FAILURE;
- };
- closed = 0;
- do {
- const char *value;
- token = _cfsml_get_identifier(fh, line, hiteof, &assignment);
-
- if (!token) {
- _cfsml_error("Expected token at line %d\n", *line);
- return CFSML_FAILURE;
- }
- if (!assignment) {
- if (!strcmp(token, "}"))
- closed = 1;
- else {
- _cfsml_error("Expected assignment or closing braces in line %d\n", *line);
- return CFSML_FAILURE;
- }
- } else {
- value = "";
- while (!value || !strcmp(value, ""))
- value = _cfsml_get_value(fh, line, hiteof);
- if (!value) {
- _cfsml_error("Expected token at line %d\n", *line);
- return CFSML_FAILURE;
- }
- if (!strcmp(token, "next_free")) {
-#line 691 "engines/sci/engine/savegame.cfsml"
- if (_cfsml_read_int(fh, (int*) &(save_struc->next_free), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_int() for next_free at line %d\n", *line);
- return CFSML_FAILURE;
- }
- } else
- if (!strcmp(token, "entry")) {
-#line 691 "engines/sci/engine/savegame.cfsml"
- if (_cfsml_read_node_t(fh, (node_t*) &(save_struc->entry), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_node_t() for entry at line %d\n", *line);
- return CFSML_FAILURE;
- }
- } else
-#line 700 "engines/sci/engine/savegame.cfsml"
- {
- _cfsml_error("node_entry_t: Assignment to invalid identifier '%s' in line %d\n", token, *line);
- return CFSML_FAILURE;
- }
- }
- } while (!closed); // Until closing braces are hit
- return CFSML_SUCCESS;
-}
-
-#line 396 "engines/sci/engine/savegame.cfsml"
-static void
-_cfsml_write_seg_id_t(Common::WriteStream *fh, seg_id_t const * save_struc)
+_cfsml_write_bool(Common::WriteStream *fh, bool const * save_struc)
{
WSprintf(fh, "%li", (long)*save_struc);
}
#line 487 "engines/sci/engine/savegame.cfsml"
static int
-_cfsml_read_seg_id_t(Common::SeekableReadStream *fh, seg_id_t* save_struc, const char *lastval, int *line, int *hiteof)
+_cfsml_read_bool(Common::SeekableReadStream *fh, bool* save_struc, const char *lastval, int *line, int *hiteof)
{
#line 507 "engines/sci/engine/savegame.cfsml"
char *token;
@@ -1784,25 +1669,31 @@ _cfsml_read_seg_id_t(Common::SeekableReadStream *fh, seg_id_t* save_struc, const
#line 396 "engines/sci/engine/savegame.cfsml"
static void
-_cfsml_write_dynmem_t(Common::WriteStream *fh, dynmem_t const * save_struc)
+_cfsml_write_NodeTable(Common::WriteStream *fh, NodeTable const * save_struc)
{
#line 413 "engines/sci/engine/savegame.cfsml"
WSprintf(fh, "{\n");
- WSprintf(fh, "size = ");
- _cfsml_write_int(fh, (int const *) &(save_struc->size));
+ WSprintf(fh, "entries_nr = ");
+ _cfsml_write_int(fh, (int const *) &(save_struc->entries_nr));
WSprintf(fh, "\n");
- WSprintf(fh, "description = ");
- _cfsml_write_string(fh, (const char * const *) &(save_struc->description));
+ WSprintf(fh, "first_free = ");
+ _cfsml_write_int(fh, (int const *) &(save_struc->first_free));
WSprintf(fh, "\n");
- WSprintf(fh, "buf = ");
+ WSprintf(fh, "entries_used = ");
+ _cfsml_write_int(fh, (int const *) &(save_struc->entries_used));
+ WSprintf(fh, "\n");
+ WSprintf(fh, "max_entry = ");
+ _cfsml_write_int(fh, (int const *) &(save_struc->max_entry));
+ WSprintf(fh, "\n");
+ WSprintf(fh, "table = ");
int min, max;
- min = max = save_struc->size;
- if (!save_struc->buf)
+ min = max = save_struc->entries_nr;
+ if (!save_struc->table)
min = max = 0; /* Don't write if it points to NULL */
#line 440 "engines/sci/engine/savegame.cfsml"
WSprintf(fh, "[%d][\n", max);
for (int i = 0; i < min; i++) {
- _cfsml_write_byte(fh, &(save_struc->buf[i]));
+ _cfsml_write_NodeEntry(fh, &(save_struc->table[i]));
WSprintf(fh, "\n");
}
WSprintf(fh, "]");
@@ -1812,14 +1703,14 @@ _cfsml_write_dynmem_t(Common::WriteStream *fh, dynmem_t const * save_struc)
#line 487 "engines/sci/engine/savegame.cfsml"
static int
-_cfsml_read_dynmem_t(Common::SeekableReadStream *fh, dynmem_t* save_struc, const char *lastval, int *line, int *hiteof)
+_cfsml_read_NodeTable(Common::SeekableReadStream *fh, NodeTable* save_struc, const char *lastval, int *line, int *hiteof)
{
#line 542 "engines/sci/engine/savegame.cfsml"
char *token;
int assignment, closed;
if (strcmp(lastval, "{")) {
- _cfsml_error("Reading record dynmem_t; expected opening braces in line %d, got \"%s\"\n", *line, lastval);
+ _cfsml_error("Reading record NodeTable; expected opening braces in line %d, got \"%s\"\n", *line, lastval);
return CFSML_FAILURE;
};
closed = 0;
@@ -1846,21 +1737,35 @@ _cfsml_read_dynmem_t(Common::SeekableReadStream *fh, dynmem_t* save_struc, const
_cfsml_error("Expected token at line %d\n", *line);
return CFSML_FAILURE;
}
- if (!strcmp(token, "size")) {
+ if (!strcmp(token, "entries_nr")) {
#line 691 "engines/sci/engine/savegame.cfsml"
- if (_cfsml_read_int(fh, (int*) &(save_struc->size), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_int() for size at line %d\n", *line);
+ if (_cfsml_read_int(fh, (int*) &(save_struc->entries_nr), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_int() for entries_nr at line %d\n", *line);
return CFSML_FAILURE;
}
} else
- if (!strcmp(token, "description")) {
+ if (!strcmp(token, "first_free")) {
#line 691 "engines/sci/engine/savegame.cfsml"
- if (_cfsml_read_string(fh, (char **) &(save_struc->description), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_string() for description at line %d\n", *line);
+ if (_cfsml_read_int(fh, (int*) &(save_struc->first_free), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_int() for first_free at line %d\n", *line);
return CFSML_FAILURE;
}
} else
- if (!strcmp(token, "buf")) {
+ if (!strcmp(token, "entries_used")) {
+#line 691 "engines/sci/engine/savegame.cfsml"
+ if (_cfsml_read_int(fh, (int*) &(save_struc->entries_used), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_int() for entries_used at line %d\n", *line);
+ return CFSML_FAILURE;
+ }
+ } else
+ if (!strcmp(token, "max_entry")) {
+#line 691 "engines/sci/engine/savegame.cfsml"
+ if (_cfsml_read_int(fh, (int*) &(save_struc->max_entry), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_int() for max_entry at line %d\n", *line);
+ return CFSML_FAILURE;
+ }
+ } else
+ if (!strcmp(token, "table")) {
#line 605 "engines/sci/engine/savegame.cfsml"
if ((value[0] != '[') || (value[strlen(value) - 1] != '[')) {
_cfsml_error("Opening brackets expected at line %d\n", *line);
@@ -1876,13 +1781,13 @@ _cfsml_read_dynmem_t(Common::SeekableReadStream *fh, dynmem_t* save_struc, const
}
if (max) {
- save_struc->buf = (byte *)sci_malloc(max * sizeof(byte));
+ save_struc->table = (NodeEntry *)sci_malloc(max * sizeof(NodeEntry));
#ifdef SATISFY_PURIFY
- memset(save_struc->buf, 0, max * sizeof(byte));
+ memset(save_struc->table, 0, max * sizeof(NodeEntry));
#endif
- _cfsml_register_pointer(save_struc->buf);
+ _cfsml_register_pointer(save_struc->table);
} else
- save_struc->buf = NULL;
+ save_struc->table = NULL;
#line 640 "engines/sci/engine/savegame.cfsml"
done = i = 0;
do {
@@ -1896,18 +1801,18 @@ _cfsml_read_dynmem_t(Common::SeekableReadStream *fh, dynmem_t* save_struc, const
_cfsml_error("More elements than space available (%d) in '%s' at line %d\n", max, token, *line);
return CFSML_FAILURE;
}
- if (_cfsml_read_byte(fh, &(save_struc->buf[i++]), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_byte() for buf[i++] at line %d\n", *line);
+ if (_cfsml_read_NodeEntry(fh, &(save_struc->table[i++]), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_NodeEntry() for table[i++] at line %d\n", *line);
return CFSML_FAILURE;
}
} else
done = 1;
} while (!done);
- save_struc->size = max ; // Set array size accordingly
+ save_struc->entries_nr = max ; // Set array size accordingly
} else
#line 700 "engines/sci/engine/savegame.cfsml"
{
- _cfsml_error("dynmem_t: Assignment to invalid identifier '%s' in line %d\n", token, *line);
+ _cfsml_error("NodeTable: Assignment to invalid identifier '%s' in line %d\n", token, *line);
return CFSML_FAILURE;
}
}
@@ -1917,42 +1822,32 @@ _cfsml_read_dynmem_t(Common::SeekableReadStream *fh, dynmem_t* save_struc, const
#line 396 "engines/sci/engine/savegame.cfsml"
static void
-_cfsml_write_local_variables_t(Common::WriteStream *fh, local_variables_t const * save_struc)
+_cfsml_write_SystemString(Common::WriteStream *fh, SystemString const * save_struc)
{
#line 413 "engines/sci/engine/savegame.cfsml"
WSprintf(fh, "{\n");
- WSprintf(fh, "script_id = ");
- _cfsml_write_int(fh, (int const *) &(save_struc->script_id));
+ WSprintf(fh, "name = ");
+ _cfsml_write_string(fh, (const char * const *) &(save_struc->name));
WSprintf(fh, "\n");
- WSprintf(fh, "nr = ");
- _cfsml_write_int(fh, (int const *) &(save_struc->nr));
+ WSprintf(fh, "max_size = ");
+ _cfsml_write_int(fh, (int const *) &(save_struc->max_size));
WSprintf(fh, "\n");
- WSprintf(fh, "locals = ");
- int min, max;
- min = max = save_struc->nr;
- if (!save_struc->locals)
- min = max = 0; /* Don't write if it points to NULL */
-#line 440 "engines/sci/engine/savegame.cfsml"
- WSprintf(fh, "[%d][\n", max);
- for (int i = 0; i < min; i++) {
- write_reg_t(fh, &(save_struc->locals[i]));
- WSprintf(fh, "\n");
- }
- WSprintf(fh, "]");
+ WSprintf(fh, "value = ");
+ _cfsml_write_string(fh, (const char * const *) &(save_struc->value));
WSprintf(fh, "\n");
WSprintf(fh, "}");
}
#line 487 "engines/sci/engine/savegame.cfsml"
static int
-_cfsml_read_local_variables_t(Common::SeekableReadStream *fh, local_variables_t* save_struc, const char *lastval, int *line, int *hiteof)
+_cfsml_read_SystemString(Common::SeekableReadStream *fh, SystemString* save_struc, const char *lastval, int *line, int *hiteof)
{
#line 542 "engines/sci/engine/savegame.cfsml"
char *token;
int assignment, closed;
if (strcmp(lastval, "{")) {
- _cfsml_error("Reading record local_variables_t; expected opening braces in line %d, got \"%s\"\n", *line, lastval);
+ _cfsml_error("Reading record SystemString; expected opening braces in line %d, got \"%s\"\n", *line, lastval);
return CFSML_FAILURE;
};
closed = 0;
@@ -1979,68 +1874,30 @@ _cfsml_read_local_variables_t(Common::SeekableReadStream *fh, local_variables_t*
_cfsml_error("Expected token at line %d\n", *line);
return CFSML_FAILURE;
}
- if (!strcmp(token, "script_id")) {
+ if (!strcmp(token, "name")) {
#line 691 "engines/sci/engine/savegame.cfsml"
- if (_cfsml_read_int(fh, (int*) &(save_struc->script_id), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_int() for script_id at line %d\n", *line);
+ if (_cfsml_read_string(fh, (char **) &(save_struc->name), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_string() for name at line %d\n", *line);
return CFSML_FAILURE;
}
} else
- if (!strcmp(token, "nr")) {
+ if (!strcmp(token, "max_size")) {
#line 691 "engines/sci/engine/savegame.cfsml"
- if (_cfsml_read_int(fh, (int*) &(save_struc->nr), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_int() for nr at line %d\n", *line);
+ if (_cfsml_read_int(fh, (int*) &(save_struc->max_size), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_int() for max_size at line %d\n", *line);
return CFSML_FAILURE;
}
} else
- if (!strcmp(token, "locals")) {
-#line 605 "engines/sci/engine/savegame.cfsml"
- if ((value[0] != '[') || (value[strlen(value) - 1] != '[')) {
- _cfsml_error("Opening brackets expected at line %d\n", *line);
- return CFSML_FAILURE;
- }
- int max,done,i;
-#line 616 "engines/sci/engine/savegame.cfsml"
- // Prepare to restore dynamic array
- max = strtol(value + 1, NULL, 0);
- if (max < 0) {
- _cfsml_error("Invalid number of elements to allocate for dynamic array '%s' at line %d\n", token, *line);
- return CFSML_FAILURE;
- }
-
- if (max) {
- save_struc->locals = (reg_t *)sci_malloc(max * sizeof(reg_t));
-#ifdef SATISFY_PURIFY
- memset(save_struc->locals, 0, max * sizeof(reg_t));
-#endif
- _cfsml_register_pointer(save_struc->locals);
- } else
- save_struc->locals = NULL;
-#line 640 "engines/sci/engine/savegame.cfsml"
- done = i = 0;
- do {
- if (!(value = _cfsml_get_identifier(fh, line, hiteof, NULL))) {
-#line 648 "engines/sci/engine/savegame.cfsml"
- _cfsml_error("Token expected at line %d\n", *line);
- return 1;
- }
- if (strcmp(value, "]")) {
- if (i == max) {
- _cfsml_error("More elements than space available (%d) in '%s' at line %d\n", max, token, *line);
- return CFSML_FAILURE;
- }
- if (read_reg_t(fh, &(save_struc->locals[i++]), value, line, hiteof)) {
- _cfsml_error("Token expected by read_reg_t() for locals[i++] at line %d\n", *line);
+ if (!strcmp(token, "value")) {
+#line 691 "engines/sci/engine/savegame.cfsml"
+ if (_cfsml_read_string(fh, (char **) &(save_struc->value), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_string() for value at line %d\n", *line);
return CFSML_FAILURE;
}
} else
- done = 1;
- } while (!done);
- save_struc->nr = max ; // Set array size accordingly
- } else
#line 700 "engines/sci/engine/savegame.cfsml"
{
- _cfsml_error("local_variables_t: Assignment to invalid identifier '%s' in line %d\n", token, *line);
+ _cfsml_error("SystemString: Assignment to invalid identifier '%s' in line %d\n", token, *line);
return CFSML_FAILURE;
}
}
@@ -2050,14 +1907,14 @@ _cfsml_read_local_variables_t(Common::SeekableReadStream *fh, local_variables_t*
#line 396 "engines/sci/engine/savegame.cfsml"
static void
-_cfsml_write_bool(Common::WriteStream *fh, bool const * save_struc)
+_cfsml_write_byte(Common::WriteStream *fh, byte const * save_struc)
{
WSprintf(fh, "%li", (long)*save_struc);
}
#line 487 "engines/sci/engine/savegame.cfsml"
static int
-_cfsml_read_bool(Common::SeekableReadStream *fh, bool* save_struc, const char *lastval, int *line, int *hiteof)
+_cfsml_read_byte(Common::SeekableReadStream *fh, byte* save_struc, const char *lastval, int *line, int *hiteof)
{
#line 507 "engines/sci/engine/savegame.cfsml"
char *token;
@@ -2076,7 +1933,7 @@ _cfsml_read_bool(Common::SeekableReadStream *fh, bool* save_struc, const char *l
#line 396 "engines/sci/engine/savegame.cfsml"
static void
-_cfsml_write_node_table_t(Common::WriteStream *fh, node_table_t const * save_struc)
+_cfsml_write_ListTable(Common::WriteStream *fh, ListTable const * save_struc)
{
#line 413 "engines/sci/engine/savegame.cfsml"
WSprintf(fh, "{\n");
@@ -2100,7 +1957,7 @@ _cfsml_write_node_table_t(Common::WriteStream *fh, node_table_t const * save_str
#line 440 "engines/sci/engine/savegame.cfsml"
WSprintf(fh, "[%d][\n", max);
for (int i = 0; i < min; i++) {
- _cfsml_write_node_entry_t(fh, &(save_struc->table[i]));
+ _cfsml_write_ListEntry(fh, &(save_struc->table[i]));
WSprintf(fh, "\n");
}
WSprintf(fh, "]");
@@ -2110,14 +1967,14 @@ _cfsml_write_node_table_t(Common::WriteStream *fh, node_table_t const * save_str
#line 487 "engines/sci/engine/savegame.cfsml"
static int
-_cfsml_read_node_table_t(Common::SeekableReadStream *fh, node_table_t* save_struc, const char *lastval, int *line, int *hiteof)
+_cfsml_read_ListTable(Common::SeekableReadStream *fh, ListTable* save_struc, const char *lastval, int *line, int *hiteof)
{
#line 542 "engines/sci/engine/savegame.cfsml"
char *token;
int assignment, closed;
if (strcmp(lastval, "{")) {
- _cfsml_error("Reading record node_table_t; expected opening braces in line %d, got \"%s\"\n", *line, lastval);
+ _cfsml_error("Reading record ListTable; expected opening braces in line %d, got \"%s\"\n", *line, lastval);
return CFSML_FAILURE;
};
closed = 0;
@@ -2188,9 +2045,9 @@ _cfsml_read_node_table_t(Common::SeekableReadStream *fh, node_table_t* save_stru
}
if (max) {
- save_struc->table = (node_entry_t *)sci_malloc(max * sizeof(node_entry_t));
+ save_struc->table = (ListEntry *)sci_malloc(max * sizeof(ListEntry));
#ifdef SATISFY_PURIFY
- memset(save_struc->table, 0, max * sizeof(node_entry_t));
+ memset(save_struc->table, 0, max * sizeof(ListEntry));
#endif
_cfsml_register_pointer(save_struc->table);
} else
@@ -2208,8 +2065,8 @@ _cfsml_read_node_table_t(Common::SeekableReadStream *fh, node_table_t* save_stru
_cfsml_error("More elements than space available (%d) in '%s' at line %d\n", max, token, *line);
return CFSML_FAILURE;
}
- if (_cfsml_read_node_entry_t(fh, &(save_struc->table[i++]), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_node_entry_t() for table[i++] at line %d\n", *line);
+ if (_cfsml_read_ListEntry(fh, &(save_struc->table[i++]), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_ListEntry() for table[i++] at line %d\n", *line);
return CFSML_FAILURE;
}
} else
@@ -2219,7 +2076,7 @@ _cfsml_read_node_table_t(Common::SeekableReadStream *fh, node_table_t* save_stru
} else
#line 700 "engines/sci/engine/savegame.cfsml"
{
- _cfsml_error("node_table_t: Assignment to invalid identifier '%s' in line %d\n", token, *line);
+ _cfsml_error("ListTable: Assignment to invalid identifier '%s' in line %d\n", token, *line);
return CFSML_FAILURE;
}
}
@@ -2229,146 +2086,29 @@ _cfsml_read_node_table_t(Common::SeekableReadStream *fh, node_table_t* save_stru
#line 396 "engines/sci/engine/savegame.cfsml"
static void
-_cfsml_write_SystemString(Common::WriteStream *fh, SystemString const * save_struc)
+_cfsml_write_Class(Common::WriteStream *fh, Class const * save_struc)
{
#line 413 "engines/sci/engine/savegame.cfsml"
WSprintf(fh, "{\n");
- WSprintf(fh, "name = ");
- _cfsml_write_string(fh, (const char * const *) &(save_struc->name));
- WSprintf(fh, "\n");
- WSprintf(fh, "max_size = ");
- _cfsml_write_int(fh, (int const *) &(save_struc->max_size));
- WSprintf(fh, "\n");
- WSprintf(fh, "value = ");
- _cfsml_write_string(fh, (const char * const *) &(save_struc->value));
- WSprintf(fh, "\n");
- WSprintf(fh, "}");
-}
-
-#line 487 "engines/sci/engine/savegame.cfsml"
-static int
-_cfsml_read_SystemString(Common::SeekableReadStream *fh, SystemString* save_struc, const char *lastval, int *line, int *hiteof)
-{
-#line 542 "engines/sci/engine/savegame.cfsml"
- char *token;
- int assignment, closed;
-
- if (strcmp(lastval, "{")) {
- _cfsml_error("Reading record SystemString; expected opening braces in line %d, got \"%s\"\n", *line, lastval);
- return CFSML_FAILURE;
- };
- closed = 0;
- do {
- const char *value;
- token = _cfsml_get_identifier(fh, line, hiteof, &assignment);
-
- if (!token) {
- _cfsml_error("Expected token at line %d\n", *line);
- return CFSML_FAILURE;
- }
- if (!assignment) {
- if (!strcmp(token, "}"))
- closed = 1;
- else {
- _cfsml_error("Expected assignment or closing braces in line %d\n", *line);
- return CFSML_FAILURE;
- }
- } else {
- value = "";
- while (!value || !strcmp(value, ""))
- value = _cfsml_get_value(fh, line, hiteof);
- if (!value) {
- _cfsml_error("Expected token at line %d\n", *line);
- return CFSML_FAILURE;
- }
- if (!strcmp(token, "name")) {
-#line 691 "engines/sci/engine/savegame.cfsml"
- if (_cfsml_read_string(fh, (char **) &(save_struc->name), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_string() for name at line %d\n", *line);
- return CFSML_FAILURE;
- }
- } else
- if (!strcmp(token, "max_size")) {
-#line 691 "engines/sci/engine/savegame.cfsml"
- if (_cfsml_read_int(fh, (int*) &(save_struc->max_size), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_int() for max_size at line %d\n", *line);
- return CFSML_FAILURE;
- }
- } else
- if (!strcmp(token, "value")) {
-#line 691 "engines/sci/engine/savegame.cfsml"
- if (_cfsml_read_string(fh, (char **) &(save_struc->value), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_string() for value at line %d\n", *line);
- return CFSML_FAILURE;
- }
- } else
-#line 700 "engines/sci/engine/savegame.cfsml"
- {
- _cfsml_error("SystemString: Assignment to invalid identifier '%s' in line %d\n", token, *line);
- return CFSML_FAILURE;
- }
- }
- } while (!closed); // Until closing braces are hit
- return CFSML_SUCCESS;
-}
-
-#line 396 "engines/sci/engine/savegame.cfsml"
-static void
-_cfsml_write_byte(Common::WriteStream *fh, byte const * save_struc)
-{
- WSprintf(fh, "%li", (long)*save_struc);
-}
-
-#line 487 "engines/sci/engine/savegame.cfsml"
-static int
-_cfsml_read_byte(Common::SeekableReadStream *fh, byte* save_struc, const char *lastval, int *line, int *hiteof)
-{
-#line 507 "engines/sci/engine/savegame.cfsml"
- char *token;
-
- *save_struc = strtol(lastval, &token, 0);
- if ((*save_struc == 0) && (token == lastval)) {
- _cfsml_error("strtol failed at line %d\n", *line);
- return CFSML_FAILURE;
- }
- if (*token != 0) {
- _cfsml_error("Non-integer encountered while parsing int value at line %d\n", *line);
- return CFSML_FAILURE;
- }
- return CFSML_SUCCESS;
-}
-
-#line 396 "engines/sci/engine/savegame.cfsml"
-static void
-_cfsml_write_node_t(Common::WriteStream *fh, node_t const * save_struc)
-{
-#line 413 "engines/sci/engine/savegame.cfsml"
- WSprintf(fh, "{\n");
- WSprintf(fh, "pred = ");
- write_reg_t(fh, (reg_t const *) &(save_struc->pred));
- WSprintf(fh, "\n");
- WSprintf(fh, "succ = ");
- write_reg_t(fh, (reg_t const *) &(save_struc->succ));
- WSprintf(fh, "\n");
- WSprintf(fh, "key = ");
- write_reg_t(fh, (reg_t const *) &(save_struc->key));
+ WSprintf(fh, "script = ");
+ _cfsml_write_int(fh, (int const *) &(save_struc->script));
WSprintf(fh, "\n");
- WSprintf(fh, "value = ");
- write_reg_t(fh, (reg_t const *) &(save_struc->value));
+ WSprintf(fh, "reg = ");
+ write_reg_t(fh, (reg_t const *) &(save_struc->reg));
WSprintf(fh, "\n");
WSprintf(fh, "}");
}
#line 487 "engines/sci/engine/savegame.cfsml"
static int
-_cfsml_read_node_t(Common::SeekableReadStream *fh, node_t* save_struc, const char *lastval, int *line, int *hiteof)
+_cfsml_read_Class(Common::SeekableReadStream *fh, Class* save_struc, const char *lastval, int *line, int *hiteof)
{
#line 542 "engines/sci/engine/savegame.cfsml"
char *token;
int assignment, closed;
if (strcmp(lastval, "{")) {
- _cfsml_error("Reading record node_t; expected opening braces in line %d, got \"%s\"\n", *line, lastval);
+ _cfsml_error("Reading record Class; expected opening braces in line %d, got \"%s\"\n", *line, lastval);
return CFSML_FAILURE;
};
closed = 0;
@@ -2395,37 +2135,23 @@ _cfsml_read_node_t(Common::SeekableReadStream *fh, node_t* save_struc, const cha
_cfsml_error("Expected token at line %d\n", *line);
return CFSML_FAILURE;
}
- if (!strcmp(token, "pred")) {
-#line 691 "engines/sci/engine/savegame.cfsml"
- if (read_reg_t(fh, (reg_t*) &(save_struc->pred), value, line, hiteof)) {
- _cfsml_error("Token expected by read_reg_t() for pred at line %d\n", *line);
- return CFSML_FAILURE;
- }
- } else
- if (!strcmp(token, "succ")) {
-#line 691 "engines/sci/engine/savegame.cfsml"
- if (read_reg_t(fh, (reg_t*) &(save_struc->succ), value, line, hiteof)) {
- _cfsml_error("Token expected by read_reg_t() for succ at line %d\n", *line);
- return CFSML_FAILURE;
- }
- } else
- if (!strcmp(token, "key")) {
+ if (!strcmp(token, "script")) {
#line 691 "engines/sci/engine/savegame.cfsml"
- if (read_reg_t(fh, (reg_t*) &(save_struc->key), value, line, hiteof)) {
- _cfsml_error("Token expected by read_reg_t() for key at line %d\n", *line);
+ if (_cfsml_read_int(fh, (int*) &(save_struc->script), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_int() for script at line %d\n", *line);
return CFSML_FAILURE;
}
} else
- if (!strcmp(token, "value")) {
+ if (!strcmp(token, "reg")) {
#line 691 "engines/sci/engine/savegame.cfsml"
- if (read_reg_t(fh, (reg_t*) &(save_struc->value), value, line, hiteof)) {
- _cfsml_error("Token expected by read_reg_t() for value at line %d\n", *line);
+ if (read_reg_t(fh, (reg_t*) &(save_struc->reg), value, line, hiteof)) {
+ _cfsml_error("Token expected by read_reg_t() for reg at line %d\n", *line);
return CFSML_FAILURE;
}
} else
#line 700 "engines/sci/engine/savegame.cfsml"
{
- _cfsml_error("node_t: Assignment to invalid identifier '%s' in line %d\n", token, *line);
+ _cfsml_error("Class: Assignment to invalid identifier '%s' in line %d\n", token, *line);
return CFSML_FAILURE;
}
}
@@ -2531,48 +2257,55 @@ _cfsml_read_SystemStrings(Common::SeekableReadStream *fh, SystemStrings* save_st
#line 396 "engines/sci/engine/savegame.cfsml"
static void
-_cfsml_write_list_table_t(Common::WriteStream *fh, list_table_t const * save_struc)
+_cfsml_write_song_handle_t(Common::WriteStream *fh, song_handle_t const * save_struc)
+{
+ WSprintf(fh, "%li", (long)*save_struc);
+}
+
+#line 487 "engines/sci/engine/savegame.cfsml"
+static int
+_cfsml_read_song_handle_t(Common::SeekableReadStream *fh, song_handle_t* save_struc, const char *lastval, int *line, int *hiteof)
+{
+#line 507 "engines/sci/engine/savegame.cfsml"
+ char *token;
+
+ *save_struc = strtol(lastval, &token, 0);
+ if ((*save_struc == 0) && (token == lastval)) {
+ _cfsml_error("strtol failed at line %d\n", *line);
+ return CFSML_FAILURE;
+ }
+ if (*token != 0) {
+ _cfsml_error("Non-integer encountered while parsing int value at line %d\n", *line);
+ return CFSML_FAILURE;
+ }
+ return CFSML_SUCCESS;
+}
+
+#line 396 "engines/sci/engine/savegame.cfsml"
+static void
+_cfsml_write_List(Common::WriteStream *fh, List const * save_struc)
{
#line 413 "engines/sci/engine/savegame.cfsml"
WSprintf(fh, "{\n");
- WSprintf(fh, "entries_nr = ");
- _cfsml_write_int(fh, (int const *) &(save_struc->entries_nr));
- WSprintf(fh, "\n");
- WSprintf(fh, "first_free = ");
- _cfsml_write_int(fh, (int const *) &(save_struc->first_free));
- WSprintf(fh, "\n");
- WSprintf(fh, "entries_used = ");
- _cfsml_write_int(fh, (int const *) &(save_struc->entries_used));
- WSprintf(fh, "\n");
- WSprintf(fh, "max_entry = ");
- _cfsml_write_int(fh, (int const *) &(save_struc->max_entry));
+ WSprintf(fh, "first = ");
+ write_reg_t(fh, (reg_t const *) &(save_struc->first));
WSprintf(fh, "\n");
- WSprintf(fh, "table = ");
- int min, max;
- min = max = save_struc->entries_nr;
- if (!save_struc->table)
- min = max = 0; /* Don't write if it points to NULL */
-#line 440 "engines/sci/engine/savegame.cfsml"
- WSprintf(fh, "[%d][\n", max);
- for (int i = 0; i < min; i++) {
- _cfsml_write_list_entry_t(fh, &(save_struc->table[i]));
- WSprintf(fh, "\n");
- }
- WSprintf(fh, "]");
+ WSprintf(fh, "last = ");
+ write_reg_t(fh, (reg_t const *) &(save_struc->last));
WSprintf(fh, "\n");
WSprintf(fh, "}");
}
#line 487 "engines/sci/engine/savegame.cfsml"
static int
-_cfsml_read_list_table_t(Common::SeekableReadStream *fh, list_table_t* save_struc, const char *lastval, int *line, int *hiteof)
+_cfsml_read_List(Common::SeekableReadStream *fh, List* save_struc, const char *lastval, int *line, int *hiteof)
{
#line 542 "engines/sci/engine/savegame.cfsml"
char *token;
int assignment, closed;
if (strcmp(lastval, "{")) {
- _cfsml_error("Reading record list_table_t; expected opening braces in line %d, got \"%s\"\n", *line, lastval);
+ _cfsml_error("Reading record List; expected opening braces in line %d, got \"%s\"\n", *line, lastval);
return CFSML_FAILURE;
};
closed = 0;
@@ -2599,82 +2332,23 @@ _cfsml_read_list_table_t(Common::SeekableReadStream *fh, list_table_t* save_stru
_cfsml_error("Expected token at line %d\n", *line);
return CFSML_FAILURE;
}
- if (!strcmp(token, "entries_nr")) {
-#line 691 "engines/sci/engine/savegame.cfsml"
- if (_cfsml_read_int(fh, (int*) &(save_struc->entries_nr), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_int() for entries_nr at line %d\n", *line);
- return CFSML_FAILURE;
- }
- } else
- if (!strcmp(token, "first_free")) {
-#line 691 "engines/sci/engine/savegame.cfsml"
- if (_cfsml_read_int(fh, (int*) &(save_struc->first_free), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_int() for first_free at line %d\n", *line);
- return CFSML_FAILURE;
- }
- } else
- if (!strcmp(token, "entries_used")) {
+ if (!strcmp(token, "first")) {
#line 691 "engines/sci/engine/savegame.cfsml"
- if (_cfsml_read_int(fh, (int*) &(save_struc->entries_used), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_int() for entries_used at line %d\n", *line);
+ if (read_reg_t(fh, (reg_t*) &(save_struc->first), value, line, hiteof)) {
+ _cfsml_error("Token expected by read_reg_t() for first at line %d\n", *line);
return CFSML_FAILURE;
}
} else
- if (!strcmp(token, "max_entry")) {
+ if (!strcmp(token, "last")) {
#line 691 "engines/sci/engine/savegame.cfsml"
- if (_cfsml_read_int(fh, (int*) &(save_struc->max_entry), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_int() for max_entry at line %d\n", *line);
- return CFSML_FAILURE;
- }
- } else
- if (!strcmp(token, "table")) {
-#line 605 "engines/sci/engine/savegame.cfsml"
- if ((value[0] != '[') || (value[strlen(value) - 1] != '[')) {
- _cfsml_error("Opening brackets expected at line %d\n", *line);
- return CFSML_FAILURE;
- }
- int max,done,i;
-#line 616 "engines/sci/engine/savegame.cfsml"
- // Prepare to restore dynamic array
- max = strtol(value + 1, NULL, 0);
- if (max < 0) {
- _cfsml_error("Invalid number of elements to allocate for dynamic array '%s' at line %d\n", token, *line);
- return CFSML_FAILURE;
- }
-
- if (max) {
- save_struc->table = (list_entry_t *)sci_malloc(max * sizeof(list_entry_t));
-#ifdef SATISFY_PURIFY
- memset(save_struc->table, 0, max * sizeof(list_entry_t));
-#endif
- _cfsml_register_pointer(save_struc->table);
- } else
- save_struc->table = NULL;
-#line 640 "engines/sci/engine/savegame.cfsml"
- done = i = 0;
- do {
- if (!(value = _cfsml_get_identifier(fh, line, hiteof, NULL))) {
-#line 648 "engines/sci/engine/savegame.cfsml"
- _cfsml_error("Token expected at line %d\n", *line);
- return 1;
- }
- if (strcmp(value, "]")) {
- if (i == max) {
- _cfsml_error("More elements than space available (%d) in '%s' at line %d\n", max, token, *line);
- return CFSML_FAILURE;
- }
- if (_cfsml_read_list_entry_t(fh, &(save_struc->table[i++]), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_list_entry_t() for table[i++] at line %d\n", *line);
+ if (read_reg_t(fh, (reg_t*) &(save_struc->last), value, line, hiteof)) {
+ _cfsml_error("Token expected by read_reg_t() for last at line %d\n", *line);
return CFSML_FAILURE;
}
} else
- done = 1;
- } while (!done);
- save_struc->entries_nr = max ; // Set array size accordingly
- } else
#line 700 "engines/sci/engine/savegame.cfsml"
{
- _cfsml_error("list_table_t: Assignment to invalid identifier '%s' in line %d\n", token, *line);
+ _cfsml_error("List: Assignment to invalid identifier '%s' in line %d\n", token, *line);
return CFSML_FAILURE;
}
}
@@ -2684,29 +2358,29 @@ _cfsml_read_list_table_t(Common::SeekableReadStream *fh, list_table_t* save_stru
#line 396 "engines/sci/engine/savegame.cfsml"
static void
-_cfsml_write_class_t(Common::WriteStream *fh, class_t const * save_struc)
+_cfsml_write_NodeEntry(Common::WriteStream *fh, NodeEntry const * save_struc)
{
#line 413 "engines/sci/engine/savegame.cfsml"
WSprintf(fh, "{\n");
- WSprintf(fh, "script = ");
- _cfsml_write_int(fh, (int const *) &(save_struc->script));
+ WSprintf(fh, "next_free = ");
+ _cfsml_write_int(fh, (int const *) &(save_struc->next_free));
WSprintf(fh, "\n");
- WSprintf(fh, "reg = ");
- write_reg_t(fh, (reg_t const *) &(save_struc->reg));
+ WSprintf(fh, "entry = ");
+ _cfsml_write_Node(fh, (Node const *) &(save_struc->entry));
WSprintf(fh, "\n");
WSprintf(fh, "}");
}
#line 487 "engines/sci/engine/savegame.cfsml"
static int
-_cfsml_read_class_t(Common::SeekableReadStream *fh, class_t* save_struc, const char *lastval, int *line, int *hiteof)
+_cfsml_read_NodeEntry(Common::SeekableReadStream *fh, NodeEntry* save_struc, const char *lastval, int *line, int *hiteof)
{
#line 542 "engines/sci/engine/savegame.cfsml"
char *token;
int assignment, closed;
if (strcmp(lastval, "{")) {
- _cfsml_error("Reading record class_t; expected opening braces in line %d, got \"%s\"\n", *line, lastval);
+ _cfsml_error("Reading record NodeEntry; expected opening braces in line %d, got \"%s\"\n", *line, lastval);
return CFSML_FAILURE;
};
closed = 0;
@@ -2733,23 +2407,23 @@ _cfsml_read_class_t(Common::SeekableReadStream *fh, class_t* save_struc, const c
_cfsml_error("Expected token at line %d\n", *line);
return CFSML_FAILURE;
}
- if (!strcmp(token, "script")) {
+ if (!strcmp(token, "next_free")) {
#line 691 "engines/sci/engine/savegame.cfsml"
- if (_cfsml_read_int(fh, (int*) &(save_struc->script), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_int() for script at line %d\n", *line);
+ if (_cfsml_read_int(fh, (int*) &(save_struc->next_free), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_int() for next_free at line %d\n", *line);
return CFSML_FAILURE;
}
} else
- if (!strcmp(token, "reg")) {
+ if (!strcmp(token, "entry")) {
#line 691 "engines/sci/engine/savegame.cfsml"
- if (read_reg_t(fh, (reg_t*) &(save_struc->reg), value, line, hiteof)) {
- _cfsml_error("Token expected by read_reg_t() for reg at line %d\n", *line);
+ if (_cfsml_read_Node(fh, (Node*) &(save_struc->entry), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_Node() for entry at line %d\n", *line);
return CFSML_FAILURE;
}
} else
#line 700 "engines/sci/engine/savegame.cfsml"
{
- _cfsml_error("class_t: Assignment to invalid identifier '%s' in line %d\n", token, *line);
+ _cfsml_error("NodeEntry: Assignment to invalid identifier '%s' in line %d\n", token, *line);
return CFSML_FAILURE;
}
}
@@ -2759,32 +2433,6 @@ _cfsml_read_class_t(Common::SeekableReadStream *fh, class_t* save_struc, const c
#line 396 "engines/sci/engine/savegame.cfsml"
static void
-_cfsml_write_song_handle_t(Common::WriteStream *fh, song_handle_t const * save_struc)
-{
- WSprintf(fh, "%li", (long)*save_struc);
-}
-
-#line 487 "engines/sci/engine/savegame.cfsml"
-static int
-_cfsml_read_song_handle_t(Common::SeekableReadStream *fh, song_handle_t* save_struc, const char *lastval, int *line, int *hiteof)
-{
-#line 507 "engines/sci/engine/savegame.cfsml"
- char *token;
-
- *save_struc = strtol(lastval, &token, 0);
- if ((*save_struc == 0) && (token == lastval)) {
- _cfsml_error("strtol failed at line %d\n", *line);
- return CFSML_FAILURE;
- }
- if (*token != 0) {
- _cfsml_error("Non-integer encountered while parsing int value at line %d\n", *line);
- return CFSML_FAILURE;
- }
- return CFSML_SUCCESS;
-}
-
-#line 396 "engines/sci/engine/savegame.cfsml"
-static void
_cfsml_write_int(Common::WriteStream *fh, int const * save_struc)
{
WSprintf(fh, "%li", (long)*save_struc);
@@ -2847,7 +2495,7 @@ _cfsml_write_EngineState(Common::WriteStream *fh, EngineState const * save_struc
#line 440 "engines/sci/engine/savegame.cfsml"
WSprintf(fh, "[%d][\n", max);
for (int i = 0; i < min; i++) {
- _cfsml_write_class_t(fh, &(save_struc->classtable[i]));
+ _cfsml_write_Class(fh, &(save_struc->classtable[i]));
WSprintf(fh, "\n");
}
WSprintf(fh, "]");
@@ -2966,9 +2614,9 @@ _cfsml_read_EngineState(Common::SeekableReadStream *fh, EngineState* save_struc,
}
if (max) {
- save_struc->classtable = (class_t *)sci_malloc(max * sizeof(class_t));
+ save_struc->classtable = (Class *)sci_malloc(max * sizeof(Class));
#ifdef SATISFY_PURIFY
- memset(save_struc->classtable, 0, max * sizeof(class_t));
+ memset(save_struc->classtable, 0, max * sizeof(Class));
#endif
_cfsml_register_pointer(save_struc->classtable);
} else
@@ -2986,8 +2634,8 @@ _cfsml_read_EngineState(Common::SeekableReadStream *fh, EngineState* save_struc,
_cfsml_error("More elements than space available (%d) in '%s' at line %d\n", max, token, *line);
return CFSML_FAILURE;
}
- if (_cfsml_read_class_t(fh, &(save_struc->classtable[i++]), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_class_t() for classtable[i++] at line %d\n", *line);
+ if (_cfsml_read_Class(fh, &(save_struc->classtable[i++]), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_Class() for classtable[i++] at line %d\n", *line);
return CFSML_FAILURE;
}
} else
@@ -3014,6 +2662,81 @@ _cfsml_read_EngineState(Common::SeekableReadStream *fh, EngineState* save_struc,
#line 396 "engines/sci/engine/savegame.cfsml"
static void
+_cfsml_write_CloneEntry(Common::WriteStream *fh, CloneEntry const * save_struc)
+{
+#line 413 "engines/sci/engine/savegame.cfsml"
+ WSprintf(fh, "{\n");
+ WSprintf(fh, "next_free = ");
+ _cfsml_write_int(fh, (int const *) &(save_struc->next_free));
+ WSprintf(fh, "\n");
+ WSprintf(fh, "entry = ");
+ _cfsml_write_Clone(fh, (Clone const *) &(save_struc->entry));
+ WSprintf(fh, "\n");
+ WSprintf(fh, "}");
+}
+
+#line 487 "engines/sci/engine/savegame.cfsml"
+static int
+_cfsml_read_CloneEntry(Common::SeekableReadStream *fh, CloneEntry* save_struc, const char *lastval, int *line, int *hiteof)
+{
+#line 542 "engines/sci/engine/savegame.cfsml"
+ char *token;
+ int assignment, closed;
+
+ if (strcmp(lastval, "{")) {
+ _cfsml_error("Reading record CloneEntry; expected opening braces in line %d, got \"%s\"\n", *line, lastval);
+ return CFSML_FAILURE;
+ };
+ closed = 0;
+ do {
+ const char *value;
+ token = _cfsml_get_identifier(fh, line, hiteof, &assignment);
+
+ if (!token) {
+ _cfsml_error("Expected token at line %d\n", *line);
+ return CFSML_FAILURE;
+ }
+ if (!assignment) {
+ if (!strcmp(token, "}"))
+ closed = 1;
+ else {
+ _cfsml_error("Expected assignment or closing braces in line %d\n", *line);
+ return CFSML_FAILURE;
+ }
+ } else {
+ value = "";
+ while (!value || !strcmp(value, ""))
+ value = _cfsml_get_value(fh, line, hiteof);
+ if (!value) {
+ _cfsml_error("Expected token at line %d\n", *line);
+ return CFSML_FAILURE;
+ }
+ if (!strcmp(token, "next_free")) {
+#line 691 "engines/sci/engine/savegame.cfsml"
+ if (_cfsml_read_int(fh, (int*) &(save_struc->next_free), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_int() for next_free at line %d\n", *line);
+ return CFSML_FAILURE;
+ }
+ } else
+ if (!strcmp(token, "entry")) {
+#line 691 "engines/sci/engine/savegame.cfsml"
+ if (_cfsml_read_Clone(fh, (Clone*) &(save_struc->entry), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_Clone() for entry at line %d\n", *line);
+ return CFSML_FAILURE;
+ }
+ } else
+#line 700 "engines/sci/engine/savegame.cfsml"
+ {
+ _cfsml_error("CloneEntry: Assignment to invalid identifier '%s' in line %d\n", token, *line);
+ return CFSML_FAILURE;
+ }
+ }
+ } while (!closed); // Until closing braces are hit
+ return CFSML_SUCCESS;
+}
+
+#line 396 "engines/sci/engine/savegame.cfsml"
+static void
_cfsml_write_SavegameMetadata(Common::WriteStream *fh, SavegameMetadata const * save_struc)
{
#line 413 "engines/sci/engine/savegame.cfsml"
@@ -3129,6 +2852,139 @@ _cfsml_read_SavegameMetadata(Common::SeekableReadStream *fh, SavegameMetadata* s
#line 396 "engines/sci/engine/savegame.cfsml"
static void
+_cfsml_write_LocalVariables(Common::WriteStream *fh, LocalVariables const * save_struc)
+{
+#line 413 "engines/sci/engine/savegame.cfsml"
+ WSprintf(fh, "{\n");
+ WSprintf(fh, "script_id = ");
+ _cfsml_write_int(fh, (int const *) &(save_struc->script_id));
+ WSprintf(fh, "\n");
+ WSprintf(fh, "nr = ");
+ _cfsml_write_int(fh, (int const *) &(save_struc->nr));
+ WSprintf(fh, "\n");
+ WSprintf(fh, "locals = ");
+ int min, max;
+ min = max = save_struc->nr;
+ if (!save_struc->locals)
+ min = max = 0; /* Don't write if it points to NULL */
+#line 440 "engines/sci/engine/savegame.cfsml"
+ WSprintf(fh, "[%d][\n", max);
+ for (int i = 0; i < min; i++) {
+ write_reg_t(fh, &(save_struc->locals[i]));
+ WSprintf(fh, "\n");
+ }
+ WSprintf(fh, "]");
+ WSprintf(fh, "\n");
+ WSprintf(fh, "}");
+}
+
+#line 487 "engines/sci/engine/savegame.cfsml"
+static int
+_cfsml_read_LocalVariables(Common::SeekableReadStream *fh, LocalVariables* save_struc, const char *lastval, int *line, int *hiteof)
+{
+#line 542 "engines/sci/engine/savegame.cfsml"
+ char *token;
+ int assignment, closed;
+
+ if (strcmp(lastval, "{")) {
+ _cfsml_error("Reading record LocalVariables; expected opening braces in line %d, got \"%s\"\n", *line, lastval);
+ return CFSML_FAILURE;
+ };
+ closed = 0;
+ do {
+ const char *value;
+ token = _cfsml_get_identifier(fh, line, hiteof, &assignment);
+
+ if (!token) {
+ _cfsml_error("Expected token at line %d\n", *line);
+ return CFSML_FAILURE;
+ }
+ if (!assignment) {
+ if (!strcmp(token, "}"))
+ closed = 1;
+ else {
+ _cfsml_error("Expected assignment or closing braces in line %d\n", *line);
+ return CFSML_FAILURE;
+ }
+ } else {
+ value = "";
+ while (!value || !strcmp(value, ""))
+ value = _cfsml_get_value(fh, line, hiteof);
+ if (!value) {
+ _cfsml_error("Expected token at line %d\n", *line);
+ return CFSML_FAILURE;
+ }
+ if (!strcmp(token, "script_id")) {
+#line 691 "engines/sci/engine/savegame.cfsml"
+ if (_cfsml_read_int(fh, (int*) &(save_struc->script_id), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_int() for script_id at line %d\n", *line);
+ return CFSML_FAILURE;
+ }
+ } else
+ if (!strcmp(token, "nr")) {
+#line 691 "engines/sci/engine/savegame.cfsml"
+ if (_cfsml_read_int(fh, (int*) &(save_struc->nr), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_int() for nr at line %d\n", *line);
+ return CFSML_FAILURE;
+ }
+ } else
+ if (!strcmp(token, "locals")) {
+#line 605 "engines/sci/engine/savegame.cfsml"
+ if ((value[0] != '[') || (value[strlen(value) - 1] != '[')) {
+ _cfsml_error("Opening brackets expected at line %d\n", *line);
+ return CFSML_FAILURE;
+ }
+ int max,done,i;
+#line 616 "engines/sci/engine/savegame.cfsml"
+ // Prepare to restore dynamic array
+ max = strtol(value + 1, NULL, 0);
+ if (max < 0) {
+ _cfsml_error("Invalid number of elements to allocate for dynamic array '%s' at line %d\n", token, *line);
+ return CFSML_FAILURE;
+ }
+
+ if (max) {
+ save_struc->locals = (reg_t *)sci_malloc(max * sizeof(reg_t));
+#ifdef SATISFY_PURIFY
+ memset(save_struc->locals, 0, max * sizeof(reg_t));
+#endif
+ _cfsml_register_pointer(save_struc->locals);
+ } else
+ save_struc->locals = NULL;
+#line 640 "engines/sci/engine/savegame.cfsml"
+ done = i = 0;
+ do {
+ if (!(value = _cfsml_get_identifier(fh, line, hiteof, NULL))) {
+#line 648 "engines/sci/engine/savegame.cfsml"
+ _cfsml_error("Token expected at line %d\n", *line);
+ return 1;
+ }
+ if (strcmp(value, "]")) {
+ if (i == max) {
+ _cfsml_error("More elements than space available (%d) in '%s' at line %d\n", max, token, *line);
+ return CFSML_FAILURE;
+ }
+ if (read_reg_t(fh, &(save_struc->locals[i++]), value, line, hiteof)) {
+ _cfsml_error("Token expected by read_reg_t() for locals[i++] at line %d\n", *line);
+ return CFSML_FAILURE;
+ }
+ } else
+ done = 1;
+ } while (!done);
+ save_struc->nr = max ; // Set array size accordingly
+ } else
+#line 700 "engines/sci/engine/savegame.cfsml"
+ {
+ _cfsml_error("LocalVariables: Assignment to invalid identifier '%s' in line %d\n", token, *line);
+ return CFSML_FAILURE;
+ }
+ }
+ } while (!closed); // Until closing braces are hit
+ return CFSML_SUCCESS;
+}
+
+#line 396 "engines/sci/engine/savegame.cfsml"
+static void
_cfsml_write_IntMapper(Common::WriteStream *fh, IntMapper const * save_struc)
{
#line 413 "engines/sci/engine/savegame.cfsml"
@@ -3378,31 +3234,34 @@ _cfsml_read_menu_t(Common::SeekableReadStream *fh, menu_t* save_struc, const cha
#line 396 "engines/sci/engine/savegame.cfsml"
static void
-_cfsml_write_clone_table_t(Common::WriteStream *fh, clone_table_t const * save_struc)
+_cfsml_write_Object(Common::WriteStream *fh, Object const * save_struc)
{
#line 413 "engines/sci/engine/savegame.cfsml"
WSprintf(fh, "{\n");
- WSprintf(fh, "entries_nr = ");
- _cfsml_write_int(fh, (int const *) &(save_struc->entries_nr));
+ WSprintf(fh, "flags = ");
+ _cfsml_write_int(fh, (int const *) &(save_struc->flags));
WSprintf(fh, "\n");
- WSprintf(fh, "first_free = ");
- _cfsml_write_int(fh, (int const *) &(save_struc->first_free));
+ WSprintf(fh, "pos = ");
+ write_reg_t(fh, (reg_t const *) &(save_struc->pos));
WSprintf(fh, "\n");
- WSprintf(fh, "entries_used = ");
- _cfsml_write_int(fh, (int const *) &(save_struc->entries_used));
+ WSprintf(fh, "variables_nr = ");
+ _cfsml_write_int(fh, (int const *) &(save_struc->variables_nr));
WSprintf(fh, "\n");
- WSprintf(fh, "max_entry = ");
- _cfsml_write_int(fh, (int const *) &(save_struc->max_entry));
+ WSprintf(fh, "variable_names_nr = ");
+ _cfsml_write_int(fh, (int const *) &(save_struc->variable_names_nr));
WSprintf(fh, "\n");
- WSprintf(fh, "table = ");
+ WSprintf(fh, "methods_nr = ");
+ _cfsml_write_int(fh, (int const *) &(save_struc->methods_nr));
+ WSprintf(fh, "\n");
+ WSprintf(fh, "variables = ");
int min, max;
- min = max = save_struc->entries_nr;
- if (!save_struc->table)
+ min = max = save_struc->variables_nr;
+ if (!save_struc->variables)
min = max = 0; /* Don't write if it points to NULL */
#line 440 "engines/sci/engine/savegame.cfsml"
WSprintf(fh, "[%d][\n", max);
for (int i = 0; i < min; i++) {
- _cfsml_write_clone_entry_t(fh, &(save_struc->table[i]));
+ write_reg_t(fh, &(save_struc->variables[i]));
WSprintf(fh, "\n");
}
WSprintf(fh, "]");
@@ -3412,14 +3271,14 @@ _cfsml_write_clone_table_t(Common::WriteStream *fh, clone_table_t const * save_s
#line 487 "engines/sci/engine/savegame.cfsml"
static int
-_cfsml_read_clone_table_t(Common::SeekableReadStream *fh, clone_table_t* save_struc, const char *lastval, int *line, int *hiteof)
+_cfsml_read_Object(Common::SeekableReadStream *fh, Object* save_struc, const char *lastval, int *line, int *hiteof)
{
#line 542 "engines/sci/engine/savegame.cfsml"
char *token;
int assignment, closed;
if (strcmp(lastval, "{")) {
- _cfsml_error("Reading record clone_table_t; expected opening braces in line %d, got \"%s\"\n", *line, lastval);
+ _cfsml_error("Reading record Object; expected opening braces in line %d, got \"%s\"\n", *line, lastval);
return CFSML_FAILURE;
};
closed = 0;
@@ -3446,35 +3305,42 @@ _cfsml_read_clone_table_t(Common::SeekableReadStream *fh, clone_table_t* save_st
_cfsml_error("Expected token at line %d\n", *line);
return CFSML_FAILURE;
}
- if (!strcmp(token, "entries_nr")) {
+ if (!strcmp(token, "flags")) {
#line 691 "engines/sci/engine/savegame.cfsml"
- if (_cfsml_read_int(fh, (int*) &(save_struc->entries_nr), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_int() for entries_nr at line %d\n", *line);
+ if (_cfsml_read_int(fh, (int*) &(save_struc->flags), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_int() for flags at line %d\n", *line);
return CFSML_FAILURE;
}
} else
- if (!strcmp(token, "first_free")) {
+ if (!strcmp(token, "pos")) {
#line 691 "engines/sci/engine/savegame.cfsml"
- if (_cfsml_read_int(fh, (int*) &(save_struc->first_free), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_int() for first_free at line %d\n", *line);
+ if (read_reg_t(fh, (reg_t*) &(save_struc->pos), value, line, hiteof)) {
+ _cfsml_error("Token expected by read_reg_t() for pos at line %d\n", *line);
return CFSML_FAILURE;
}
} else
- if (!strcmp(token, "entries_used")) {
+ if (!strcmp(token, "variables_nr")) {
#line 691 "engines/sci/engine/savegame.cfsml"
- if (_cfsml_read_int(fh, (int*) &(save_struc->entries_used), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_int() for entries_used at line %d\n", *line);
+ if (_cfsml_read_int(fh, (int*) &(save_struc->variables_nr), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_int() for variables_nr at line %d\n", *line);
return CFSML_FAILURE;
}
} else
- if (!strcmp(token, "max_entry")) {
+ if (!strcmp(token, "variable_names_nr")) {
#line 691 "engines/sci/engine/savegame.cfsml"
- if (_cfsml_read_int(fh, (int*) &(save_struc->max_entry), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_int() for max_entry at line %d\n", *line);
+ if (_cfsml_read_int(fh, (int*) &(save_struc->variable_names_nr), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_int() for variable_names_nr at line %d\n", *line);
return CFSML_FAILURE;
}
} else
- if (!strcmp(token, "table")) {
+ if (!strcmp(token, "methods_nr")) {
+#line 691 "engines/sci/engine/savegame.cfsml"
+ if (_cfsml_read_int(fh, (int*) &(save_struc->methods_nr), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_int() for methods_nr at line %d\n", *line);
+ return CFSML_FAILURE;
+ }
+ } else
+ if (!strcmp(token, "variables")) {
#line 605 "engines/sci/engine/savegame.cfsml"
if ((value[0] != '[') || (value[strlen(value) - 1] != '[')) {
_cfsml_error("Opening brackets expected at line %d\n", *line);
@@ -3490,13 +3356,13 @@ _cfsml_read_clone_table_t(Common::SeekableReadStream *fh, clone_table_t* save_st
}
if (max) {
- save_struc->table = (clone_entry_t *)sci_malloc(max * sizeof(clone_entry_t));
+ save_struc->variables = (reg_t *)sci_malloc(max * sizeof(reg_t));
#ifdef SATISFY_PURIFY
- memset(save_struc->table, 0, max * sizeof(clone_entry_t));
+ memset(save_struc->variables, 0, max * sizeof(reg_t));
#endif
- _cfsml_register_pointer(save_struc->table);
+ _cfsml_register_pointer(save_struc->variables);
} else
- save_struc->table = NULL;
+ save_struc->variables = NULL;
#line 640 "engines/sci/engine/savegame.cfsml"
done = i = 0;
do {
@@ -3510,18 +3376,18 @@ _cfsml_read_clone_table_t(Common::SeekableReadStream *fh, clone_table_t* save_st
_cfsml_error("More elements than space available (%d) in '%s' at line %d\n", max, token, *line);
return CFSML_FAILURE;
}
- if (_cfsml_read_clone_entry_t(fh, &(save_struc->table[i++]), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_clone_entry_t() for table[i++] at line %d\n", *line);
+ if (read_reg_t(fh, &(save_struc->variables[i++]), value, line, hiteof)) {
+ _cfsml_error("Token expected by read_reg_t() for variables[i++] at line %d\n", *line);
return CFSML_FAILURE;
}
} else
done = 1;
} while (!done);
- save_struc->entries_nr = max ; // Set array size accordingly
+ save_struc->variables_nr = max ; // Set array size accordingly
} else
#line 700 "engines/sci/engine/savegame.cfsml"
{
- _cfsml_error("clone_table_t: Assignment to invalid identifier '%s' in line %d\n", token, *line);
+ _cfsml_error("Object: Assignment to invalid identifier '%s' in line %d\n", token, *line);
return CFSML_FAILURE;
}
}
@@ -3531,29 +3397,29 @@ _cfsml_read_clone_table_t(Common::SeekableReadStream *fh, clone_table_t* save_st
#line 396 "engines/sci/engine/savegame.cfsml"
static void
-_cfsml_write_list_t(Common::WriteStream *fh, list_t const * save_struc)
+_cfsml_write_ListEntry(Common::WriteStream *fh, ListEntry const * save_struc)
{
#line 413 "engines/sci/engine/savegame.cfsml"
WSprintf(fh, "{\n");
- WSprintf(fh, "first = ");
- write_reg_t(fh, (reg_t const *) &(save_struc->first));
+ WSprintf(fh, "next_free = ");
+ _cfsml_write_int(fh, (int const *) &(save_struc->next_free));
WSprintf(fh, "\n");
- WSprintf(fh, "last = ");
- write_reg_t(fh, (reg_t const *) &(save_struc->last));
+ WSprintf(fh, "entry = ");
+ _cfsml_write_List(fh, (List const *) &(save_struc->entry));
WSprintf(fh, "\n");
WSprintf(fh, "}");
}
#line 487 "engines/sci/engine/savegame.cfsml"
static int
-_cfsml_read_list_t(Common::SeekableReadStream *fh, list_t* save_struc, const char *lastval, int *line, int *hiteof)
+_cfsml_read_ListEntry(Common::SeekableReadStream *fh, ListEntry* save_struc, const char *lastval, int *line, int *hiteof)
{
#line 542 "engines/sci/engine/savegame.cfsml"
char *token;
int assignment, closed;
if (strcmp(lastval, "{")) {
- _cfsml_error("Reading record list_t; expected opening braces in line %d, got \"%s\"\n", *line, lastval);
+ _cfsml_error("Reading record ListEntry; expected opening braces in line %d, got \"%s\"\n", *line, lastval);
return CFSML_FAILURE;
};
closed = 0;
@@ -3580,23 +3446,23 @@ _cfsml_read_list_t(Common::SeekableReadStream *fh, list_t* save_struc, const cha
_cfsml_error("Expected token at line %d\n", *line);
return CFSML_FAILURE;
}
- if (!strcmp(token, "first")) {
+ if (!strcmp(token, "next_free")) {
#line 691 "engines/sci/engine/savegame.cfsml"
- if (read_reg_t(fh, (reg_t*) &(save_struc->first), value, line, hiteof)) {
- _cfsml_error("Token expected by read_reg_t() for first at line %d\n", *line);
+ if (_cfsml_read_int(fh, (int*) &(save_struc->next_free), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_int() for next_free at line %d\n", *line);
return CFSML_FAILURE;
}
} else
- if (!strcmp(token, "last")) {
+ if (!strcmp(token, "entry")) {
#line 691 "engines/sci/engine/savegame.cfsml"
- if (read_reg_t(fh, (reg_t*) &(save_struc->last), value, line, hiteof)) {
- _cfsml_error("Token expected by read_reg_t() for last at line %d\n", *line);
+ if (_cfsml_read_List(fh, (List*) &(save_struc->entry), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_List() for entry at line %d\n", *line);
return CFSML_FAILURE;
}
} else
#line 700 "engines/sci/engine/savegame.cfsml"
{
- _cfsml_error("list_t: Assignment to invalid identifier '%s' in line %d\n", token, *line);
+ _cfsml_error("ListEntry: Assignment to invalid identifier '%s' in line %d\n", token, *line);
return CFSML_FAILURE;
}
}
@@ -3606,7 +3472,7 @@ _cfsml_read_list_t(Common::SeekableReadStream *fh, list_t* save_struc, const cha
#line 396 "engines/sci/engine/savegame.cfsml"
static void
-_cfsml_write_clone_t(Common::WriteStream *fh, clone_t const * save_struc)
+_cfsml_write_Clone(Common::WriteStream *fh, Clone const * save_struc)
{
#line 413 "engines/sci/engine/savegame.cfsml"
WSprintf(fh, "{\n");
@@ -3643,14 +3509,14 @@ _cfsml_write_clone_t(Common::WriteStream *fh, clone_t const * save_struc)
#line 487 "engines/sci/engine/savegame.cfsml"
static int
-_cfsml_read_clone_t(Common::SeekableReadStream *fh, clone_t* save_struc, const char *lastval, int *line, int *hiteof)
+_cfsml_read_Clone(Common::SeekableReadStream *fh, Clone* save_struc, const char *lastval, int *line, int *hiteof)
{
#line 542 "engines/sci/engine/savegame.cfsml"
char *token;
int assignment, closed;
if (strcmp(lastval, "{")) {
- _cfsml_error("Reading record clone_t; expected opening braces in line %d, got \"%s\"\n", *line, lastval);
+ _cfsml_error("Reading record Clone; expected opening braces in line %d, got \"%s\"\n", *line, lastval);
return CFSML_FAILURE;
};
closed = 0;
@@ -3759,7 +3625,140 @@ _cfsml_read_clone_t(Common::SeekableReadStream *fh, clone_t* save_struc, const c
} else
#line 700 "engines/sci/engine/savegame.cfsml"
{
- _cfsml_error("clone_t: Assignment to invalid identifier '%s' in line %d\n", token, *line);
+ _cfsml_error("Clone: Assignment to invalid identifier '%s' in line %d\n", token, *line);
+ return CFSML_FAILURE;
+ }
+ }
+ } while (!closed); // Until closing braces are hit
+ return CFSML_SUCCESS;
+}
+
+#line 396 "engines/sci/engine/savegame.cfsml"
+static void
+_cfsml_write_DynMem(Common::WriteStream *fh, DynMem const * save_struc)
+{
+#line 413 "engines/sci/engine/savegame.cfsml"
+ WSprintf(fh, "{\n");
+ WSprintf(fh, "size = ");
+ _cfsml_write_int(fh, (int const *) &(save_struc->size));
+ WSprintf(fh, "\n");
+ WSprintf(fh, "description = ");
+ _cfsml_write_string(fh, (const char * const *) &(save_struc->description));
+ WSprintf(fh, "\n");
+ WSprintf(fh, "buf = ");
+ int min, max;
+ min = max = save_struc->size;
+ if (!save_struc->buf)
+ min = max = 0; /* Don't write if it points to NULL */
+#line 440 "engines/sci/engine/savegame.cfsml"
+ WSprintf(fh, "[%d][\n", max);
+ for (int i = 0; i < min; i++) {
+ _cfsml_write_byte(fh, &(save_struc->buf[i]));
+ WSprintf(fh, "\n");
+ }
+ WSprintf(fh, "]");
+ WSprintf(fh, "\n");
+ WSprintf(fh, "}");
+}
+
+#line 487 "engines/sci/engine/savegame.cfsml"
+static int
+_cfsml_read_DynMem(Common::SeekableReadStream *fh, DynMem* save_struc, const char *lastval, int *line, int *hiteof)
+{
+#line 542 "engines/sci/engine/savegame.cfsml"
+ char *token;
+ int assignment, closed;
+
+ if (strcmp(lastval, "{")) {
+ _cfsml_error("Reading record DynMem; expected opening braces in line %d, got \"%s\"\n", *line, lastval);
+ return CFSML_FAILURE;
+ };
+ closed = 0;
+ do {
+ const char *value;
+ token = _cfsml_get_identifier(fh, line, hiteof, &assignment);
+
+ if (!token) {
+ _cfsml_error("Expected token at line %d\n", *line);
+ return CFSML_FAILURE;
+ }
+ if (!assignment) {
+ if (!strcmp(token, "}"))
+ closed = 1;
+ else {
+ _cfsml_error("Expected assignment or closing braces in line %d\n", *line);
+ return CFSML_FAILURE;
+ }
+ } else {
+ value = "";
+ while (!value || !strcmp(value, ""))
+ value = _cfsml_get_value(fh, line, hiteof);
+ if (!value) {
+ _cfsml_error("Expected token at line %d\n", *line);
+ return CFSML_FAILURE;
+ }
+ if (!strcmp(token, "size")) {
+#line 691 "engines/sci/engine/savegame.cfsml"
+ if (_cfsml_read_int(fh, (int*) &(save_struc->size), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_int() for size at line %d\n", *line);
+ return CFSML_FAILURE;
+ }
+ } else
+ if (!strcmp(token, "description")) {
+#line 691 "engines/sci/engine/savegame.cfsml"
+ if (_cfsml_read_string(fh, (char **) &(save_struc->description), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_string() for description at line %d\n", *line);
+ return CFSML_FAILURE;
+ }
+ } else
+ if (!strcmp(token, "buf")) {
+#line 605 "engines/sci/engine/savegame.cfsml"
+ if ((value[0] != '[') || (value[strlen(value) - 1] != '[')) {
+ _cfsml_error("Opening brackets expected at line %d\n", *line);
+ return CFSML_FAILURE;
+ }
+ int max,done,i;
+#line 616 "engines/sci/engine/savegame.cfsml"
+ // Prepare to restore dynamic array
+ max = strtol(value + 1, NULL, 0);
+ if (max < 0) {
+ _cfsml_error("Invalid number of elements to allocate for dynamic array '%s' at line %d\n", token, *line);
+ return CFSML_FAILURE;
+ }
+
+ if (max) {
+ save_struc->buf = (byte *)sci_malloc(max * sizeof(byte));
+#ifdef SATISFY_PURIFY
+ memset(save_struc->buf, 0, max * sizeof(byte));
+#endif
+ _cfsml_register_pointer(save_struc->buf);
+ } else
+ save_struc->buf = NULL;
+#line 640 "engines/sci/engine/savegame.cfsml"
+ done = i = 0;
+ do {
+ if (!(value = _cfsml_get_identifier(fh, line, hiteof, NULL))) {
+#line 648 "engines/sci/engine/savegame.cfsml"
+ _cfsml_error("Token expected at line %d\n", *line);
+ return 1;
+ }
+ if (strcmp(value, "]")) {
+ if (i == max) {
+ _cfsml_error("More elements than space available (%d) in '%s' at line %d\n", max, token, *line);
+ return CFSML_FAILURE;
+ }
+ if (_cfsml_read_byte(fh, &(save_struc->buf[i++]), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_byte() for buf[i++] at line %d\n", *line);
+ return CFSML_FAILURE;
+ }
+ } else
+ done = 1;
+ } while (!done);
+ save_struc->size = max ; // Set array size accordingly
+ } else
+#line 700 "engines/sci/engine/savegame.cfsml"
+ {
+ _cfsml_error("DynMem: Assignment to invalid identifier '%s' in line %d\n", token, *line);
return CFSML_FAILURE;
}
}
@@ -3769,7 +3768,7 @@ _cfsml_read_clone_t(Common::SeekableReadStream *fh, clone_t* save_struc, const c
#line 396 "engines/sci/engine/savegame.cfsml"
static void
-_cfsml_write_script_t(Common::WriteStream *fh, script_t const * save_struc)
+_cfsml_write_Script(Common::WriteStream *fh, Script const * save_struc)
{
#line 413 "engines/sci/engine/savegame.cfsml"
WSprintf(fh, "{\n");
@@ -3811,7 +3810,7 @@ _cfsml_write_script_t(Common::WriteStream *fh, script_t const * save_struc)
#line 440 "engines/sci/engine/savegame.cfsml"
WSprintf(fh, "[%d][\n", max);
for (int i = 0; i < min; i++) {
- _cfsml_write_object_t(fh, &(save_struc->objects[i]));
+ _cfsml_write_Object(fh, &(save_struc->objects[i]));
WSprintf(fh, "\n");
}
WSprintf(fh, "]");
@@ -3830,14 +3829,14 @@ _cfsml_write_script_t(Common::WriteStream *fh, script_t const * save_struc)
#line 487 "engines/sci/engine/savegame.cfsml"
static int
-_cfsml_read_script_t(Common::SeekableReadStream *fh, script_t* save_struc, const char *lastval, int *line, int *hiteof)
+_cfsml_read_Script(Common::SeekableReadStream *fh, Script* save_struc, const char *lastval, int *line, int *hiteof)
{
#line 542 "engines/sci/engine/savegame.cfsml"
char *token;
int assignment, closed;
if (strcmp(lastval, "{")) {
- _cfsml_error("Reading record script_t; expected opening braces in line %d, got \"%s\"\n", *line, lastval);
+ _cfsml_error("Reading record Script; expected opening braces in line %d, got \"%s\"\n", *line, lastval);
return CFSML_FAILURE;
};
closed = 0;
@@ -3950,9 +3949,9 @@ _cfsml_read_script_t(Common::SeekableReadStream *fh, script_t* save_struc, const
}
if (max) {
- save_struc->objects = (object_t *)sci_malloc(max * sizeof(object_t));
+ save_struc->objects = (Object *)sci_malloc(max * sizeof(Object));
#ifdef SATISFY_PURIFY
- memset(save_struc->objects, 0, max * sizeof(object_t));
+ memset(save_struc->objects, 0, max * sizeof(Object));
#endif
_cfsml_register_pointer(save_struc->objects);
} else
@@ -3970,8 +3969,8 @@ _cfsml_read_script_t(Common::SeekableReadStream *fh, script_t* save_struc, const
_cfsml_error("More elements than space available (%d) in '%s' at line %d\n", max, token, *line);
return CFSML_FAILURE;
}
- if (_cfsml_read_object_t(fh, &(save_struc->objects[i++]), value, line, hiteof)) {
- _cfsml_error("Token expected by _cfsml_read_object_t() for objects[i++] at line %d\n", *line);
+ if (_cfsml_read_Object(fh, &(save_struc->objects[i++]), value, line, hiteof)) {
+ _cfsml_error("Token expected by _cfsml_read_Object() for objects[i++] at line %d\n", *line);
return CFSML_FAILURE;
}
} else
@@ -4002,7 +4001,7 @@ _cfsml_read_script_t(Common::SeekableReadStream *fh, script_t* save_struc, const
} else
#line 700 "engines/sci/engine/savegame.cfsml"
{
- _cfsml_error("script_t: Assignment to invalid identifier '%s' in line %d\n", token, *line);
+ _cfsml_error("Script: Assignment to invalid identifier '%s' in line %d\n", token, *line);
return CFSML_FAILURE;
}
}
@@ -4013,7 +4012,7 @@ _cfsml_read_script_t(Common::SeekableReadStream *fh, script_t* save_struc, const
// Auto-generated CFSML declaration and function block ends here
// Auto-generation performed by cfsml.pl 0.8.2
-#line 451 "engines/sci/engine/savegame.cfsml"
+#line 450 "engines/sci/engine/savegame.cfsml"
void write_songlib_t(Common::WriteStream *fh, songlib_t const *songlib) {
song_t *seeker = *(songlib->lib);
@@ -4030,7 +4029,7 @@ void write_songlib_t(Common::WriteStream *fh, songlib_t const *songlib) {
_cfsml_write_song_t(fh, seeker);
WSprintf(fh, "\n");
// End of auto-generated CFSML data writer code
-#line 463 "engines/sci/engine/savegame.cfsml"
+#line 462 "engines/sci/engine/savegame.cfsml"
seeker = seeker->next;
}
WSprintf(fh, "]\n");
@@ -4078,7 +4077,7 @@ int read_songlib_t(Common::SeekableReadStream *fh, songlib_t *songlib, const cha
}
}
// End of auto-generated CFSML data reader code
-#line 487 "engines/sci/engine/savegame.cfsml"
+#line 486 "engines/sci/engine/savegame.cfsml"
song_lib_add(*songlib, newsong);
}
l = fh->readLine(); // "]"
@@ -4093,7 +4092,7 @@ void write_song_tp(Common::WriteStream *fh, const song_t * const *foo) {
_cfsml_write_song_t(fh, *foo);
WSprintf(fh, "\n");
// End of auto-generated CFSML data writer code
-#line 497 "engines/sci/engine/savegame.cfsml"
+#line 496 "engines/sci/engine/savegame.cfsml"
}
song_iterator_t *build_iterator(EngineState *s, int song_nr, int type, songit_id_t id);
@@ -4127,7 +4126,7 @@ int read_song_tp(Common::SeekableReadStream *fh, song_t **foo, const char *lastv
}
}
// End of auto-generated CFSML data reader code
-#line 507 "engines/sci/engine/savegame.cfsml"
+#line 506 "engines/sci/engine/savegame.cfsml"
(*foo)->delay = 0;
(*foo)->it = NULL;
(*foo)->next_playing = (*foo)->next_stopping = (*foo)->next = NULL;
@@ -4140,7 +4139,7 @@ void write_IntMapperPtr(Common::WriteStream *fh, const IntMapper * const *foo) {
_cfsml_write_IntMapper(fh, *foo);
WSprintf(fh, "\n");
// End of auto-generated CFSML data writer code
-#line 515 "engines/sci/engine/savegame.cfsml"
+#line 514 "engines/sci/engine/savegame.cfsml"
}
int read_IntMapperPtr(Common::SeekableReadStream *fh, IntMapper **foo, const char *lastval, int *line, int *hiteof) {
@@ -4169,7 +4168,7 @@ int read_IntMapperPtr(Common::SeekableReadStream *fh, IntMapper **foo, const cha
}
}
// End of auto-generated CFSML data reader code
-#line 520 "engines/sci/engine/savegame.cfsml"
+#line 519 "engines/sci/engine/savegame.cfsml"
(*foo)->holes = NULL;
return 0;
}
@@ -4185,7 +4184,7 @@ void write_IntMapperNodePtr(Common::WriteStream *fh, const IntMapper::Node * con
write_IntMapperNodePtr(fh, &((*foo)->next));
WSprintf(fh, "\n");
// End of auto-generated CFSML data writer code
-#line 531 "engines/sci/engine/savegame.cfsml"
+#line 530 "engines/sci/engine/savegame.cfsml"
} else
WSprintf(fh, "L");
WSprintf(fh, "]");
@@ -4233,7 +4232,7 @@ void write_menubar_tp(Common::WriteStream *fh, const menubar_t * const *foo) {
_cfsml_write_menubar_t(fh, (*foo));
WSprintf(fh, "\n");
// End of auto-generated CFSML data writer code
-#line 574 "engines/sci/engine/savegame.cfsml"
+#line 573 "engines/sci/engine/savegame.cfsml"
} else { // Nothing to write
WSprintf(fh, "\\null\\");
}
@@ -4269,7 +4268,7 @@ int read_menubar_tp(Common::SeekableReadStream *fh, menubar_t **foo, const char
}
}
// End of auto-generated CFSML data reader code
-#line 586 "engines/sci/engine/savegame.cfsml"
+#line 585 "engines/sci/engine/savegame.cfsml"
}
return *hiteof;
}
@@ -4300,38 +4299,38 @@ int mem_obj_string_to_enum(const char *str) {
return -1;
}
-void write_mem_obj_t(Common::WriteStream *fh, mem_obj_t const *foo) {
+void write_MemObject(Common::WriteStream *fh, MemObject const *foo) {
WSprintf(fh, "%s\n", mem_obj_string_names[foo->type].name);
#line 822 "engines/sci/engine/savegame.cfsml"
// Auto-generated CFSML data writer code
_cfsml_write_int(fh, &foo->segmgr_id);
WSprintf(fh, "\n");
// End of auto-generated CFSML data writer code
-#line 619 "engines/sci/engine/savegame.cfsml"
+#line 618 "engines/sci/engine/savegame.cfsml"
switch (foo->type) {
case MEM_OBJ_SCRIPT:
#line 822 "engines/sci/engine/savegame.cfsml"
// Auto-generated CFSML data writer code
- _cfsml_write_script_t(fh, &foo->data.script);
+ _cfsml_write_Script(fh, &foo->data.script);
WSprintf(fh, "\n");
// End of auto-generated CFSML data writer code
-#line 622 "engines/sci/engine/savegame.cfsml"
+#line 621 "engines/sci/engine/savegame.cfsml"
break;
case MEM_OBJ_CLONES:
#line 822 "engines/sci/engine/savegame.cfsml"
// Auto-generated CFSML data writer code
- _cfsml_write_clone_table_t(fh, &foo->data.clones);
+ _cfsml_write_CloneTable(fh, &foo->data.clones);
WSprintf(fh, "\n");
// End of auto-generated CFSML data writer code
-#line 625 "engines/sci/engine/savegame.cfsml"
+#line 624 "engines/sci/engine/savegame.cfsml"
break;
case MEM_OBJ_LOCALS:
#line 822 "engines/sci/engine/savegame.cfsml"
// Auto-generated CFSML data writer code
- _cfsml_write_local_variables_t(fh, &foo->data.locals);
+ _cfsml_write_LocalVariables(fh, &foo->data.locals);
WSprintf(fh, "\n");
// End of auto-generated CFSML data writer code
-#line 628 "engines/sci/engine/savegame.cfsml"
+#line 627 "engines/sci/engine/savegame.cfsml"
break;
case MEM_OBJ_SYS_STRINGS:
#line 822 "engines/sci/engine/savegame.cfsml"
@@ -4339,7 +4338,7 @@ void write_mem_obj_t(Common::WriteStream *fh, mem_obj_t const *foo) {
_cfsml_write_SystemStrings(fh, &foo->data.sys_strings);
WSprintf(fh, "\n");
// End of auto-generated CFSML data writer code
-#line 631 "engines/sci/engine/savegame.cfsml"
+#line 630 "engines/sci/engine/savegame.cfsml"
break;
case MEM_OBJ_STACK:
#line 822 "engines/sci/engine/savegame.cfsml"
@@ -4347,43 +4346,43 @@ void write_mem_obj_t(Common::WriteStream *fh, mem_obj_t const *foo) {
_cfsml_write_int(fh, &foo->data.stack.nr);
WSprintf(fh, "\n");
// End of auto-generated CFSML data writer code
-#line 634 "engines/sci/engine/savegame.cfsml"
+#line 633 "engines/sci/engine/savegame.cfsml"
break;
case MEM_OBJ_HUNK:
break;
case MEM_OBJ_LISTS:
#line 822 "engines/sci/engine/savegame.cfsml"
// Auto-generated CFSML data writer code
- _cfsml_write_list_table_t(fh, &foo->data.lists);
+ _cfsml_write_ListTable(fh, &foo->data.lists);
WSprintf(fh, "\n");
// End of auto-generated CFSML data writer code
-#line 639 "engines/sci/engine/savegame.cfsml"
+#line 638 "engines/sci/engine/savegame.cfsml"
break;
case MEM_OBJ_NODES:
#line 822 "engines/sci/engine/savegame.cfsml"
// Auto-generated CFSML data writer code
- _cfsml_write_node_table_t(fh, &foo->data.nodes);
+ _cfsml_write_NodeTable(fh, &foo->data.nodes);
WSprintf(fh, "\n");
// End of auto-generated CFSML data writer code
-#line 642 "engines/sci/engine/savegame.cfsml"
+#line 641 "engines/sci/engine/savegame.cfsml"
break;
case MEM_OBJ_DYNMEM:
#line 822 "engines/sci/engine/savegame.cfsml"
// Auto-generated CFSML data writer code
- _cfsml_write_dynmem_t(fh, &foo->data.dynmem);
+ _cfsml_write_DynMem(fh, &foo->data.dynmem);
WSprintf(fh, "\n");
// End of auto-generated CFSML data writer code
-#line 645 "engines/sci/engine/savegame.cfsml"
+#line 644 "engines/sci/engine/savegame.cfsml"
break;
default:
break;
}
}
-int read_mem_obj_t(Common::SeekableReadStream *fh, mem_obj_t *foo, const char *lastval, int *line, int *hiteof) {
+int read_MemObject(Common::SeekableReadStream *fh, MemObject *foo, const char *lastval, int *line, int *hiteof) {
foo->type = (memObjType)mem_obj_string_to_enum(lastval);
if (foo->type < 0) {
- sciprintf("Unknown mem_obj_t type %s on line %d\n", lastval, *line);
+ sciprintf("Unknown MemObject type %s on line %d\n", lastval, *line);
return 1;
}
@@ -4413,7 +4412,7 @@ int read_mem_obj_t(Common::SeekableReadStream *fh, mem_obj_t *foo, const char *l
}
}
// End of auto-generated CFSML data reader code
-#line 659 "engines/sci/engine/savegame.cfsml"
+#line 658 "engines/sci/engine/savegame.cfsml"
switch (foo->type) {
case MEM_OBJ_SCRIPT:
// Auto-generated CFSML data reader code
@@ -4427,7 +4426,7 @@ int read_mem_obj_t(Common::SeekableReadStream *fh, mem_obj_t *foo, const char *l
_cfsml_error = CFSML_FAILURE;
} else {
#line 792 "engines/sci/engine/savegame.cfsml"
- _cfsml_error = _cfsml_read_script_t(fh, &foo->data.script, _cfsml_inp, &(*line), &_cfsml_eof);
+ _cfsml_error = _cfsml_read_Script(fh, &foo->data.script, _cfsml_inp, &(*line), &_cfsml_eof);
}
#line 797 "engines/sci/engine/savegame.cfsml"
*hiteof = _cfsml_error;
@@ -4442,7 +4441,7 @@ int read_mem_obj_t(Common::SeekableReadStream *fh, mem_obj_t *foo, const char *l
}
}
// End of auto-generated CFSML data reader code
-#line 662 "engines/sci/engine/savegame.cfsml"
+#line 661 "engines/sci/engine/savegame.cfsml"
break;
case MEM_OBJ_CLONES:
// Auto-generated CFSML data reader code
@@ -4456,7 +4455,7 @@ int read_mem_obj_t(Common::SeekableReadStream *fh, mem_obj_t *foo, const char *l
_cfsml_error = CFSML_FAILURE;
} else {
#line 792 "engines/sci/engine/savegame.cfsml"
- _cfsml_error = _cfsml_read_clone_table_t(fh, &foo->data.clones, _cfsml_inp, &(*line), &_cfsml_eof);
+ _cfsml_error = _cfsml_read_CloneTable(fh, &foo->data.clones, _cfsml_inp, &(*line), &_cfsml_eof);
}
#line 797 "engines/sci/engine/savegame.cfsml"
*hiteof = _cfsml_error;
@@ -4471,7 +4470,7 @@ int read_mem_obj_t(Common::SeekableReadStream *fh, mem_obj_t *foo, const char *l
}
}
// End of auto-generated CFSML data reader code
-#line 665 "engines/sci/engine/savegame.cfsml"
+#line 664 "engines/sci/engine/savegame.cfsml"
break;
case MEM_OBJ_LOCALS:
// Auto-generated CFSML data reader code
@@ -4485,7 +4484,7 @@ int read_mem_obj_t(Common::SeekableReadStream *fh, mem_obj_t *foo, const char *l
_cfsml_error = CFSML_FAILURE;
} else {
#line 792 "engines/sci/engine/savegame.cfsml"
- _cfsml_error = _cfsml_read_local_variables_t(fh, &foo->data.locals, _cfsml_inp, &(*line), &_cfsml_eof);
+ _cfsml_error = _cfsml_read_LocalVariables(fh, &foo->data.locals, _cfsml_inp, &(*line), &_cfsml_eof);
}
#line 797 "engines/sci/engine/savegame.cfsml"
*hiteof = _cfsml_error;
@@ -4500,7 +4499,7 @@ int read_mem_obj_t(Common::SeekableReadStream *fh, mem_obj_t *foo, const char *l
}
}
// End of auto-generated CFSML data reader code
-#line 668 "engines/sci/engine/savegame.cfsml"
+#line 667 "engines/sci/engine/savegame.cfsml"
break;
case MEM_OBJ_SYS_STRINGS:
// Auto-generated CFSML data reader code
@@ -4529,7 +4528,7 @@ int read_mem_obj_t(Common::SeekableReadStream *fh, mem_obj_t *foo, const char *l
}
}
// End of auto-generated CFSML data reader code
-#line 671 "engines/sci/engine/savegame.cfsml"
+#line 670 "engines/sci/engine/savegame.cfsml"
break;
case MEM_OBJ_LISTS:
// Auto-generated CFSML data reader code
@@ -4543,7 +4542,7 @@ int read_mem_obj_t(Common::SeekableReadStream *fh, mem_obj_t *foo, const char *l
_cfsml_error = CFSML_FAILURE;
} else {
#line 792 "engines/sci/engine/savegame.cfsml"
- _cfsml_error = _cfsml_read_list_table_t(fh, &foo->data.lists, _cfsml_inp, &(*line), &_cfsml_eof);
+ _cfsml_error = _cfsml_read_ListTable(fh, &foo->data.lists, _cfsml_inp, &(*line), &_cfsml_eof);
}
#line 797 "engines/sci/engine/savegame.cfsml"
*hiteof = _cfsml_error;
@@ -4558,7 +4557,7 @@ int read_mem_obj_t(Common::SeekableReadStream *fh, mem_obj_t *foo, const char *l
}
}
// End of auto-generated CFSML data reader code
-#line 674 "engines/sci/engine/savegame.cfsml"
+#line 673 "engines/sci/engine/savegame.cfsml"
break;
case MEM_OBJ_NODES:
// Auto-generated CFSML data reader code
@@ -4572,7 +4571,7 @@ int read_mem_obj_t(Common::SeekableReadStream *fh, mem_obj_t *foo, const char *l
_cfsml_error = CFSML_FAILURE;
} else {
#line 792 "engines/sci/engine/savegame.cfsml"
- _cfsml_error = _cfsml_read_node_table_t(fh, &foo->data.nodes, _cfsml_inp, &(*line), &_cfsml_eof);
+ _cfsml_error = _cfsml_read_NodeTable(fh, &foo->data.nodes, _cfsml_inp, &(*line), &_cfsml_eof);
}
#line 797 "engines/sci/engine/savegame.cfsml"
*hiteof = _cfsml_error;
@@ -4587,7 +4586,7 @@ int read_mem_obj_t(Common::SeekableReadStream *fh, mem_obj_t *foo, const char *l
}
}
// End of auto-generated CFSML data reader code
-#line 677 "engines/sci/engine/savegame.cfsml"
+#line 676 "engines/sci/engine/savegame.cfsml"
break;
case MEM_OBJ_STACK:
// Auto-generated CFSML data reader code
@@ -4616,11 +4615,11 @@ int read_mem_obj_t(Common::SeekableReadStream *fh, mem_obj_t *foo, const char *l
}
}
// End of auto-generated CFSML data reader code
-#line 680 "engines/sci/engine/savegame.cfsml"
+#line 679 "engines/sci/engine/savegame.cfsml"
foo->data.stack.entries = (reg_t *)sci_calloc(foo->data.stack.nr, sizeof(reg_t));
break;
case MEM_OBJ_HUNK:
- init_hunk_table(&foo->data.hunks);
+ init_Hunk_table(&foo->data.hunks);
break;
case MEM_OBJ_DYNMEM:
// Auto-generated CFSML data reader code
@@ -4634,7 +4633,7 @@ int read_mem_obj_t(Common::SeekableReadStream *fh, mem_obj_t *foo, const char *l
_cfsml_error = CFSML_FAILURE;
} else {
#line 792 "engines/sci/engine/savegame.cfsml"
- _cfsml_error = _cfsml_read_dynmem_t(fh, &foo->data.dynmem, _cfsml_inp, &(*line), &_cfsml_eof);
+ _cfsml_error = _cfsml_read_DynMem(fh, &foo->data.dynmem, _cfsml_inp, &(*line), &_cfsml_eof);
}
#line 797 "engines/sci/engine/savegame.cfsml"
*hiteof = _cfsml_error;
@@ -4649,7 +4648,7 @@ int read_mem_obj_t(Common::SeekableReadStream *fh, mem_obj_t *foo, const char *l
}
}
// End of auto-generated CFSML data reader code
-#line 687 "engines/sci/engine/savegame.cfsml"
+#line 686 "engines/sci/engine/savegame.cfsml"
break;
default:
break;
@@ -4658,24 +4657,24 @@ int read_mem_obj_t(Common::SeekableReadStream *fh, mem_obj_t *foo, const char *l
return *hiteof;
}
-void write_mem_obj_tp(Common::WriteStream *fh, const mem_obj_t * const *foo) {
+void write_MemObjPtr(Common::WriteStream *fh, const MemObject * const *foo) {
if (*foo) {
#line 822 "engines/sci/engine/savegame.cfsml"
// Auto-generated CFSML data writer code
- write_mem_obj_t(fh, (*foo));
+ write_MemObject(fh, (*foo));
WSprintf(fh, "\n");
// End of auto-generated CFSML data writer code
-#line 698 "engines/sci/engine/savegame.cfsml"
+#line 697 "engines/sci/engine/savegame.cfsml"
} else { // Nothing to write
WSprintf(fh, "\\null\\");
}
}
-int read_mem_obj_tp(Common::SeekableReadStream *fh, mem_obj_t **foo, const char *lastval, int *line, int *hiteof) {
+int read_MemObjPtr(Common::SeekableReadStream *fh, MemObject **foo, const char *lastval, int *line, int *hiteof) {
if (lastval[0] == '\\') {
*foo = NULL; // No menu bar
} else {
- *foo = (mem_obj_t *)sci_malloc(sizeof(mem_obj_t));
+ *foo = (MemObject *)sci_malloc(sizeof(MemObject));
// Auto-generated CFSML data reader code
#line 766 "engines/sci/engine/savegame.cfsml"
{
@@ -4685,7 +4684,7 @@ int read_mem_obj_tp(Common::SeekableReadStream *fh, mem_obj_t **foo, const char
const char *_cfsml_inp = lastval;
{
#line 792 "engines/sci/engine/savegame.cfsml"
- _cfsml_error = read_mem_obj_t(fh, (*foo), _cfsml_inp, &(*line), &_cfsml_eof);
+ _cfsml_error = read_MemObject(fh, (*foo), _cfsml_inp, &(*line), &_cfsml_eof);
}
#line 797 "engines/sci/engine/savegame.cfsml"
*hiteof = _cfsml_error;
@@ -4700,7 +4699,7 @@ int read_mem_obj_tp(Common::SeekableReadStream *fh, mem_obj_t **foo, const char
}
}
// End of auto-generated CFSML data reader code
-#line 709 "engines/sci/engine/savegame.cfsml"
+#line 708 "engines/sci/engine/savegame.cfsml"
return *hiteof;
}
return 0;
@@ -4714,7 +4713,7 @@ void write_CommonString(Common::WriteStream *fh, Common::String const *string)
_cfsml_write_string(fh, (&t));
WSprintf(fh, "\n");
// End of auto-generated CFSML data writer code
-#line 718 "engines/sci/engine/savegame.cfsml"
+#line 717 "engines/sci/engine/savegame.cfsml"
}
int read_CommonString(Common::SeekableReadStream *fh, Common::String *string, const char *lastval, int *line, int *hiteof)
@@ -4749,7 +4748,7 @@ int read_CommonString(Common::SeekableReadStream *fh, Common::String *string, co
}
}
// End of auto-generated CFSML data reader code
-#line 725 "engines/sci/engine/savegame.cfsml"
+#line 724 "engines/sci/engine/savegame.cfsml"
if (*hiteof) return *hiteof;
*string = t;
free(t);
@@ -4762,13 +4761,13 @@ void write_SegManagerPtr(Common::WriteStream *fh, const SegManager * const *foo)
_cfsml_write_bool(fh, &((*foo)->isSci1_1));
WSprintf(fh, "\n");
// End of auto-generated CFSML data writer code
-#line 733 "engines/sci/engine/savegame.cfsml"
+#line 732 "engines/sci/engine/savegame.cfsml"
#line 822 "engines/sci/engine/savegame.cfsml"
// Auto-generated CFSML data writer code
_cfsml_write_SegManager(fh, *foo);
WSprintf(fh, "\n");
// End of auto-generated CFSML data writer code
-#line 734 "engines/sci/engine/savegame.cfsml"
+#line 733 "engines/sci/engine/savegame.cfsml"
}
int read_SegManagerPtr(Common::SeekableReadStream *fh, SegManager **foo, const char *lastval, int *line, int *hiteof) {
@@ -4799,7 +4798,7 @@ int read_SegManagerPtr(Common::SeekableReadStream *fh, SegManager **foo, const c
}
}
// End of auto-generated CFSML data reader code
-#line 741 "engines/sci/engine/savegame.cfsml"
+#line 740 "engines/sci/engine/savegame.cfsml"
*foo = new SegManager(sci11);
token = _cfsml_get_identifier(fh, line, hiteof, &assignment);
// Auto-generated CFSML data reader code
@@ -4826,7 +4825,7 @@ int read_SegManagerPtr(Common::SeekableReadStream *fh, SegManager **foo, const c
}
}
// End of auto-generated CFSML data reader code
-#line 744 "engines/sci/engine/savegame.cfsml"
+#line 743 "engines/sci/engine/savegame.cfsml"
return 0;
}
@@ -4876,20 +4875,20 @@ int gamestate_save(EngineState *s, Common::WriteStream *fh, const char* savename
_cfsml_write_SavegameMetadata(fh, (&meta));
WSprintf(fh, "\n");
// End of auto-generated CFSML data writer code
-#line 789 "engines/sci/engine/savegame.cfsml"
+#line 788 "engines/sci/engine/savegame.cfsml"
#line 822 "engines/sci/engine/savegame.cfsml"
// Auto-generated CFSML data writer code
_cfsml_write_EngineState(fh, s);
WSprintf(fh, "\n");
// End of auto-generated CFSML data writer code
-#line 790 "engines/sci/engine/savegame.cfsml"
+#line 789 "engines/sci/engine/savegame.cfsml"
_gamestate_unfrob(s);
return 0;
}
-static seg_id_t find_unique_seg_by_type(SegManager *self, int type) {
+static SegmentId find_unique_seg_by_type(SegManager *self, int type) {
int i;
for (i = 0; i < self->heap_size; i++)
@@ -4918,7 +4917,7 @@ static byte *find_unique_script_block(EngineState *s, byte *buf, int type) {
}
static void reconstruct_stack(EngineState *retval) {
- seg_id_t stack_seg = find_unique_seg_by_type(retval->seg_manager, MEM_OBJ_STACK);
+ SegmentId stack_seg = find_unique_seg_by_type(retval->seg_manager, MEM_OBJ_STACK);
dstack_t *stack = &(retval->seg_manager->heap[stack_seg]->data.stack);
retval->stack_segment = stack_seg;
@@ -4926,10 +4925,10 @@ static void reconstruct_stack(EngineState *retval) {
retval->stack_top = retval->stack_base + VM_STACK_SIZE;
}
-static int clone_entry_used(clone_table_t *table, int n) {
+static int clone_entry_used(CloneTable *table, int n) {
int backup;
int seeker = table->first_free;
- clone_entry_t *entries = table->table;
+ CloneEntry *entries = table->table;
if (seeker == HEAPENTRY_INVALID) return 1;
@@ -4942,9 +4941,9 @@ static int clone_entry_used(clone_table_t *table, int n) {
return 1;
}
-static void load_script(EngineState *s, seg_id_t seg) {
+static void load_script(EngineState *s, SegmentId seg) {
resource_t *script, *heap = NULL;
- script_t *scr = &(s->seg_manager->heap[seg]->data.script);
+ Script *scr = &(s->seg_manager->heap[seg]->data.script);
scr->buf = (byte *)malloc(scr->buf_size);
@@ -4965,14 +4964,14 @@ static void load_script(EngineState *s, seg_id_t seg) {
static void reconstruct_scripts(EngineState *s, SegManager *self) {
int i;
- mem_obj_t *mobj;
+ MemObject *mobj;
for (i = 0; i < self->heap_size; i++) {
if (self->heap[i]) {
mobj = self->heap[i];
switch (mobj->type) {
case MEM_OBJ_SCRIPT: {
int j;
- script_t *scr = &mobj->data.script;
+ Script *scr = &mobj->data.script;
load_script(s, i);
scr->locals_block = scr->locals_segment == 0 ? NULL : &s->seg_manager->heap[scr->locals_segment]->data.locals;
@@ -5004,7 +5003,7 @@ static void reconstruct_scripts(EngineState *s, SegManager *self) {
switch (mobj->type) {
case MEM_OBJ_SCRIPT: {
int j;
- script_t *scr = &mobj->data.script;
+ Script *scr = &mobj->data.script;
for (j = 0; j < scr->objects_nr; j++) {
byte *data = scr->buf + scr->objects[j].pos.offset;
@@ -5017,7 +5016,7 @@ static void reconstruct_scripts(EngineState *s, SegManager *self) {
scr->objects[j].base_vars = prop_area;
} else {
int funct_area = getUInt16( data + SCRIPT_FUNCTAREAPTR_OFFSET );
- object_t *base_obj;
+ Object *base_obj;
base_obj = obj_get(s, scr->objects[j].variables[SCRIPT_SPECIES_SELECTOR]);
@@ -5044,7 +5043,7 @@ static void reconstruct_scripts(EngineState *s, SegManager *self) {
void reconstruct_clones(EngineState *s, SegManager *self) {
int i;
- mem_obj_t *mobj;
+ MemObject *mobj;
for (i = 0; i < self->heap_size; i++) {
if (self->heap[i]) {
@@ -5052,7 +5051,7 @@ void reconstruct_clones(EngineState *s, SegManager *self) {
switch (mobj->type) {
case MEM_OBJ_CLONES: {
int j;
- clone_entry_t *seeker = mobj->data.clones.table;
+ CloneEntry *seeker = mobj->data.clones.table;
sciprintf("Free list: ");
for (j = mobj->data.clones.first_free; j != HEAPENTRY_INVALID; j = mobj->data.clones.table[j].next_free) {
@@ -5068,7 +5067,7 @@ void reconstruct_clones(EngineState *s, SegManager *self) {
sciprintf("\n");
for (j = 0; j < mobj->data.clones.max_entry; j++) {
- object_t *base_obj;
+ Object *base_obj;
if (!clone_entry_used(&mobj->data.clones, j)) {
seeker++;
@@ -5190,7 +5189,7 @@ EngineState *gamestate_restore(EngineState *s, Common::SeekableReadStream *fh) {
}
}
// End of auto-generated CFSML data reader code
-#line 1066 "engines/sci/engine/savegame.cfsml"
+#line 1065 "engines/sci/engine/savegame.cfsml"
if (read_eof)
return false;
@@ -5246,7 +5245,7 @@ EngineState *gamestate_restore(EngineState *s, Common::SeekableReadStream *fh) {
}
}
// End of auto-generated CFSML data reader code
-#line 1090 "engines/sci/engine/savegame.cfsml"
+#line 1089 "engines/sci/engine/savegame.cfsml"
sfx_exit(&s->sound);
_gamestate_unfrob(retval);
@@ -5279,7 +5278,7 @@ EngineState *gamestate_restore(EngineState *s, Common::SeekableReadStream *fh) {
retval->save_dir_copy = make_reg(s->sys_strings_segment, SYS_STRING_SAVEDIR);
retval->save_dir_edit_offset = 0;
retval->sys_strings_segment = find_unique_seg_by_type(retval->seg_manager, MEM_OBJ_SYS_STRINGS);
- retval->sys_strings = &(((mem_obj_t *)(GET_SEGMENT(*retval->seg_manager, retval->sys_strings_segment, MEM_OBJ_SYS_STRINGS)))->data.sys_strings);
+ retval->sys_strings = &(((MemObject *)(GET_SEGMENT(*retval->seg_manager, retval->sys_strings_segment, MEM_OBJ_SYS_STRINGS)))->data.sys_strings);
// Restore system strings
SystemString *str;
@@ -5384,7 +5383,7 @@ bool get_savegame_metadata(Common::SeekableReadStream* stream, SavegameMetadata*
}
}
// End of auto-generated CFSML data reader code
-#line 1196 "engines/sci/engine/savegame.cfsml"
+#line 1195 "engines/sci/engine/savegame.cfsml"
if (read_eof)
return false;
diff --git a/engines/sci/engine/script.h b/engines/sci/engine/script.h
index d30a0cd41b..fcc2f843f9 100644
--- a/engines/sci/engine/script.h
+++ b/engines/sci/engine/script.h
@@ -37,11 +37,14 @@ struct ResourceManager;
#define SCI_SCRIPTS_NR 1000
+#if 0
+// Unreferenced
struct script_opcode {
unsigned opcode;
int arg1, arg2, arg3;
int pos, size;
};
+#endif
enum script_object_types {
diff --git a/engines/sci/engine/scriptconsole.cpp b/engines/sci/engine/scriptconsole.cpp
index 9a99685677..68146afc24 100644
--- a/engines/sci/engine/scriptconsole.cpp
+++ b/engines/sci/engine/scriptconsole.cpp
@@ -208,7 +208,7 @@ void con_init() {
}
}
-static inline int clone_is_used(clone_table_t *t, int idx) {
+static inline int clone_is_used(CloneTable *t, int idx) {
return ENTRY_IS_VALID(t, idx);
}
@@ -306,7 +306,7 @@ int parse_reg_t(EngineState *s, const char *str, reg_t *dest) { // Returns 0 on
// Now all values are available; iterate over all objects.
for (i = 0; i < s->seg_manager->heap_size; i++) {
- mem_obj_t *mobj = s->seg_manager->heap[i];
+ MemObject *mobj = s->seg_manager->heap[i];
int idx = 0;
int max_index = 0;
@@ -319,7 +319,7 @@ int parse_reg_t(EngineState *s, const char *str, reg_t *dest) { // Returns 0 on
while (idx < max_index) {
int valid = 1;
- object_t *obj = NULL;
+ Object *obj = NULL;
reg_t objpos;
objpos.offset = 0;
objpos.segment = i;
diff --git a/engines/sci/engine/scriptdebug.cpp b/engines/sci/engine/scriptdebug.cpp
index b84e703c47..9307bc0b09 100644
--- a/engines/sci/engine/scriptdebug.cpp
+++ b/engines/sci/engine/scriptdebug.cpp
@@ -61,11 +61,11 @@ reg_t _debug_seek_reg = NULL_REG; // Used for special seeks(2)
#define _DEBUG_SEEK_GLOBAL 6 // Step forward until one specified global variable is modified
static reg_t *p_pc;
-static stack_ptr_t *p_sp;
-static stack_ptr_t *p_pp;
+static StackPtr *p_sp;
+static StackPtr *p_pp;
static reg_t *p_objp;
static int *p_restadjust;
-static seg_id_t *p_var_segs;
+static SegmentId *p_var_segs;
static reg_t **p_vars;
static reg_t **p_var_base;
static int *p_var_max; // May be NULL even in valid state!
@@ -279,7 +279,7 @@ int c_segtable(EngineState *s) {
sciprintf(" ---- segment table ----\n");
for (i = 0; i < s->seg_manager->heap_size; i++) {
- mem_obj_t *mobj = s->seg_manager->heap[i];
+ MemObject *mobj = s->seg_manager->heap[i];
if (mobj && mobj->type) {
sciprintf(" [%04x] ", i);
@@ -333,20 +333,20 @@ int c_segtable(EngineState *s) {
return 0;
}
-static void print_obj_head(EngineState *s, object_t *obj) {
+static void print_obj_head(EngineState *s, Object *obj) {
sciprintf(PREG" %s : %3d vars, %3d methods\n", PRINT_REG(obj->pos), obj_get_name(s, obj->pos),
obj->variables_nr, obj->methods_nr);
}
-static void print_list(EngineState *s, list_t *l) {
+static void print_list(EngineState *s, List *l) {
reg_t pos = l->first;
reg_t my_prev = NULL_REG;
sciprintf("\t<\n");
while (!IS_NULL_REG(pos)) {
- node_t *node;
- mem_obj_t *mobj = GET_SEGMENT(*s->seg_manager, pos.segment, MEM_OBJ_NODES);
+ Node *node;
+ MemObject *mobj = GET_SEGMENT(*s->seg_manager, pos.segment, MEM_OBJ_NODES);
if (!mobj || !ENTRY_IS_VALID(&(mobj->data.nodes), pos.offset)) {
sciprintf(" WARNING: "PREG": Doesn't contain list node!\n",
@@ -372,12 +372,12 @@ static void print_list(EngineState *s, list_t *l) {
sciprintf("\t>\n");
}
-static void _c_single_seg_info(EngineState *s, mem_obj_t *mobj) {
+static void _c_single_seg_info(EngineState *s, MemObject *mobj) {
switch (mobj->type) {
case MEM_OBJ_SCRIPT: {
int i;
- script_t *scr = &(mobj->data.script);
+ Script *scr = &(mobj->data.script);
sciprintf("script.%03d locked by %d, bufsize=%d (%x)\n", scr->nr, scr->lockers, (uint)scr->buf_size, (uint)scr->buf_size);
if (scr->export_table)
sciprintf(" Exports: %4d at %d\n", scr->exports_nr, (int)(((byte *)scr->export_table) - ((byte *)scr->buf)));
@@ -400,7 +400,7 @@ static void _c_single_seg_info(EngineState *s, mem_obj_t *mobj) {
break;
case MEM_OBJ_LOCALS: {
- local_variables_t *locals = &(mobj->data.locals);
+ LocalVariables *locals = &(mobj->data.locals);
sciprintf("locals for script.%03d\n", locals->script_id);
sciprintf(" %d (0x%x) locals\n", locals->nr, locals->nr);
}
@@ -426,7 +426,7 @@ static void _c_single_seg_info(EngineState *s, mem_obj_t *mobj) {
case MEM_OBJ_CLONES: {
int i = 0;
- clone_table_t *ct = &(mobj->data.clones);
+ CloneTable *ct = &(mobj->data.clones);
sciprintf("clones\n");
@@ -440,7 +440,7 @@ static void _c_single_seg_info(EngineState *s, mem_obj_t *mobj) {
case MEM_OBJ_LISTS: {
int i = 0;
- list_table_t *lt = &(mobj->data.lists);
+ ListTable *lt = &(mobj->data.lists);
sciprintf("lists\n");
for (i = 0; i < lt->max_entry; i++)
@@ -458,7 +458,7 @@ static void _c_single_seg_info(EngineState *s, mem_obj_t *mobj) {
case MEM_OBJ_HUNK: {
int i;
- hunk_table_t *ht = &(mobj->data.hunks);
+ HunkTable *ht = &(mobj->data.hunks);
sciprintf("hunk (total %d)\n", mobj->data.hunks.entries_used);
for (i = 0; i < ht->max_entry; i++)
@@ -483,11 +483,11 @@ static void _c_single_seg_info(EngineState *s, mem_obj_t *mobj) {
}
static int show_node(EngineState *s, reg_t addr) {
- mem_obj_t *mobj = GET_SEGMENT(*s->seg_manager, addr.segment, MEM_OBJ_LISTS);
+ MemObject *mobj = GET_SEGMENT(*s->seg_manager, addr.segment, MEM_OBJ_LISTS);
if (mobj) {
- list_table_t *lt = &(mobj->data.lists);
- list_t *list;
+ ListTable *lt = &(mobj->data.lists);
+ List *list;
if (!ENTRY_IS_VALID(lt, addr.offset)) {
sciprintf("Address does not contain a list\n");
@@ -498,8 +498,8 @@ static int show_node(EngineState *s, reg_t addr) {
sciprintf(PREG" : first x last = ("PREG", "PREG")\n", PRINT_REG(addr), PRINT_REG(list->first), PRINT_REG(list->last));
} else {
- node_table_t *nt;
- node_t *node;
+ NodeTable *nt;
+ Node *node;
mobj = GET_SEGMENT(*s->seg_manager, addr.segment, MEM_OBJ_NODES);
if (!mobj) {
@@ -566,7 +566,7 @@ static int c_vr(EngineState *s) {
break;
case KSIG_LIST: {
- list_t *l = LOOKUP_LIST(reg);
+ List *l = LOOKUP_LIST(reg);
sciprintf("list\n");
@@ -675,7 +675,7 @@ int c_seginfo(EngineState *s) {
}
int c_debuginfo(EngineState *s) {
- exec_stack_t *eframe = NULL;
+ ExecStack *eframe = NULL;
if (!_debugstate_valid) {
sciprintf("Not in debug state\n");
@@ -1149,7 +1149,7 @@ int c_restart_game(EngineState *s) {
int c_stack(EngineState *s) {
int i;
- exec_stack_t *xs;
+ ExecStack *xs;
if (!s) {
sciprintf("Not in debug state\n");
@@ -1181,7 +1181,7 @@ const char *selector_name(EngineState *s, int selector) {
}
int prop_ofs_to_id(EngineState *s, int prop_ofs, reg_t objp) {
- object_t *obj = obj_get(s, objp);
+ Object *obj = obj_get(s, objp);
byte *selectoroffset;
int selectors;
@@ -1213,8 +1213,8 @@ int prop_ofs_to_id(EngineState *s, int prop_ofs, reg_t objp) {
reg_t disassemble(EngineState *s, reg_t pos, int print_bw_tag, int print_bytecode) {
// Disassembles one command from the heap, returns address of next command or 0 if a ret was encountered.
- mem_obj_t *memobj = GET_SEGMENT(*s->seg_manager, pos.segment, MEM_OBJ_SCRIPT);
- script_t *script_entity = NULL;
+ MemObject *memobj = GET_SEGMENT(*s->seg_manager, pos.segment, MEM_OBJ_SCRIPT);
+ Script *script_entity = NULL;
byte *scr;
int scr_size;
reg_t retval = make_reg(pos.segment, pos.offset + 1);
@@ -1426,15 +1426,15 @@ reg_t disassemble(EngineState *s, reg_t pos, int print_bw_tag, int print_bytecod
sciprintf(" %s::%s[", name, (selector > s->_selectorNames.size()) ? "<invalid>" : selector_name(s, selector));
switch (lookup_selector(s, called_obj_addr, selector, &val_ref, &fun_ref)) {
- case SELECTOR_METHOD:
+ case kSelectorMethod:
sciprintf("FUNCT");
argc += restmod;
restmod = 0;
break;
- case SELECTOR_VARIABLE:
+ case kSelectorVariable:
sciprintf("VAR");
break;
- case SELECTOR_NONE:
+ case kSelectorNone:
sciprintf("INVALID");
break;
}
@@ -1540,7 +1540,7 @@ static int c_backtrace(EngineState *s) {
sciprintf("Call stack (current base: 0x%x):\n", s->execution_stack_base);
for (i = 0; i <= s->execution_stack_pos; i++) {
- exec_stack_t *call = &(s->execution_stack[i]);
+ ExecStack *call = &(s->execution_stack[i]);
const char *objname = obj_get_name(s, call->sendp);
int paramc, totalparamc;
@@ -1929,7 +1929,7 @@ static int c_gfx_draw_viewobj(EngineState *s) {
#warning "Re-implement con:gfx_draw_viewobj"
#endif
#if 0
- heap_ptr pos = (heap_ptr)(cmd_params[0].val);
+ HeapPtr pos = (HeapPtr)(cmd_params[0].val);
int is_view;
int x, y, priority;
int nsLeft, nsRight, nsBottom, nsTop;
@@ -1951,10 +1951,10 @@ static int c_gfx_draw_viewobj(EngineState *s) {
}
- is_view = (lookup_selector(s, pos, s->selector_map.x, NULL) == SELECTOR_VARIABLE) &&
- (lookup_selector(s, pos, s->selector_map.brLeft, NULL) == SELECTOR_VARIABLE) &&
- (lookup_selector(s, pos, s->selector_map.signal, NULL) == SELECTOR_VARIABLE) &&
- (lookup_selector(s, pos, s->selector_map.nsTop, NULL) == SELECTOR_VARIABLE);
+ is_view = (lookup_selector(s, pos, s->selector_map.x, NULL) == kSelectorVariable) &&
+ (lookup_selector(s, pos, s->selector_map.brLeft, NULL) == kSelectorVariable) &&
+ (lookup_selector(s, pos, s->selector_map.signal, NULL) == kSelectorVariable) &&
+ (lookup_selector(s, pos, s->selector_map.nsTop, NULL) == kSelectorVariable);
if (!is_view) {
sciprintf("Not a dynamic View object.\n");
@@ -2051,7 +2051,7 @@ static int c_disasm_addr(EngineState *s) {
}
static int c_disasm(EngineState *s) {
- object_t *obj = obj_get(s, cmd_params[0].reg);
+ Object *obj = obj_get(s, cmd_params[0].reg);
int selector_id = script_find_selector(s, cmd_params[1].str);
reg_t addr;
@@ -2065,7 +2065,7 @@ static int c_disasm(EngineState *s) {
return 1;
}
- if (lookup_selector(s, cmd_params[0].reg, selector_id, NULL, &addr) != SELECTOR_METHOD) {
+ if (lookup_selector(s, cmd_params[0].reg, selector_id, NULL, &addr) != kSelectorMethod) {
sciprintf("Not a method.");
return 1;
}
@@ -2148,11 +2148,11 @@ static int c_set_acc(EngineState *s) {
static int c_send(EngineState *s) {
reg_t object = cmd_params[0].reg;
char *selector_name = cmd_params[1].str;
- stack_ptr_t stackframe = s->execution_stack->sp;
+ StackPtr stackframe = s->execution_stack->sp;
int selector_id;
- unsigned int i, selector_type;
- exec_stack_t *xstack;
- object_t *o;
+ unsigned int i;
+ ExecStack *xstack;
+ Object *o;
reg_t *vptr;
reg_t fptr;
@@ -2169,9 +2169,9 @@ static int c_send(EngineState *s) {
return 1;
}
- selector_type = lookup_selector(s, object, selector_id, &vptr, &fptr);
+ SelectorType selector_type = lookup_selector(s, object, selector_id, &vptr, &fptr);
- if (selector_type == SELECTOR_NONE) {
+ if (selector_type == kSelectorNone) {
sciprintf("Object does not support selector: \"%s\"\n", selector_name);
return 1;
}
@@ -2185,7 +2185,7 @@ static int c_send(EngineState *s) {
xstack = add_exec_stack_entry(s, fptr, s->execution_stack->sp + cmd_paramlength, object, cmd_paramlength - 2,
s->execution_stack->sp - 1, 0, object, s->execution_stack_pos, SCI_XS_CALLEE_LOCALS);
xstack->selector = selector_id;
- xstack->type = selector_type == SELECTOR_VARIABLE ? EXEC_STACK_TYPE_VARSELECTOR : EXEC_STACK_TYPE_CALL;
+ xstack->type = selector_type == kSelectorVariable ? EXEC_STACK_TYPE_VARSELECTOR : EXEC_STACK_TYPE_CALL;
// Now commit the actual function:
xstack = send_selector(s, object, object, stackframe, cmd_paramlength - 2, stackframe);
@@ -2456,7 +2456,7 @@ int c_simsoundcue(EngineState *s) {
#ifdef __GNUC__
#warning "Re-implement viewobjinfo"
#endif
-static void viewobjinfo(EngineState *s, heap_ptr pos) {
+static void viewobjinfo(EngineState *s, HeapPtr pos) {
char *signals[16] = {
"stop_update",
"updated",
@@ -2485,7 +2485,7 @@ static void viewobjinfo(EngineState *s, heap_ptr pos) {
int have_rects = 0;
abs_rect_t nsrect, nsrect_clipped, brrect;
- if (lookup_selector(s, pos, s->selector_map.nsBottom, NULL) == SELECTOR_VARIABLE) {
+ if (lookup_selector(s, pos, s->selector_map.nsBottom, NULL) == kSelectorVariable) {
GETRECT(nsLeft, nsRight, nsBottom, nsTop);
GETRECT(lsLeft, lsRight, lsBottom, lsTop);
GETRECT(brLeft, brRight, brBottom, brTop);
@@ -2532,8 +2532,8 @@ static void viewobjinfo(EngineState *s, heap_ptr pos) {
#undef GETRECT
int objinfo(EngineState *s, reg_t pos) {
- object_t *obj = obj_get(s, pos);
- object_t *var_container = obj;
+ Object *obj = obj_get(s, pos);
+ Object *var_container = obj;
int i;
sciprintf("["PREG"]: ", PRINT_REG(pos));
@@ -2587,17 +2587,17 @@ int c_shownode(EngineState *s) {
// Breakpoint commands
-static breakpoint_t *bp_alloc(EngineState *s) {
- breakpoint_t *bp;
+static Breakpoint *bp_alloc(EngineState *s) {
+ Breakpoint *bp;
if (s->bp_list) {
bp = s->bp_list;
while (bp->next)
bp = bp->next;
- bp->next = (breakpoint_t *)sci_malloc(sizeof(breakpoint_t));
+ bp->next = (Breakpoint *)sci_malloc(sizeof(Breakpoint));
bp = bp->next;
} else {
- s->bp_list = (breakpoint_t *)sci_malloc(sizeof(breakpoint_t));
+ s->bp_list = (Breakpoint *)sci_malloc(sizeof(Breakpoint));
bp = s->bp_list;
}
@@ -2607,7 +2607,7 @@ static breakpoint_t *bp_alloc(EngineState *s) {
}
int c_bpx(EngineState *s) {
- breakpoint_t *bp;
+ Breakpoint *bp;
/* Note: We can set a breakpoint on a method that has not been loaded yet.
Thus, we can't check whether the command argument is a valid method name.
@@ -2624,7 +2624,7 @@ int c_bpx(EngineState *s) {
}
int c_bpe(EngineState *s) {
- breakpoint_t *bp;
+ Breakpoint *bp;
bp = bp_alloc(s);
@@ -2636,7 +2636,7 @@ int c_bpe(EngineState *s) {
}
int c_bplist(EngineState *s) {
- breakpoint_t *bp;
+ Breakpoint *bp;
int i = 0;
int bpdata;
@@ -2661,7 +2661,7 @@ int c_bplist(EngineState *s) {
}
int c_bpdel(EngineState *s) {
- breakpoint_t *bp, *bp_next, *bp_prev;
+ Breakpoint *bp, *bp_next, *bp_prev;
int i = 0, found = 0;
int type;
@@ -2861,8 +2861,8 @@ static int c_gc_list_reachable(EngineState *s) {
return 0;
}
-void script_debug(EngineState *s, reg_t *pc, stack_ptr_t *sp, stack_ptr_t *pp, reg_t *objp, int *restadjust,
- seg_id_t *segids, reg_t **variables, reg_t **variables_base, int *variables_nr, int bp) {
+void script_debug(EngineState *s, reg_t *pc, StackPtr *sp, StackPtr *pp, reg_t *objp, int *restadjust,
+ SegmentId *segids, reg_t **variables, reg_t **variables_base, int *variables_nr, int bp) {
// Do we support a separate console?
if (sci_debug_flags & _DEBUG_FLAG_LOGGING) {
@@ -2891,10 +2891,10 @@ void script_debug(EngineState *s, reg_t *pc, stack_ptr_t *sp, stack_ptr_t *pp, r
}
if (_debug_seeking && !bp) { // Are we looking for something special?
- mem_obj_t *memobj = GET_SEGMENT(*s->seg_manager, pc->segment, MEM_OBJ_SCRIPT);
+ MemObject *memobj = GET_SEGMENT(*s->seg_manager, pc->segment, MEM_OBJ_SCRIPT);
if (memobj) {
- script_t *scr = &(memobj->data.script);
+ Script *scr = &(memobj->data.script);
byte *code_buf = scr->buf;
int code_buf_size = scr->buf_size;
int opcode = pc->offset >= code_buf_size ? 0 : code_buf[pc->offset];
diff --git a/engines/sci/engine/seg_manager.cpp b/engines/sci/engine/seg_manager.cpp
index 977e3f808d..ec551fd672 100644
--- a/engines/sci/engine/seg_manager.cpp
+++ b/engines/sci/engine/seg_manager.cpp
@@ -69,7 +69,7 @@ inline int SegManager::findFreeId(int *id) {
return retval;
}
-mem_obj_t *SegManager::allocNonscriptSegment(memObjType type, seg_id_t *segid) {
+MemObject *SegManager::allocNonscriptSegment(memObjType type, SegmentId *segid) {
// Allocates a non-script segment
int id;
@@ -89,12 +89,12 @@ SegManager::SegManager(bool sci1_1) {
reserved_id--; // reserved_id runs in the reversed direction to make sure no one will use it.
heap_size = DEFAULT_SCRIPTS;
- heap = (mem_obj_t **)sci_calloc(heap_size, sizeof(mem_obj_t *));
+ heap = (MemObject **)sci_calloc(heap_size, sizeof(MemObject *));
- clones_seg_id = 0;
- lists_seg_id = 0;
- nodes_seg_id = 0;
- hunks_seg_id = 0;
+ Clones_seg_id = 0;
+ Lists_seg_id = 0;
+ Nodes_seg_id = 0;
+ Hunks_seg_id = 0;
exports_wide = 0;
isSci1_1 = sci1_1;
@@ -129,10 +129,10 @@ SegManager::~SegManager() {
// Returns : 0 - allocation failure
// 1 - allocated successfully
// seg_id - allocated segment id
-mem_obj_t *SegManager::allocateScript(EngineState *s, int script_nr, int* seg_id) {
+MemObject *SegManager::allocateScript(EngineState *s, int script_nr, int* seg_id) {
int seg;
bool was_added;
- mem_obj_t* mem;
+ MemObject* mem;
seg = id_seg_map->checkKey(script_nr, true, &was_added);
if (!was_added) {
@@ -140,7 +140,7 @@ mem_obj_t *SegManager::allocateScript(EngineState *s, int script_nr, int* seg_id
return heap[*seg_id];
}
- // allocate the mem_obj_t
+ // allocate the MemObject
mem = memObjAllocate(seg, script_nr, MEM_OBJ_SCRIPT);
if (!mem) {
sciprintf("%s, %d, Not enough memory, ", __FILE__, __LINE__);
@@ -151,7 +151,7 @@ mem_obj_t *SegManager::allocateScript(EngineState *s, int script_nr, int* seg_id
return mem;
}
-void SegManager::setScriptSize(mem_obj_t *mem, EngineState *s, int script_nr) {
+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);
@@ -187,9 +187,9 @@ void SegManager::setScriptSize(mem_obj_t *mem, EngineState *s, int script_nr) {
}
}
-int SegManager::initialiseScript(mem_obj_t *mem, EngineState *s, int script_nr) {
+int SegManager::initialiseScript(MemObject *mem, EngineState *s, int script_nr) {
// allocate the script.buf
- script_t *scr;
+ Script *scr;
setScriptSize(mem, s, script_nr);
mem->data.script.buf = (byte*) sci_malloc(mem->data.script.buf_size);
@@ -230,7 +230,7 @@ int SegManager::initialiseScript(mem_obj_t *mem, EngineState *s, int script_nr)
}
int SegManager::deallocate(int seg, bool recursive) {
- mem_obj_t *mobj;
+ MemObject *mobj;
VERIFY(check(seg), "invalid seg id");
int i;
@@ -311,7 +311,7 @@ int SegManager::deallocate(int seg, bool recursive) {
}
int SegManager::scriptMarkedDeleted(int script_nr) {
- script_t *scr;
+ Script *scr;
int seg = segGet(script_nr);
VERIFY(check(seg), "invalid seg id");
@@ -320,7 +320,7 @@ int SegManager::scriptMarkedDeleted(int script_nr) {
}
void SegManager::markScriptDeleted(int script_nr) {
- script_t *scr;
+ Script *scr;
int seg = segGet(script_nr);
VERIFY(check(seg), "invalid seg id");
@@ -329,7 +329,7 @@ void SegManager::markScriptDeleted(int script_nr) {
}
void SegManager::unmarkScriptDeleted(int script_nr) {
- script_t *scr;
+ Script *scr;
int seg = segGet(script_nr);
VERIFY(check(seg), "invalid seg id");
@@ -337,8 +337,8 @@ void SegManager::unmarkScriptDeleted(int script_nr) {
scr->marked_as_deleted = 0;
}
-int SegManager::scriptIsMarkedAsDeleted(seg_id_t seg) {
- script_t *scr;
+int SegManager::scriptIsMarkedAsDeleted(SegmentId seg) {
+ Script *scr;
if (!check(seg))
return 0;
@@ -360,8 +360,8 @@ int SegManager::deallocateScript(int script_nr) {
return 1;
}
-mem_obj_t *SegManager::memObjAllocate(seg_id_t segid, int hash_id, memObjType type) {
- mem_obj_t *mem = (mem_obj_t *)sci_calloc(sizeof(mem_obj_t), 1);
+MemObject *SegManager::memObjAllocate(SegmentId segid, int hash_id, memObjType type) {
+ MemObject *mem = (MemObject *)sci_calloc(sizeof(MemObject), 1);
if (!mem) {
sciprintf("SegManager: invalid mem_obj ");
return NULL;
@@ -376,15 +376,15 @@ mem_obj_t *SegManager::memObjAllocate(seg_id_t segid, int hash_id, memObjType ty
return NULL;
}
heap_size *= 2;
- temp = sci_realloc((void *)heap, heap_size * sizeof(mem_obj_t *));
+ temp = sci_realloc((void *)heap, heap_size * sizeof(MemObject *));
if (!temp) {
sciprintf("SegManager: Not enough memory space for script size");
return NULL;
}
- heap = (mem_obj_t **)temp;
+ heap = (MemObject **)temp;
// Clear pointers
- memset(heap + oldhs, 0, sizeof(mem_obj_t *) * (heap_size - oldhs));
+ memset(heap + oldhs, 0, sizeof(MemObject *) * (heap_size - oldhs));
}
mem->segmgr_id = hash_id;
@@ -396,14 +396,14 @@ mem_obj_t *SegManager::memObjAllocate(seg_id_t segid, int hash_id, memObjType ty
}
/* No longer in use?
-void SegManager::sm_object_init(object_t *object) {
+void SegManager::sm_object_init(Object *object) {
if (!object)
return;
object->variables_nr = 0;
object->variables = NULL;
};*/
-void SegManager::freeScript(mem_obj_t *mem) {
+void SegManager::freeScript(MemObject *mem) {
if (!mem)
return;
if (mem->data.script.buf) {
@@ -415,7 +415,7 @@ void SegManager::freeScript(mem_obj_t *mem) {
int i;
for (i = 0; i < mem->data.script.objects_nr; i++) {
- object_t* object = &mem->data.script.objects[i];
+ Object* object = &mem->data.script.objects[i];
if (object->variables) {
free(object->variables);
object->variables = NULL;
@@ -435,7 +435,7 @@ void SegManager::freeScript(mem_obj_t *mem) {
#if 0
// Unreferenced - removed
static void SegManager::sm_mset(int offset, int c, size_t n, int id, int flag) {
- mem_obj_t *mem_obj;
+ MemObject *mem_obj;
GET_SEGID();
mem_obj = heap[id];
switch (mem_obj->type) {
@@ -457,7 +457,7 @@ static void SegManager::sm_mset(int offset, int c, size_t n, int id, int flag) {
#if 0
// Unreferenced - removed
static void SegManager::sm_mcpy_in_in(int dst, const int src, size_t n, int id, int flag) {
- mem_obj_t *mem_obj;
+ MemObject *mem_obj;
GET_SEGID();
mem_obj = heap[id];
switch (mem_obj->type) {
@@ -477,7 +477,7 @@ static void SegManager::sm_mcpy_in_in(int dst, const int src, size_t n, int id,
#endif
void SegManager::mcpyInOut(int dst, const void *src, size_t n, int id, int flag) {
- mem_obj_t *mem_obj;
+ MemObject *mem_obj;
GET_SEGID();
mem_obj = heap[id];
switch (mem_obj->type) {
@@ -498,7 +498,7 @@ void SegManager::mcpyInOut(int dst, const void *src, size_t n, int id, int flag)
#if 0
// Unreferenced - removed
static void SegManager::sm_mcpy_out_in(void *dst, const int src, size_t n, int id, int flag) {
- mem_obj_t *mem_obj;
+ MemObject *mem_obj;
GET_SEGID();
mem_obj = heap[id];
switch (mem_obj->type) {
@@ -518,7 +518,7 @@ static void SegManager::sm_mcpy_out_in(void *dst, const int src, size_t n, int i
#endif
int16 SegManager::getHeap(reg_t reg) {
- mem_obj_t *mem_obj;
+ MemObject *mem_obj;
memObjType mem_type;
VERIFY(check(reg.segment), "Invalid seg id");
@@ -542,7 +542,7 @@ int16 SegManager::getHeap(reg_t reg) {
#if 0
// Unreferenced - removed
void SegManager::sm_put_heap(reg_t reg, int16 value) {
- mem_obj_t *mem_obj;
+ MemObject *mem_obj;
memObjType mem_type;
VERIFY(check(reg.segment), "Invalid seg id");
@@ -624,7 +624,7 @@ void SegManager::setLockers(int lockers, int id, idFlag flag) {
}
void SegManager::setExportTableOffset(int offset, int id, idFlag flag) {
- script_t *scr = &(heap[id]->data.script);
+ Script *scr = &(heap[id]->data.script);
GET_SEGID();
if (offset) {
@@ -703,7 +703,7 @@ static int SegManager::sm_get_heappos(int id, int flag) {
#if 0
// Unreferenced - removed
static void SegManager::sm_set_variables(reg_t reg, int obj_index, reg_t variable_reg, int variable_index) {
- script_t *script;
+ Script *script;
VERIFY(check(reg.segment), "invalid seg id");
VERIFY(heap[reg.segment], "invalid mem");
@@ -717,7 +717,7 @@ static void SegManager::sm_set_variables(reg_t reg, int obj_index, reg_t variabl
}
#endif
-inline int SegManager::relocateBlock(reg_t *block, int block_location, int block_items, seg_id_t segment, int location) {
+inline int SegManager::relocateBlock(reg_t *block, int block_location, int block_items, SegmentId segment, int location) {
int rel = location - block_location;
int index;
@@ -740,20 +740,20 @@ inline int SegManager::relocateBlock(reg_t *block, int block_location, int block
return 1;
}
-inline int SegManager::relocateLocal(script_t *scr, seg_id_t segment, int location) {
+inline int SegManager::relocateLocal(Script *scr, SegmentId segment, int location) {
if (scr->locals_block)
return relocateBlock(scr->locals_block->locals, scr->locals_offset, scr->locals_block->nr, segment, location);
else
return 0; // No hands, no cookies
}
-inline int SegManager::relocateObject(object_t *obj, seg_id_t segment, int location) {
+inline int SegManager::relocateObject(Object *obj, SegmentId segment, int location) {
return relocateBlock(obj->variables, obj->pos.offset, obj->variables_nr, segment, location);
}
void SegManager::scriptAddCodeBlock(reg_t location) {
- mem_obj_t *mobj = heap[location.segment];
- script_t *scr;
+ MemObject *mobj = heap[location.segment];
+ Script *scr;
int index;
VERIFY(!(location.segment >= heap_size || mobj->type != MEM_OBJ_SCRIPT), "Attempt to add a code block to non-script\n");
@@ -762,7 +762,7 @@ void SegManager::scriptAddCodeBlock(reg_t location) {
if (++scr->code_blocks_nr > scr->code_blocks_allocated) {
scr->code_blocks_allocated += DEFAULT_OBJECTS_INCREMENT;
- scr->code = (code_block_t *)sci_realloc(scr->code, scr->code_blocks_allocated * sizeof(code_block_t));
+ scr->code = (CodeBlock *)sci_realloc(scr->code, scr->code_blocks_allocated * sizeof(CodeBlock));
}
index = scr->code_blocks_nr - 1;
@@ -771,8 +771,8 @@ void SegManager::scriptAddCodeBlock(reg_t location) {
}
void SegManager::scriptRelocate(reg_t block) {
- mem_obj_t *mobj = heap[block.segment];
- script_t *scr;
+ MemObject *mobj = heap[block.segment];
+ Script *scr;
int count;
int i;
@@ -823,8 +823,8 @@ void SegManager::scriptRelocate(reg_t block) {
}
void SegManager::heapRelocate(EngineState *s, reg_t block) {
- mem_obj_t *mobj = heap[block.segment];
- script_t *scr;
+ MemObject *mobj = heap[block.segment];
+ Script *scr;
int count;
int i;
@@ -871,10 +871,10 @@ void SegManager::heapRelocate(EngineState *s, reg_t block) {
reg_t get_class_address(EngineState *s, int classnr, int lock, reg_t caller);
-object_t *SegManager::scriptObjInit0(EngineState *s, reg_t obj_pos) {
- mem_obj_t *mobj = heap[obj_pos.segment];
- script_t *scr;
- object_t *obj;
+Object *SegManager::scriptObjInit0(EngineState *s, reg_t obj_pos) {
+ MemObject *mobj = heap[obj_pos.segment];
+ Script *scr;
+ Object *obj;
int id;
unsigned int base = obj_pos.offset - SCRIPT_OBJECT_MAGIC_OFFSET;
reg_t temp;
@@ -887,11 +887,11 @@ object_t *SegManager::scriptObjInit0(EngineState *s, reg_t obj_pos) {
if (!scr->objects) {
scr->objects_allocated = DEFAULT_OBJECTS;
- scr->objects = (object_t *)sci_malloc(sizeof(object_t) * scr->objects_allocated);
+ scr->objects = (Object *)sci_malloc(sizeof(Object) * scr->objects_allocated);
}
if (scr->objects_nr == scr->objects_allocated) {
scr->objects_allocated += DEFAULT_OBJECTS_INCREMENT;
- scr->objects = (object_t *)sci_realloc(scr->objects, sizeof(object_t) * scr->objects_allocated);
+ scr->objects = (Object *)sci_realloc(scr->objects, sizeof(Object) * scr->objects_allocated);
}
temp = make_reg(obj_pos.segment, base);
@@ -939,10 +939,10 @@ object_t *SegManager::scriptObjInit0(EngineState *s, reg_t obj_pos) {
return obj;
}
-object_t *SegManager::scriptObjInit11(EngineState *s, reg_t obj_pos) {
- mem_obj_t *mobj = heap[obj_pos.segment];
- script_t *scr;
- object_t *obj;
+Object *SegManager::scriptObjInit11(EngineState *s, reg_t obj_pos) {
+ MemObject *mobj = heap[obj_pos.segment];
+ Script *scr;
+ Object *obj;
int id;
int base = obj_pos.offset;
@@ -954,11 +954,11 @@ object_t *SegManager::scriptObjInit11(EngineState *s, reg_t obj_pos) {
if (!scr->objects) {
scr->objects_allocated = DEFAULT_OBJECTS;
- scr->objects = (object_t *)sci_malloc(sizeof(object_t) * scr->objects_allocated);
+ scr->objects = (Object *)sci_malloc(sizeof(Object) * scr->objects_allocated);
}
if (scr->objects_nr == scr->objects_allocated) {
scr->objects_allocated += DEFAULT_OBJECTS_INCREMENT;
- scr->objects = (object_t *)sci_realloc(scr->objects, sizeof(object_t) * scr->objects_allocated);
+ scr->objects = (Object *)sci_realloc(scr->objects, sizeof(Object) * scr->objects_allocated);
}
id = scr->obj_indices->checkKey(obj_pos.offset, true);
@@ -1006,21 +1006,21 @@ object_t *SegManager::scriptObjInit11(EngineState *s, reg_t obj_pos) {
return obj;
}
-object_t *SegManager::scriptObjInit(EngineState *s, reg_t obj_pos) {
+Object *SegManager::scriptObjInit(EngineState *s, reg_t obj_pos) {
if (!isSci1_1)
return scriptObjInit0(s, obj_pos);
else
return scriptObjInit11(s, obj_pos);
}
-local_variables_t *SegManager::allocLocalsSegment(script_t *scr, int count) {
+LocalVariables *SegManager::allocLocalsSegment(Script *scr, int count) {
if (!count) { // No locals
scr->locals_segment = 0;
scr->locals_block = NULL;
return NULL;
} else {
- mem_obj_t *mobj;
- local_variables_t *locals;
+ MemObject *mobj;
+ LocalVariables *locals;
if (scr->locals_segment) {
mobj = heap[scr->locals_segment];
@@ -1039,9 +1039,9 @@ local_variables_t *SegManager::allocLocalsSegment(script_t *scr, int count) {
}
}
-void SegManager::scriptInitialiseLocalsZero(seg_id_t seg, int count) {
- mem_obj_t *mobj = heap[seg];
- script_t *scr;
+void SegManager::scriptInitialiseLocalsZero(SegmentId seg, int count) {
+ MemObject *mobj = heap[seg];
+ Script *scr;
VERIFY(!(seg >= heap_size || mobj->type != MEM_OBJ_SCRIPT), "Attempt to initialize locals in non-script\n");
@@ -1053,10 +1053,10 @@ void SegManager::scriptInitialiseLocalsZero(seg_id_t seg, int count) {
}
void SegManager::scriptInitialiseLocals(reg_t location) {
- mem_obj_t *mobj = heap[location.segment];
+ MemObject *mobj = heap[location.segment];
unsigned int count;
- script_t *scr;
- local_variables_t *locals;
+ Script *scr;
+ LocalVariables *locals;
VERIFY(!(location.segment >= heap_size || mobj->type != MEM_OBJ_SCRIPT), "Attempt to initialize locals in non-script\n");
@@ -1088,8 +1088,8 @@ void SegManager::scriptInitialiseLocals(reg_t location) {
}
void SegManager::scriptRelocateExportsSci11(int seg) {
- mem_obj_t *mobj = heap[seg];
- script_t *scr;
+ MemObject *mobj = heap[seg];
+ Script *scr;
int i;
int location;
@@ -1111,8 +1111,8 @@ void SegManager::scriptRelocateExportsSci11(int seg) {
}
void SegManager::scriptInitialiseObjectsSci11(EngineState *s, int seg) {
- mem_obj_t *mobj = heap[seg];
- script_t *scr;
+ MemObject *mobj = heap[seg];
+ Script *scr;
byte *seeker;
VERIFY(!(seg >= heap_size || mobj->type != MEM_OBJ_SCRIPT), "Attempt to relocate exports in non-script\n");
@@ -1142,7 +1142,7 @@ void SegManager::scriptInitialiseObjectsSci11(EngineState *s, int seg) {
seeker = scr->heap_start + 4 + getUInt16(scr->heap_start + 2) * 2;
while (getUInt16(seeker) == SCRIPT_OBJECT_MAGIC_NUMBER) {
reg_t reg;
- object_t *obj;
+ Object *obj;
reg.segment = seg;
reg.offset = seeker - scr->buf;
@@ -1164,16 +1164,16 @@ void SegManager::scriptInitialiseObjectsSci11(EngineState *s, int seg) {
}
}
-void SegManager::scriptFreeUnusedObjects(seg_id_t seg) {
- mem_obj_t *mobj = heap[seg];
- script_t *scr;
+void SegManager::scriptFreeUnusedObjects(SegmentId seg) {
+ MemObject *mobj = heap[seg];
+ Script *scr;
VERIFY(!(seg >= heap_size || mobj->type != MEM_OBJ_SCRIPT), "Attempt to free unused objects in non-script\n");
scr = &(mobj->data.script);
if (scr->objects_allocated > scr->objects_nr) {
if (scr->objects_nr)
- scr->objects = (object_t*)sci_realloc(scr->objects, sizeof(object_t) * scr->objects_nr);
+ scr->objects = (Object *)sci_realloc(scr->objects, sizeof(Object) * scr->objects_nr);
else {
if (scr->objects_allocated)
free(scr->objects);
@@ -1196,8 +1196,8 @@ static inline char *SegManager::dynprintf(char *msg, ...) {
}
*/
-dstack_t *SegManager::allocateStack(int size, seg_id_t *segid) {
- mem_obj_t *memobj = allocNonscriptSegment(MEM_OBJ_STACK, segid);
+dstack_t *SegManager::allocateStack(int size, SegmentId *segid) {
+ MemObject *memobj = allocNonscriptSegment(MEM_OBJ_STACK, segid);
dstack_t *retval = &(memobj->data.stack);
retval->entries = (reg_t*)sci_calloc(size, sizeof(reg_t));
@@ -1206,8 +1206,8 @@ dstack_t *SegManager::allocateStack(int size, seg_id_t *segid) {
return retval;
}
-SystemStrings *SegManager::allocateSysStrings(seg_id_t *segid) {
- mem_obj_t *memobj = allocNonscriptSegment(MEM_OBJ_SYS_STRINGS, segid);
+SystemStrings *SegManager::allocateSysStrings(SegmentId *segid) {
+ MemObject *memobj = allocNonscriptSegment(MEM_OBJ_SYS_STRINGS, segid);
SystemStrings *retval = &(memobj->data.sys_strings);
memset(retval, 0, sizeof(SystemString)*SYS_STRINGS_MAX);
@@ -1217,9 +1217,9 @@ SystemStrings *SegManager::allocateSysStrings(seg_id_t *segid) {
#if 0
// Unreferenced - removed
-seg_id_t SegManager::sm_allocate_reserved_segment(char *src_name) {
- seg_id_t segid;
- mem_obj_t *memobj = allocNonscriptSegment(MEM_OBJ_RESERVED, &segid);
+SegmentId SegManager::sm_allocate_reserved_segment(char *src_name) {
+ SegmentId segid;
+ MemObject *memobj = allocNonscriptSegment(MEM_OBJ_RESERVED, &segid);
char *name = sci_strdup(src_name);
memobj->data.reserved = name;
@@ -1229,7 +1229,7 @@ seg_id_t SegManager::sm_allocate_reserved_segment(char *src_name) {
#endif
uint16 SegManager::validateExportFunc(int pubfunct, int seg) {
- script_t* script;
+ Script* script;
uint16 offset;
VERIFY(check(seg), "invalid seg id");
VERIFY(heap[seg]->type == MEM_OBJ_SCRIPT, "Can only validate exports on scripts");
@@ -1249,11 +1249,11 @@ uint16 SegManager::validateExportFunc(int pubfunct, int seg) {
}
void SegManager::free_hunk_entry(reg_t addr) {
- free_hunk(addr);
+ free_Hunk(addr);
}
-hunk_t *SegManager::alloc_hunk_entry(const char *hunk_type, int size, reg_t *reg) {
- hunk_t *h = alloc_hunk(reg);
+Hunk *SegManager::alloc_hunk_entry(const char *hunk_type, int size, reg_t *reg) {
+ Hunk *h = alloc_Hunk(reg);
if (!h)
return NULL;
@@ -1265,25 +1265,25 @@ hunk_t *SegManager::alloc_hunk_entry(const char *hunk_type, int size, reg_t *reg
return h;
}
-void _clone_cleanup(clone_t *clone) {
+void _clone_cleanup(Clone *clone) {
if (clone->variables)
free(clone->variables); // Free the dynamically allocated memory part
}
-void _hunk_cleanup(hunk_t *hunk) {
+void _hunk_cleanup(Hunk *hunk) {
if (hunk->mem)
free(hunk->mem);
}
-DEFINE_HEAPENTRY(list, 8, 4)
-DEFINE_HEAPENTRY(node, 32, 16)
-DEFINE_HEAPENTRY_WITH_CLEANUP(clone, 16, 4, _clone_cleanup)
-DEFINE_HEAPENTRY_WITH_CLEANUP(hunk, 4, 4, _hunk_cleanup)
+DEFINE_HEAPENTRY(List, 8, 4)
+DEFINE_HEAPENTRY(Node, 32, 16)
+DEFINE_HEAPENTRY_WITH_CLEANUP(Clone, 16, 4, _clone_cleanup)
+DEFINE_HEAPENTRY_WITH_CLEANUP(Hunk, 4, 4, _hunk_cleanup)
#define DEFINE_ALLOC_DEALLOC(TYPE, SEGTYPE, PLURAL) \
-TYPE##_t *SegManager::alloc_##TYPE(reg_t *addr) { \
- mem_obj_t *mobj; \
- TYPE##_table_t *table; \
+TYPE *SegManager::alloc_##TYPE(reg_t *addr) { \
+ MemObject *mobj; \
+ TYPE##Table *table; \
int offset; \
\
if (!TYPE##s_seg_id) { \
@@ -1300,7 +1300,7 @@ TYPE##_t *SegManager::alloc_##TYPE(reg_t *addr) { \
} \
\
void SegManager::free_##TYPE(reg_t addr) { \
- mem_obj_t *mobj = GET_SEGMENT(*this, addr.segment, SEGTYPE); \
+ MemObject *mobj = GET_SEGMENT(*this, addr.segment, SEGTYPE); \
\
if (!mobj) { \
sciprintf("Attempt to free " #TYPE " from address "PREG": Invalid segment type\n", PRINT_REG(addr)); \
@@ -1310,13 +1310,13 @@ void SegManager::free_##TYPE(reg_t addr) { \
Sci::free_##TYPE##_entry(&(mobj->data.PLURAL), addr.offset); \
}
-DEFINE_ALLOC_DEALLOC(clone, MEM_OBJ_CLONES, clones)
-DEFINE_ALLOC_DEALLOC(list, MEM_OBJ_LISTS, lists)
-DEFINE_ALLOC_DEALLOC(node, MEM_OBJ_NODES, nodes)
-DEFINE_ALLOC_DEALLOC(hunk, MEM_OBJ_HUNK, hunks)
+DEFINE_ALLOC_DEALLOC(Clone, MEM_OBJ_CLONES, clones)
+DEFINE_ALLOC_DEALLOC(List, MEM_OBJ_LISTS, lists)
+DEFINE_ALLOC_DEALLOC(Node, MEM_OBJ_NODES, nodes)
+DEFINE_ALLOC_DEALLOC(Hunk, MEM_OBJ_HUNK, hunks)
byte *SegManager::dereference(reg_t pointer, int *size) {
- mem_obj_t *mobj;
+ MemObject *mobj;
byte *base = NULL;
int count;
@@ -1388,8 +1388,8 @@ byte *SegManager::dereference(reg_t pointer, int *size) {
}
unsigned char *SegManager::allocDynmem(int size, const char *descr, reg_t *addr) {
- seg_id_t seg;
- mem_obj_t *mobj = allocNonscriptSegment(MEM_OBJ_DYNMEM, &seg);
+ SegmentId seg;
+ MemObject *mobj = allocNonscriptSegment(MEM_OBJ_DYNMEM, &seg);
*addr = make_reg(seg, 0);
mobj->data.dynmem.size = size;
@@ -1405,7 +1405,7 @@ unsigned char *SegManager::allocDynmem(int size, const char *descr, reg_t *addr)
}
const char *SegManager::getDescription(reg_t addr) {
- mem_obj_t *mobj = heap[addr.segment];
+ MemObject *mobj = heap[addr.segment];
if (addr.segment >= heap_size)
return "";
@@ -1437,9 +1437,9 @@ void SegManager::dbgPrint(const char* msg, void *i) {
// ------------------- Segment interface ------------------
-SegInterface::SegInterface(SegManager *segmgr, mem_obj_t *mobj, seg_id_t segId, memObjType typeId) :
+SegInterface::SegInterface(SegManager *segmgr, MemObject *mobj, SegmentId segId, memObjType typeId) :
_segmgr(segmgr), _mobj(mobj), _segId(segId), _typeId(typeId) {
- VERIFY(_mobj->type == _typeId, "Invalid mem_obj_t type");
+ VERIFY(_mobj->type == _typeId, "Invalid MemObject type");
}
reg_t SegInterface::findCanonicAddress(reg_t addr) {
@@ -1459,7 +1459,7 @@ void SegInterface::listAllOutgoingReferences(EngineState *s, reg_t object, void
//-------------------- base --------------------
class SegInterfaceBase : public SegInterface {
protected:
- SegInterfaceBase(SegManager *segmgr, mem_obj_t *mobj, seg_id_t segId, memObjType typeId) :
+ SegInterfaceBase(SegManager *segmgr, MemObject *mobj, SegmentId segId, memObjType typeId) :
SegInterface(segmgr, mobj, segId, typeId) {}
public:
reg_t findCanonicAddress(reg_t addr);
@@ -1479,14 +1479,14 @@ void SegInterfaceBase::listAllDeallocatable(void *param, void (*note)(void *para
//-------------------- script --------------------
class SegInterfaceScript : public SegInterfaceBase {
public:
- SegInterfaceScript(SegManager *segmgr, mem_obj_t *mobj, seg_id_t segId) :
+ SegInterfaceScript(SegManager *segmgr, MemObject *mobj, SegmentId segId) :
SegInterfaceBase(segmgr, mobj, segId, MEM_OBJ_SCRIPT) {}
void freeAtAddress(reg_t addr);
void listAllOutgoingReferences(EngineState *s, reg_t addr, void *param, void (*note)(void *param, reg_t addr));
};
void SegInterfaceScript::freeAtAddress(reg_t addr) {
- script_t *script = &(_mobj->data.script);
+ Script *script = &(_mobj->data.script);
/*
sciprintf("[GC] Freeing script "PREG"\n", PRINT_REG(addr));
if (script->locals_segment)
@@ -1498,12 +1498,12 @@ void SegInterfaceScript::freeAtAddress(reg_t addr) {
}
void SegInterfaceScript::listAllOutgoingReferences(EngineState *s, reg_t addr, void *param, void (*note)(void *param, reg_t addr)) {
- script_t *script = &(_mobj->data.script);
+ Script *script = &(_mobj->data.script);
if (addr.offset <= script->buf_size && addr.offset >= -SCRIPT_OBJECT_MAGIC_OFFSET && RAW_IS_OBJECT(script->buf + addr.offset)) {
int idx = RAW_GET_CLASS_INDEX(script, addr);
if (idx >= 0 && idx < script->objects_nr) {
- object_t *obj = script->objects + idx;
+ Object *obj = script->objects + idx;
int i;
// Note all local variables, if we have a local variable environment
@@ -1523,7 +1523,7 @@ void SegInterfaceScript::listAllOutgoingReferences(EngineState *s, reg_t addr, v
#define LIST_ALL_DEALLOCATABLE(kind, kind_field) \
- kind##_table_t * table = &(_mobj->data.kind_field); \
+ kind##Table * table = &(_mobj->data.kind_field); \
int i; \
\
for (i = 0; i < table->max_entry; i++) \
@@ -1534,7 +1534,7 @@ void SegInterfaceScript::listAllOutgoingReferences(EngineState *s, reg_t addr, v
//-------------------- clones --------------------
class SegInterfaceClones : public SegInterface {
public:
- SegInterfaceClones(SegManager *segmgr, mem_obj_t *mobj, seg_id_t segId) :
+ SegInterfaceClones(SegManager *segmgr, MemObject *mobj, SegmentId segId) :
SegInterface(segmgr, mobj, segId, MEM_OBJ_CLONES) {}
void freeAtAddress(reg_t addr);
void listAllDeallocatable(void *param, void (*note)(void *param, reg_t addr));
@@ -1542,12 +1542,12 @@ public:
};
void SegInterfaceClones::listAllDeallocatable(void *param, void (*note)(void *param, reg_t addr)) {
- LIST_ALL_DEALLOCATABLE(clone, clones);
+ LIST_ALL_DEALLOCATABLE(Clone, clones);
}
void SegInterfaceClones::listAllOutgoingReferences(EngineState *s, reg_t addr, void *param, void (*note)(void *param, reg_t addr)) {
- clone_table_t *clone_table = &(_mobj->data.clones);
- clone_t *clone;
+ CloneTable *clone_table = &(_mobj->data.clones);
+ Clone *clone;
int i;
assert(addr.segment == _segId);
@@ -1570,7 +1570,7 @@ void SegInterfaceClones::listAllOutgoingReferences(EngineState *s, reg_t addr, v
}
void SegInterfaceClones::freeAtAddress(reg_t addr) {
- object_t *victim_obj;
+ Object *victim_obj;
assert(addr.segment == _segId);
@@ -1590,14 +1590,14 @@ void SegInterfaceClones::freeAtAddress(reg_t addr) {
*/
free(victim_obj->variables);
victim_obj->variables = NULL;
- _segmgr->free_clone(addr);
+ _segmgr->free_Clone(addr);
}
//-------------------- locals --------------------
class SegInterfaceLocals : public SegInterface {
public:
- SegInterfaceLocals(SegManager *segmgr, mem_obj_t *mobj, seg_id_t segId) :
+ SegInterfaceLocals(SegManager *segmgr, MemObject *mobj, SegmentId segId) :
SegInterface(segmgr, mobj, segId, MEM_OBJ_LOCALS) {}
reg_t findCanonicAddress(reg_t addr);
void freeAtAddress(reg_t addr);
@@ -1605,9 +1605,9 @@ public:
};
reg_t SegInterfaceLocals::findCanonicAddress(reg_t addr) {
- local_variables_t *locals = &(_mobj->data.locals);
+ LocalVariables *locals = &(_mobj->data.locals);
// Reference the owning script
- seg_id_t owner_seg = _segmgr->segGet(locals->script_id);
+ SegmentId owner_seg = _segmgr->segGet(locals->script_id);
assert(owner_seg >= 0);
@@ -1620,7 +1620,7 @@ void SegInterfaceLocals::freeAtAddress(reg_t sub_addr) {
}
void SegInterfaceLocals::listAllOutgoingReferences(EngineState *s, reg_t addr, void *param, void (*note)(void*param, reg_t addr)) {
- local_variables_t *locals = &(_mobj->data.locals);
+ LocalVariables *locals = &(_mobj->data.locals);
int i;
assert(addr.segment == _segId);
@@ -1633,7 +1633,7 @@ void SegInterfaceLocals::listAllOutgoingReferences(EngineState *s, reg_t addr, v
//-------------------- stack --------------------
class SegInterfaceStack : public SegInterface {
public:
- SegInterfaceStack(SegManager *segmgr, mem_obj_t *mobj, seg_id_t segId) :
+ SegInterfaceStack(SegManager *segmgr, MemObject *mobj, SegmentId segId) :
SegInterface(segmgr, mobj, segId, MEM_OBJ_STACK) {}
reg_t findCanonicAddress(reg_t addr);
void listAllOutgoingReferences(EngineState *s, reg_t addr, void *param, void (*note)(void *param, reg_t addr));
@@ -1656,7 +1656,7 @@ void SegInterfaceStack::listAllOutgoingReferences(EngineState *s, reg_t addr, vo
//-------------------- system strings --------------------
class SegInterfaceSysStrings : public SegInterface {
public:
- SegInterfaceSysStrings(SegManager *segmgr, mem_obj_t *mobj, seg_id_t segId) :
+ SegInterfaceSysStrings(SegManager *segmgr, MemObject *mobj, SegmentId segId) :
SegInterface(segmgr, mobj, segId, MEM_OBJ_SYS_STRINGS) {}
};
@@ -1664,7 +1664,7 @@ public:
//-------------------- lists --------------------
class SegInterfaceLists : public SegInterface {
public:
- SegInterfaceLists(SegManager *segmgr, mem_obj_t *mobj, seg_id_t segId) :
+ SegInterfaceLists(SegManager *segmgr, MemObject *mobj, SegmentId segId) :
SegInterface(segmgr, mobj, segId, MEM_OBJ_LISTS) {}
void freeAtAddress(reg_t addr);
void listAllDeallocatable(void *param, void (*note)(void *param, reg_t addr));
@@ -1672,16 +1672,16 @@ public:
};
void SegInterfaceLists::freeAtAddress(reg_t sub_addr) {
- _segmgr->free_list(sub_addr);
+ _segmgr->free_List(sub_addr);
}
void SegInterfaceLists::listAllDeallocatable(void *param, void (*note)(void*param, reg_t addr)) {
- LIST_ALL_DEALLOCATABLE(list, lists);
+ LIST_ALL_DEALLOCATABLE(List, lists);
}
void SegInterfaceLists::listAllOutgoingReferences(EngineState *s, reg_t addr, void *param, void (*note)(void*param, reg_t addr)) {
- list_table_t *table = &(_mobj->data.lists);
- list_t *list = &(table->table[addr.offset].entry);
+ ListTable *table = &(_mobj->data.lists);
+ List *list = &(table->table[addr.offset].entry);
if (!ENTRY_IS_VALID(table, addr.offset)) {
fprintf(stderr, "Invalid list referenced for outgoing references: "PREG"\n", PRINT_REG(addr));
@@ -1698,7 +1698,7 @@ void SegInterfaceLists::listAllOutgoingReferences(EngineState *s, reg_t addr, vo
//-------------------- nodes --------------------
class SegInterfaceNodes : public SegInterface {
public:
- SegInterfaceNodes(SegManager *segmgr, mem_obj_t *mobj, seg_id_t segId) :
+ SegInterfaceNodes(SegManager *segmgr, MemObject *mobj, SegmentId segId) :
SegInterface(segmgr, mobj, segId, MEM_OBJ_NODES) {}
void freeAtAddress(reg_t addr);
void listAllDeallocatable(void *param, void (*note)(void *param, reg_t addr));
@@ -1706,16 +1706,16 @@ public:
};
void SegInterfaceNodes::freeAtAddress(reg_t sub_addr) {
- _segmgr->free_node(sub_addr);
+ _segmgr->free_Node(sub_addr);
}
void SegInterfaceNodes::listAllDeallocatable(void *param, void (*note)(void*param, reg_t addr)) {
- LIST_ALL_DEALLOCATABLE(node, nodes);
+ LIST_ALL_DEALLOCATABLE(Node, nodes);
}
void SegInterfaceNodes::listAllOutgoingReferences(EngineState *s, reg_t addr, void *param, void (*note)(void*param, reg_t addr)) {
- node_table_t *table = &(_mobj->data.nodes);
- node_t *node = &(table->table[addr.offset].entry);
+ NodeTable *table = &(_mobj->data.nodes);
+ Node *node = &(table->table[addr.offset].entry);
if (!ENTRY_IS_VALID(table, addr.offset)) {
fprintf(stderr, "Invalid node referenced for outgoing references: "PREG"\n", PRINT_REG(addr));
@@ -1734,7 +1734,7 @@ void SegInterfaceNodes::listAllOutgoingReferences(EngineState *s, reg_t addr, vo
//-------------------- hunk --------------------
class SegInterfaceHunk : public SegInterface {
public:
- SegInterfaceHunk(SegManager *segmgr, mem_obj_t *mobj, seg_id_t segId) :
+ SegInterfaceHunk(SegManager *segmgr, MemObject *mobj, SegmentId segId) :
SegInterface(segmgr, mobj, segId, MEM_OBJ_HUNK) {}
void freeAtAddress(reg_t addr);
void listAllDeallocatable(void *param, void (*note)(void *param, reg_t addr));
@@ -1746,14 +1746,14 @@ void SegInterfaceHunk::freeAtAddress(reg_t sub_addr) {
}
void SegInterfaceHunk::listAllDeallocatable(void *param, void (*note)(void*param, reg_t addr)) {
- LIST_ALL_DEALLOCATABLE(hunk, hunks);
+ LIST_ALL_DEALLOCATABLE(Hunk, hunks);
}
//-------------------- dynamic memory --------------------
class SegInterfaceDynMem : public SegInterfaceBase {
public:
- SegInterfaceDynMem(SegManager *segmgr, mem_obj_t *mobj, seg_id_t segId) :
+ SegInterfaceDynMem(SegManager *segmgr, MemObject *mobj, SegmentId segId) :
SegInterfaceBase(segmgr, mobj, segId, MEM_OBJ_DYNMEM) {}
void freeAtAddress(reg_t addr);
};
@@ -1767,17 +1767,17 @@ void SegInterfaceDynMem::freeAtAddress(reg_t sub_addr) {
//-------------------- reserved --------------------
class SegInterfaceReserved : public SegInterface {
public:
- SegInterfaceReserved(SegManager *segmgr, mem_obj_t *mobj, seg_id_t segId) :
+ SegInterfaceReserved(SegManager *segmgr, MemObject *mobj, SegmentId segId) :
SegInterface(segmgr, mobj, segId, MEM_OBJ_RESERVED) {}
};
-SegInterface *SegManager::getSegInterface(seg_id_t segid) {
+SegInterface *SegManager::getSegInterface(SegmentId segid) {
if (!check(segid))
return NULL; // Invalid segment
SegInterface *retval = NULL;
- mem_obj_t *mobj = heap[segid];
+ MemObject *mobj = heap[segid];
switch (mobj->type) {
case MEM_OBJ_SCRIPT:
retval = new SegInterfaceScript(this, mobj, segid);
diff --git a/engines/sci/engine/seg_manager.h b/engines/sci/engine/seg_manager.h
index 0dc4b3755b..1a4f9c53c6 100644
--- a/engines/sci/engine/seg_manager.h
+++ b/engines/sci/engine/seg_manager.h
@@ -69,7 +69,7 @@ public:
// 1. Scripts
- void freeScript(mem_obj_t* mem);
+ void freeScript(MemObject* mem);
// Allocate a script into the segment manager
// Parameters: (int) script_nr: number of the script to load
@@ -77,7 +77,7 @@ public:
// script data
// Returns : (int) 0 on failure, 1 on success
// (int) *seg_id: The segment ID of the newly allocated segment, on success
- mem_obj_t *allocateScript(EngineState *s, int script_nr, int* seg_id);
+ MemObject *allocateScript(EngineState *s, int script_nr, int* seg_id);
// The script must then be initialised; see section (1b.), below.
@@ -164,10 +164,10 @@ public:
// i.e. loading and linking.
// Initializes a script's local variable block
- // Parameters: (seg_id_t) seg: Segment containing the script to initialize
+ // Parameters: (SegmentId) seg: Segment containing the script to initialize
// (int) nr: Number of local variables to allocate
// All variables are initialized to zero.
- void scriptInitialiseLocalsZero(seg_id_t seg, int nr);
+ void scriptInitialiseLocalsZero(SegmentId seg, int nr);
// Initializes a script's local variable block according to a prototype
// Parameters: (reg_t) location: Location to initialize from
@@ -175,11 +175,11 @@ public:
// Initializes an object within the segment manager
// Parameters: (reg_t) obj_pos: Location (segment, offset) of the object
- // Returns : (object_t *) A newly created object_t describing the object
+ // Returns : (Object *) A newly created Object describing the object
// obj_pos must point to the beginning of the script/class block (as opposed
// to what the VM considers to be the object location)
- // The corresponding object_t is stored within the relevant script.
- object_t *scriptObjInit(EngineState *s, reg_t obj_pos);
+ // The corresponding Object is stored within the relevant script.
+ Object *scriptObjInit(EngineState *s, reg_t obj_pos);
// Informs the segment manager that a code block must be relocated
// Parameters: (reg_t) location: Start of block to relocate
@@ -191,16 +191,16 @@ public:
// Processes a relocation block witin a script
// Parameters: (reg_t) obj_pos: Location (segment, offset) of the block
- // Returns : (object_t *) Location of the relocation block
+ // Returns : (Object *) Location of the relocation block
// This function is idempotent, but it must only be called after all
// objects have been instantiated, or a run-time error will occur.
void scriptRelocate(reg_t block);
// Deallocates all unused but allocated entries for objects
- // Parameters: (seg_id_t) segid: segment of the script to prune in this way
+ // Parameters: (SegmentId) segid: segment of the script to prune in this way
// These entries are created during script instantiation; deallocating them
// frees up some additional memory.
- void scriptFreeUnusedObjects(seg_id_t segid);
+ void scriptFreeUnusedObjects(SegmentId segid);
// Sets the script-relative offset of the exports table
// Parameters: (int) offset: The script-relative exports table offset
@@ -242,22 +242,22 @@ public:
void unmarkScriptDeleted(int script_nr);
// Determines whether the script referenced by the indicated segment is marked as being deleted.
- // Parameters: (seg_id_t) Segment ID of the script to investigate
+ // Parameters: (SegmentId) Segment ID of the script to investigate
// Returns : (int) 1 iff seg points to a script and the segment is deleted, 0 otherwise
// Will return 0 when applied to an invalid or non-script seg.
- int scriptIsMarkedAsDeleted(seg_id_t seg);
+ int scriptIsMarkedAsDeleted(SegmentId seg);
// 2. Clones
// Allocate a fresh clone
- // Returns : (clone_t*): Reference to the memory allocated for the clone
+ // Returns : (Clone*): Reference to the memory allocated for the clone
// (reg_t) *addr: The offset of the freshly allocated clone
- clone_t *alloc_clone(reg_t *addr);
+ Clone *alloc_Clone(reg_t *addr);
- // Deallocates a clone
- // Parameters: (reg_t) addr: Offset of the clone scheduled for termination
- void free_clone(reg_t addr);
+ // Deallocates a Clone
+ // Parameters: (reg_t) addr: Offset of the Clone scheduled for termination
+ void free_Clone(reg_t addr);
// 3. Objects (static, from Scripts, and dynmic, from Clones)
@@ -291,16 +291,17 @@ public:
// Allocates a data stack
// Parameters: (int) size: Number of stack entries to reserve
// Returns : (dstack_t *): The physical stack
- // (seg_id_t) segid: Segment ID of the stack
- dstack_t *allocateStack(int size, seg_id_t *segid);
+ // (SegmentId) segid: Segment ID of the stack
+ dstack_t *allocateStack(int size, SegmentId *segid);
// 5. System Strings
// Allocates a system string table
// Returns : (dstack_t *): The physical stack
- // (seg_id_t) segid: Segment ID of the stack
- SystemStrings *allocateSysStrings(seg_id_t *segid);
+ // (SegmentId) segid: Segment ID of the stack
+ // See also sys_string_acquire();
+ SystemStrings *allocateSysStrings(SegmentId *segid);
// 6, 7. Lists and Nodes
@@ -308,20 +309,20 @@ public:
// Allocate a fresh list
// Returns : (listY_t*): Reference to the memory allocated for the list
// (reg_t) *addr: The offset of the freshly allocated list
- list_t *alloc_list(reg_t *addr);
+ List *alloc_List(reg_t *addr);
// Deallocates a list
// Parameters: (reg_t) addr: Offset of the list scheduled for termination
- void free_list(reg_t addr);
+ void free_List(reg_t addr);
// Allocate a fresh node
// Returns : (node_t*): Reference to the memory allocated for the node
// (reg_t) *addr: The offset of the freshly allocated node
- node_t *alloc_node(reg_t *addr);
+ Node *alloc_Node(reg_t *addr);
// Deallocates a list node
// Parameters: (reg_t) addr: Offset of the node scheduled for termination
- void free_node(reg_t addr);
+ void free_Node(reg_t addr);
// 8. Hunk Memory
@@ -330,9 +331,9 @@ public:
// Parameters: (int) size: Number of bytes to allocate for the hunk entry
// (const char *) hunk_type: A descriptive string for the hunk entry,
// for debugging purposes
- // Returns : (hunk_t*): Reference to the memory allocated for the hunk piece
+ // Returns : (Hunk *): Reference to the memory allocated for the hunk piece
// (reg_t) *addr: The offset of the freshly allocated hunk entry
- hunk_t *alloc_hunk_entry(const char *hunk_type, int size, reg_t *addr);
+ Hunk *alloc_hunk_entry(const char *hunk_type, int size, reg_t *addr);
// Deallocates a hunk entry
// Parameters: (reg_t) addr: Offset of the hunk entry to delete
@@ -367,7 +368,7 @@ public:
// Returns : A fresh segment ID for the segment in question
// Reserved segments are never used by the segment manager. They can be used to tag special-purpose addresses.
// Segment 0 is implicitly reserved for numbers.
- //seg_id_t sm_allocate_reserved_segment(char *name);
+ //SegmentId sm_allocate_reserved_segment(char *name);
// Generic Operations on Segments and Addresses
@@ -382,21 +383,21 @@ public:
// Segment Interface
// Retrieves the segment interface to the specified segment
- // Parameters: (seg_id_t) segid: ID of the segment to look up
+ // Parameters: (SegmentId) segid: ID of the segment to look up
// Returns : (SegInterface *): An interface to the specified segment ID, or NULL on error
// The returned interface must be deleted after use
- SegInterface *getSegInterface(seg_id_t segid);
+ SegInterface *getSegInterface(SegmentId segid);
void heapRelocate(EngineState *s, reg_t block);
void scriptRelocateExportsSci11(int seg);
void scriptInitialiseObjectsSci11(EngineState *s, int seg);
int scriptMarkedDeleted(int script_nr);
- int initialiseScript(mem_obj_t *mem, EngineState *s, int script_nr);
+ int initialiseScript(MemObject *mem, EngineState *s, int script_nr);
public: // TODO: make private
IntMapper *id_seg_map; // id - script id; seg - index of heap
- mem_obj_t **heap;
+ MemObject **heap;
int heap_size; // size of the heap
int reserved_id;
int exports_wide;
@@ -408,28 +409,28 @@ public: // TODO: make private
// memory is tagged as
size_t mem_allocated; // Total amount of memory allocated
- seg_id_t clones_seg_id; // ID of the (a) clones segment
- seg_id_t lists_seg_id; // ID of the (a) list segment
- seg_id_t nodes_seg_id; // ID of the (a) node segment
- seg_id_t hunks_seg_id; // ID of the (a) hunk segment
+ SegmentId Clones_seg_id; // ID of the (a) clones segment
+ SegmentId Lists_seg_id; // ID of the (a) list segment
+ SegmentId Nodes_seg_id; // ID of the (a) node segment
+ SegmentId Hunks_seg_id; // ID of the (a) hunk segment
private:
- mem_obj_t *allocNonscriptSegment(memObjType type, seg_id_t *segid);
- local_variables_t *allocLocalsSegment(script_t *scr, int count);
- mem_obj_t *memObjAllocate(seg_id_t segid, int hash_id, memObjType type);
+ MemObject *allocNonscriptSegment(memObjType type, SegmentId *segid);
+ LocalVariables *allocLocalsSegment(Script *scr, int count);
+ MemObject *memObjAllocate(SegmentId segid, int hash_id, memObjType type);
int deallocate(int seg, bool recursive);
- hunk_t *alloc_hunk(reg_t *);
- void free_hunk(reg_t addr);
+ Hunk *alloc_Hunk(reg_t *);
+ void free_Hunk(reg_t addr);
- inline int relocateLocal(script_t *scr, seg_id_t segment, int location);
- inline int relocateBlock(reg_t *block, int block_location, int block_items, seg_id_t segment, int location);
- inline int relocateObject(object_t *obj, seg_id_t segment, int location);
+ inline int relocateLocal(Script *scr, SegmentId segment, int location);
+ inline int relocateBlock(reg_t *block, int block_location, int block_items, SegmentId segment, int location);
+ inline int relocateObject(Object *obj, SegmentId segment, int location);
inline int findFreeId(int *id);
- static void setScriptSize(mem_obj_t *mem, EngineState *s, int script_nr);
- object_t *scriptObjInit0(EngineState *s, reg_t obj_pos);
- object_t *scriptObjInit11(EngineState *s, reg_t obj_pos);
+ static void setScriptSize(MemObject *mem, EngineState *s, int script_nr);
+ Object *scriptObjInit0(EngineState *s, reg_t obj_pos);
+ Object *scriptObjInit11(EngineState *s, reg_t obj_pos);
/* Check segment validity
** Parameters: (int) seg: The segment to validate
@@ -451,7 +452,7 @@ private:
class SegInterface {
protected:
- SegInterface(SegManager *segmgr, mem_obj_t *mobj, seg_id_t segId, memObjType typeId);
+ SegInterface(SegManager *segmgr, MemObject *mobj, SegmentId segId, memObjType typeId);
public:
// Deallocates the segment interface
@@ -481,15 +482,15 @@ public:
virtual void listAllOutgoingReferences(EngineState *s, reg_t object, void *param, void (*note)(void *param, reg_t addr));
// Get the memory object
- mem_obj_t *getMobj() { return _mobj; }
+ MemObject *getMobj() { return _mobj; }
// Get the segment type
memObjType getType() { return _typeId; }
protected:
SegManager *_segmgr;
- mem_obj_t *_mobj;
- seg_id_t _segId;
+ MemObject *_mobj;
+ SegmentId _segId;
private:
memObjType _typeId; // Segment type
diff --git a/engines/sci/engine/state.h b/engines/sci/engine/state.h
index 55f4c667ea..0d18812e03 100644
--- a/engines/sci/engine/state.h
+++ b/engines/sci/engine/state.h
@@ -207,7 +207,7 @@ struct EngineState {
/* VM Information */
- exec_stack_t *execution_stack; /* The execution stack */
+ ExecStack *execution_stack; /* The execution stack */
int execution_stack_size; /* Number of stack frames allocated */
int execution_stack_pos; /* Position on the execution stack */
int execution_stack_base; /* When called from kernel functions, the vm
@@ -223,25 +223,25 @@ struct EngineState {
unsigned int r_amp_rest; /* &rest register (only used for save games) */
reg_t r_prev; /* previous comparison result */
- seg_id_t stack_segment; /* Heap area for the stack to use */
- stack_ptr_t stack_base; /* Pointer to the least stack element */
- stack_ptr_t stack_top; /* First invalid stack element */
+ SegmentId stack_segment; /* Heap area for the stack to use */
+ StackPtr stack_base; /* Pointer to the least stack element */
+ StackPtr stack_top; /* First invalid stack element */
- seg_id_t parser_segment; /* A heap area used by the parser for error reporting */
+ SegmentId parser_segment; /* A heap area used by the parser for error reporting */
reg_t parser_base; /* Base address for the parser error reporting mechanism */
reg_t parser_event; /* The event passed to Parse() and later used by Said() */
- seg_id_t script_000_segment;
- script_t *script_000; /* script 000, e.g. for globals */
+ SegmentId script_000_segment;
+ Script *script_000; /* script 000, e.g. for globals */
int parser_lastmatch_word; /* Position of the input word the parser last matched on, or SAID_NO_MATCH */
/* Debugger data: */
- breakpoint_t *bp_list; /* List of breakpoints */
+ Breakpoint *bp_list; /* List of breakpoints */
int have_bp; /* Bit mask specifying which types of breakpoints are used in bp_list */
unsigned int debug_mode; /* Contains flags for the various debug modes */
/* System strings */
- seg_id_t sys_strings_segment;
+ SegmentId sys_strings_segment;
SystemStrings *sys_strings;
/* Parser data: */
@@ -262,7 +262,7 @@ struct EngineState {
reg_t game_obj; /* Pointer to the game object */
int classtable_size; /* Number of classes in the table- for debugging */
- class_t *classtable; /* Table of all classes */
+ Class *classtable; /* Table of all classes */
SegManager *seg_manager;
int gc_countdown; /* Number of kernel calls until next gc */
diff --git a/engines/sci/engine/vm.cpp b/engines/sci/engine/vm.cpp
index 89077cf35e..7ce8bf0f08 100644
--- a/engines/sci/engine/vm.cpp
+++ b/engines/sci/engine/vm.cpp
@@ -56,7 +56,7 @@ extern int _debug_seeking;
extern int _weak_validations;
-calls_struct_t *send_calls = NULL;
+CallsStruct *send_calls = NULL;
int send_calls_allocated = 0;
int bp_flag = 0;
static reg_t _dummy_register;
@@ -65,7 +65,7 @@ static reg_t _dummy_register;
#ifndef DISABLE_VALIDATIONS
-static inline reg_t &validate_property(object_t *obj, int index) {
+static inline reg_t &validate_property(Object *obj, int index) {
if (!obj) {
if (sci_debug_flags & 4)
sciprintf("[VM] Sending to disposed object!\n");
@@ -85,7 +85,7 @@ static inline reg_t &validate_property(object_t *obj, int index) {
return obj->variables[index];
}
-static inline stack_ptr_t validate_stack_addr(EngineState *s, stack_ptr_t sp) {
+static inline StackPtr validate_stack_addr(EngineState *s, StackPtr sp) {
if (sp >= s->stack_base && sp < s->stack_top)
return sp;
@@ -200,7 +200,7 @@ int script_error(EngineState *s, const char *file, int line, const char *reason)
#define CORE_ERROR(area, msg) script_error(s, "[" area "] " __FILE__, __LINE__, msg)
reg_t get_class_address(EngineState *s, int classnr, int lock, reg_t caller) {
- class_t *the_class = s->classtable + classnr;
+ Class *the_class = s->classtable + classnr;
if (NULL == s) {
sciprintf("vm.c: get_class_address(): NULL passed for \"s\"\n");
@@ -252,7 +252,7 @@ reg_t get_class_address(EngineState *s, int classnr, int lock, reg_t caller) {
#define OBJ_SUPERCLASS(s, reg) SEG_GET_HEAP(s, make_reg(reg.segment, reg.offset + SCRIPT_SUPERCLASS_OFFSET))
// Returns an object's superclass
-inline exec_stack_t *execute_method(EngineState *s, uint16 script, uint16 pubfunct, stack_ptr_t sp, reg_t calling_obj, uint16 argc, stack_ptr_t argp) {
+inline ExecStack *execute_method(EngineState *s, uint16 script, uint16 pubfunct, StackPtr sp, reg_t calling_obj, uint16 argc, StackPtr argp) {
int seg;
uint16 temp;
@@ -273,7 +273,7 @@ inline exec_stack_t *execute_method(EngineState *s, uint16 script, uint16 pubfun
// Check if a breakpoint is set on this method
if (s->have_bp & BREAK_EXPORT) {
- breakpoint_t *bp;
+ Breakpoint *bp;
uint32 bpaddress;
bpaddress = (script << 16 | pubfunct);
@@ -311,7 +311,7 @@ static void _exec_varselectors(EngineState *s) {
}
}
-exec_stack_t *send_selector(EngineState *s, reg_t send_obj, reg_t work_obj, stack_ptr_t sp, int framesize, stack_ptr_t argp) {
+ExecStack *send_selector(EngineState *s, reg_t send_obj, reg_t work_obj, StackPtr sp, int framesize, StackPtr argp) {
// send_obj and work_obj are equal for anything but 'super'
// Returns a pointer to the TOS exec_stack element
#ifdef VM_DEBUG_SEND
@@ -322,15 +322,15 @@ exec_stack_t *send_selector(EngineState *s, reg_t send_obj, reg_t work_obj, stac
int selector;
int argc;
int origin = s->execution_stack_pos; // Origin: Used for debugging
- exec_stack_t *retval = s->execution_stack + s->execution_stack_pos;
+ ExecStack *retval = s->execution_stack + s->execution_stack_pos;
int print_send_action = 0;
- // We return a pointer to the new active exec_stack_t
+ // We return a pointer to the new active ExecStack
// The selector calls we catch are stored below:
int send_calls_nr = -1;
if (NULL == s) {
- sciprintf("vm.c: exec_stack_t(): NULL passed for \"s\"\n");
+ sciprintf("vm.c: ExecStack(): NULL passed for \"s\"\n");
return NULL;
}
@@ -345,7 +345,7 @@ exec_stack_t *send_selector(EngineState *s, reg_t send_obj, reg_t work_obj, stac
// Check if a breakpoint is set on this method
if (s->have_bp & BREAK_SELECTOR) {
- breakpoint_t *bp;
+ Breakpoint *bp;
char method_name [256];
sprintf(method_name, "%s::%s", obj_get_name(s, send_obj), s->_selectorNames[selector].c_str());
@@ -372,17 +372,17 @@ exec_stack_t *send_selector(EngineState *s, reg_t send_obj, reg_t work_obj, stac
if (++send_calls_nr == (send_calls_allocated - 1)) {
send_calls_allocated *= 2;
- send_calls = (calls_struct_t *)sci_realloc(send_calls, sizeof(calls_struct_t) * send_calls_allocated);
+ send_calls = (CallsStruct *)sci_realloc(send_calls, sizeof(CallsStruct) * send_calls_allocated);
}
switch (lookup_selector(s, send_obj, selector, &varp, &funcp)) {
- case SELECTOR_NONE:
+ case kSelectorNone:
sciprintf("Send to invalid selector 0x%x of object at "PREG"\n", 0xffff & selector, PRINT_REG(send_obj));
script_error_flag = script_debug_flag = 1;
--send_calls_nr;
break;
- case SELECTOR_VARIABLE:
+ case kSelectorVariable:
#ifdef VM_DEBUG_SEND
sciprintf("Varselector: ");
@@ -428,7 +428,7 @@ exec_stack_t *send_selector(EngineState *s, reg_t send_obj, reg_t work_obj, stac
}
break;
- case SELECTOR_METHOD:
+ case kSelectorMethod:
#ifdef VM_DEBUG_SEND
sciprintf("Funcselector(");
@@ -475,8 +475,8 @@ exec_stack_t *send_selector(EngineState *s, reg_t send_obj, reg_t work_obj, stac
return retval;
}
-exec_stack_t *add_exec_stack_varselector(EngineState *s, reg_t objp, int argc, stack_ptr_t argp, selector_t selector, reg_t *address, int origin) {
- exec_stack_t *xstack = add_exec_stack_entry(s, NULL_REG, address, objp, argc, argp, selector, objp, origin, SCI_XS_CALLEE_LOCALS);
+ExecStack *add_exec_stack_varselector(EngineState *s, reg_t objp, int argc, StackPtr argp, Selector selector, reg_t *address, int origin) {
+ ExecStack *xstack = add_exec_stack_entry(s, NULL_REG, address, objp, argc, argp, selector, objp, origin, SCI_XS_CALLEE_LOCALS);
// Store selector address in sp
xstack->addr.varp = address;
@@ -485,17 +485,17 @@ exec_stack_t *add_exec_stack_varselector(EngineState *s, reg_t objp, int argc, s
return xstack;
}
-exec_stack_t *add_exec_stack_entry(EngineState *s, reg_t pc, stack_ptr_t sp, reg_t objp, int argc,
- stack_ptr_t argp, selector_t selector, reg_t sendp, int origin, seg_id_t locals_segment) {
+ExecStack *add_exec_stack_entry(EngineState *s, reg_t pc, StackPtr sp, reg_t objp, int argc,
+ StackPtr argp, Selector selector, reg_t sendp, int origin, SegmentId locals_segment) {
// Returns new TOS element for the execution stack
// locals_segment may be -1 if derived from the called object
- exec_stack_t *xstack = NULL;
+ ExecStack *xstack = NULL;
if (!s->execution_stack)
- s->execution_stack = (exec_stack_t *)sci_malloc(sizeof(exec_stack_t) * (s->execution_stack_size = 16));
+ s->execution_stack = (ExecStack *)sci_malloc(sizeof(ExecStack) * (s->execution_stack_size = 16));
if (++(s->execution_stack_pos) == s->execution_stack_size) // Out of stack space?
- s->execution_stack = (exec_stack_t*)sci_realloc(s->execution_stack, sizeof(exec_stack_t) * (s->execution_stack_size += 8));
+ s->execution_stack = (ExecStack*)sci_realloc(s->execution_stack, sizeof(ExecStack) * (s->execution_stack_size += 8));
//sciprintf("Exec stack: [%d/%d], origin %d, at %p\n", s->execution_stack_pos, s->execution_stack_size, origin, s->execution_stack);
@@ -534,8 +534,8 @@ void vm_handle_fatal_error(EngineState *s, int line, const char *file) {
error("Could not recover, exitting...\n");
}
-static inline script_t *script_locate_by_segment(EngineState *s, seg_id_t seg) {
- mem_obj_t *memobj = GET_SEGMENT(*s->seg_manager, seg, MEM_OBJ_SCRIPT);
+static inline Script *script_locate_by_segment(EngineState *s, SegmentId seg) {
+ MemObject *memobj = GET_SEGMENT(*s->seg_manager, seg, MEM_OBJ_SCRIPT);
if (memobj)
return &(memobj->data.script);
@@ -543,7 +543,7 @@ static inline script_t *script_locate_by_segment(EngineState *s, seg_id_t seg) {
}
static reg_t pointer_add(EngineState *s, reg_t base, int offset) {
- mem_obj_t *mobj = GET_SEGMENT_ANY(*s->seg_manager, base.segment);
+ MemObject *mobj = GET_SEGMENT_ANY(*s->seg_manager, base.segment);
if (!mobj) {
script_debug_flag = script_error_flag = 1;
@@ -583,7 +583,7 @@ static byte _fake_return_buffer[2] = {op_ret << 1, op_ret << 1};
void run_vm(EngineState *s, int restoring) {
reg_t *variables[4]; // global, local, temp, param, as immediate pointers
reg_t *variables_base[4]; // Used for referencing VM ops
- seg_id_t variables_seg[4]; // Same as above, contains segment IDs
+ SegmentId variables_seg[4]; // Same as above, contains segment IDs
#ifndef DISABLE_VALIDATIONS
int variables_max[4]; // Max. values for all variables
unsigned int code_buf_size = 0 ; // (Avoid spurious warning)
@@ -591,16 +591,16 @@ void run_vm(EngineState *s, int restoring) {
int temp;
int16 aux_acc; // Auxiliary 16 bit accumulator
reg_t r_temp; // Temporary register
- stack_ptr_t s_temp; // Temporary stack pointer
+ StackPtr s_temp; // Temporary stack pointer
int16 opparams[4]; // opcode parameters
int restadjust = s->r_amp_rest;
// &rest adjusts the parameter count by this value
// Current execution data:
- exec_stack_t *xs = s->execution_stack + s->execution_stack_pos;
- exec_stack_t *xs_new = NULL;
- object_t *obj = obj_get(s, xs->objp);
- script_t *local_script = script_locate_by_segment(s, xs->local_segment);
+ ExecStack *xs = s->execution_stack + s->execution_stack_pos;
+ ExecStack *xs_new = NULL;
+ Object *obj = obj_get(s, xs->objp);
+ Script *local_script = script_locate_by_segment(s, xs->local_segment);
int old_execution_stack_base = s->execution_stack_base;
// Used to detect the stack bottom, for "physical" returns
byte *code_buf = NULL; // (Avoid spurious warning)
@@ -643,7 +643,7 @@ void run_vm(EngineState *s, int restoring) {
while (1) {
byte opcode;
int old_pc_offset;
- stack_ptr_t old_sp = xs->sp;
+ StackPtr old_sp = xs->sp;
byte opnumber;
int var_type; // See description below
int var_number;
@@ -651,7 +651,7 @@ void run_vm(EngineState *s, int restoring) {
old_pc_offset = xs->addr.pc.offset;
if (s->execution_stack_pos_changed) {
- script_t *scr;
+ Script *scr;
xs = s->execution_stack + s->execution_stack_pos;
s->execution_stack_pos_changed = 0;
@@ -995,7 +995,7 @@ void run_vm(EngineState *s, int restoring) {
case 0x20: { // call
int argc = (opparams[1] >> 1) // Given as offset, but we need count
+ 1 + restadjust;
- stack_ptr_t call_base = xs->sp - argc;
+ StackPtr call_base = xs->sp - argc;
xs->sp[1].offset += restadjust;
xs_new = add_exec_stack_entry(s, make_reg(xs->addr.pc.segment, xs->addr.pc.offset + opparams[0]),
@@ -1074,9 +1074,9 @@ void run_vm(EngineState *s, int restoring) {
case 0x24: // ret
do {
- stack_ptr_t old_sp2 = xs->sp;
- stack_ptr_t old_fp = xs->fp;
- exec_stack_t *old_xs = s->execution_stack + s->execution_stack_pos;
+ StackPtr old_sp2 = xs->sp;
+ StackPtr old_fp = xs->fp;
+ ExecStack *old_xs = s->execution_stack + s->execution_stack_pos;
if (s->execution_stack_pos == s->execution_stack_base) { // Have we reached the base?
s->execution_stack_base = old_execution_stack_base; // Restore stack base
@@ -1476,7 +1476,7 @@ void run_vm(EngineState *s, int restoring) {
}
}
-static inline int _obj_locate_varselector(EngineState *s, object_t *obj, selector_t slc) {
+static inline int _obj_locate_varselector(EngineState *s, Object *obj, Selector slc) {
// Determines if obj explicitly defines slc as a varselector
// Returns -1 if not found
@@ -1509,7 +1509,7 @@ static inline int _obj_locate_varselector(EngineState *s, object_t *obj, selecto
}
}
-static inline int _class_locate_funcselector(EngineState *s, object_t *obj, selector_t slc) {
+static inline int _class_locate_funcselector(EngineState *s, Object *obj, Selector slc) {
// Determines if obj is a class and explicitly defines slc as a funcselector
// Does NOT say anything about obj's superclasses, i.e. failure may be
// returned even if one of the superclasses defines the funcselector.
@@ -1523,7 +1523,7 @@ static inline int _class_locate_funcselector(EngineState *s, object_t *obj, sele
return -1; // Failed
}
-static inline int _lookup_selector_function(EngineState *s, int seg_id, object_t *obj, selector_t selector_id, reg_t *fptr) {
+static inline SelectorType _lookup_selector_function(EngineState *s, int seg_id, Object *obj, Selector selector_id, reg_t *fptr) {
int index;
// "recursive" lookup
@@ -1539,19 +1539,19 @@ static inline int _lookup_selector_function(EngineState *s, int seg_id, object_t
*fptr = make_reg(obj->pos.segment, getUInt16((byte *)(obj->base_method + index * 2 + 2)));
}
- return SELECTOR_METHOD;
+ return kSelectorMethod;
} else {
seg_id = obj->variables[SCRIPT_SUPERCLASS_SELECTOR].segment;
obj = obj_get(s, obj->variables[SCRIPT_SUPERCLASS_SELECTOR]);
}
}
- return SELECTOR_NONE;
+ return kSelectorNone;
}
-int lookup_selector(EngineState *s, reg_t obj_location, selector_t selector_id, reg_t **vptr, reg_t *fptr) {
- object_t *obj = obj_get(s, obj_location);
- object_t *species;
+SelectorType lookup_selector(EngineState *s, reg_t obj_location, Selector selector_id, reg_t **vptr, reg_t *fptr) {
+ Object *obj = obj_get(s, obj_location);
+ Object *species;
int index;
// Early SCI versions used the LSB in the selector ID as a read/write
@@ -1562,7 +1562,7 @@ int lookup_selector(EngineState *s, reg_t obj_location, selector_t selector_id,
if (!obj) {
CORE_ERROR("SLC-LU", "Attempt to send to non-object or invalid script");
sciprintf("Address was "PREG"\n", PRINT_REG(obj_location));
- return SELECTOR_NONE;
+ return kSelectorNone;
}
if (IS_CLASS(obj))
@@ -1575,7 +1575,7 @@ int lookup_selector(EngineState *s, reg_t obj_location, selector_t selector_id,
CORE_ERROR("SLC-LU", "Error while looking up Species class");
sciprintf("Original address was "PREG"\n", PRINT_REG(obj_location));
sciprintf("Species address was "PREG"\n", PRINT_REG(obj->variables[SCRIPT_SPECIES_SELECTOR]));
- return SELECTOR_NONE;
+ return kSelectorNone;
}
index = _obj_locate_varselector(s, obj, selector_id);
@@ -1584,7 +1584,7 @@ int lookup_selector(EngineState *s, reg_t obj_location, selector_t selector_id,
// Found it as a variable
if (vptr)
*vptr = obj->variables + index;
- return SELECTOR_VARIABLE;
+ return kSelectorVariable;
}
return _lookup_selector_function(s, obj_location.segment, obj, selector_id, fptr);
@@ -1613,8 +1613,8 @@ void script_detect_versions(EngineState *s) {
}
}
-seg_id_t script_get_segment(EngineState *s, int script_nr, int load) {
- seg_id_t segment;
+SegmentId script_get_segment(EngineState *s, int script_nr, int load) {
+ SegmentId segment;
if ((load & SCRIPT_GET_LOAD) == SCRIPT_GET_LOAD)
script_instantiate(s, script_nr);
@@ -1631,9 +1631,9 @@ seg_id_t script_get_segment(EngineState *s, int script_nr, int load) {
}
reg_t script_lookup_export(EngineState *s, int script_nr, int export_index) {
- seg_id_t seg = script_get_segment(s, script_nr, SCRIPT_GET_DONT_LOAD);
- mem_obj_t *memobj;
- script_t *script = NULL;
+ SegmentId seg = script_get_segment(s, script_nr, SCRIPT_GET_DONT_LOAD);
+ MemObject *memobj;
+ Script *script = NULL;
#ifndef DISABLE_VALIDATIONS
if (!seg) {
@@ -1674,7 +1674,7 @@ int script_instantiate_common(EngineState *s, int script_nr, resource_t **script
int seg;
int seg_id;
int marked_for_deletion;
- mem_obj_t *mem;
+ MemObject *mem;
reg_t reg;
*was_new = 1;
@@ -1853,8 +1853,8 @@ int script_instantiate_sci0(EngineState *s, int script_nr) {
break;
case sci_obj_object:
case sci_obj_class: { // object or class?
- object_t *obj = s->seg_manager->scriptObjInit(s, addr);
- object_t *base_obj;
+ Object *obj = s->seg_manager->scriptObjInit(s, addr);
+ Object *base_obj;
// Instantiate the superclass, if neccessary
obj->variables[SCRIPT_SPECIES_SELECTOR] = INST_LOOKUP_CLASS(obj->variables[SCRIPT_SPECIES_SELECTOR].offset);
@@ -1929,7 +1929,7 @@ int script_instantiate(EngineState *s, int script_nr) {
return script_instantiate_sci0(s, script_nr);
}
-void script_uninstantiate_sci0(EngineState *s, int script_nr, seg_id_t seg) {
+void script_uninstantiate_sci0(EngineState *s, int script_nr, SegmentId seg) {
reg_t reg = make_reg(seg, (s->version < SCI_VERSION_FTU_NEW_SCRIPT_HEADER) ? 2 : 0);
int objtype, objlength;
@@ -2011,7 +2011,7 @@ void script_uninstantiate(EngineState *s, int script_nr) {
return;
}
-static void _init_stack_base_with_selector(EngineState *s, selector_t selector) {
+static void _init_stack_base_with_selector(EngineState *s, Selector selector) {
s->stack_base[0] = make_reg(0, (uint16)selector);
s->stack_base[1] = NULL_REG;
}
@@ -2051,7 +2051,7 @@ static EngineState *_game_run(EngineState *s, int restoring) {
if (!send_calls_allocated) {
send_calls_allocated = 16;
- send_calls = (calls_struct_t *)sci_calloc(sizeof(calls_struct_t), 16);
+ send_calls = (CallsStruct *)sci_calloc(sizeof(CallsStruct), 16);
}
if (script_abort_flag == SCRIPT_ABORT_WITH_REPLAY) {
@@ -2124,9 +2124,9 @@ int game_restore(EngineState **_s, char *game_name) {
}
#endif
-object_t *obj_get(EngineState *s, reg_t offset) {
- mem_obj_t *memobj = GET_OBJECT_SEGMENT(*s->seg_manager, offset.segment);
- object_t *obj = NULL;
+Object *obj_get(EngineState *s, reg_t offset) {
+ MemObject *memobj = GET_OBJECT_SEGMENT(*s->seg_manager, offset.segment);
+ Object *obj = NULL;
int idx;
if (memobj != NULL) {
@@ -2146,7 +2146,7 @@ object_t *obj_get(EngineState *s, reg_t offset) {
}
const char *obj_get_name(EngineState *s, reg_t pos) {
- object_t *obj = obj_get(s, pos);
+ Object *obj = obj_get(s, pos);
if (!obj)
return "<no such object>";
diff --git a/engines/sci/engine/vm.h b/engines/sci/engine/vm.h
index 608f9b7550..6c05ccb3f5 100644
--- a/engines/sci/engine/vm.h
+++ b/engines/sci/engine/vm.h
@@ -118,13 +118,14 @@ struct SystemStrings {
#define CALL_SP_CARRY NULL /* Stack pointer value: Use predecessor's value */
+// Types of selectors as returned by lookup_selector() below
+enum SelectorType {
+ kSelectorNone = 0,
+ kSelectorVariable,
+ kSelectorMethod
+};
-#define SELECTOR_NONE 0
-#define SELECTOR_VARIABLE 1
-#define SELECTOR_METHOD 2
-/* Types of selectors as returned by grep_selector() below */
-
-struct class_t {
+struct Class {
int script; /* number of the script the class is in, -1 for non-existing */
reg_t reg; /* offset; script-relative offset, segment: 0 if not instantiated */
};
@@ -135,19 +136,19 @@ struct class_t {
#define IS_CLASS(obj) (obj->variables[SCRIPT_INFO_SELECTOR].offset & SCRIPT_INFO_CLASS)
/* This struct is used to buffer the list of send calls in send_selector() */
-struct calls_struct_t {
+struct CallsStruct {
union {
reg_t func;
reg_t *var;
} address;
- stack_ptr_t argp;
+ StackPtr argp;
int argc;
- selector_t selector;
- stack_ptr_t sp; /* Stack pointer */
- int type; /* Same as exec_stack_t.type */
+ Selector selector;
+ StackPtr sp; /* Stack pointer */
+ int type; /* Same as ExecStack.type */
};
-struct local_variables_t {
+struct LocalVariables {
int script_id; /* Script ID this local variable block belongs to */
reg_t *locals;
int nr;
@@ -155,7 +156,7 @@ struct local_variables_t {
#define OBJECT_FLAG_FREED (0x1 << 0) /* Clone has been marked as 'freed' */
-struct object_t {
+struct Object {
int flags;
reg_t pos; /* Object offset within its script; for clones, this is their base */
int variables_nr;
@@ -168,7 +169,7 @@ struct object_t {
reg_t *variables;
};
-struct code_block_t {
+struct CodeBlock {
reg_t pos;
int size;
};
@@ -195,7 +196,7 @@ struct code_block_t {
-struct script_t {
+struct Script {
int nr; /* Script number */
byte* buf; /* Static data buffer, or NULL if not used */
size_t buf_size;
@@ -212,7 +213,7 @@ struct script_t {
int synonyms_nr; /* Number of entries in the synonyms block */
int lockers; /* Number of classes and objects that require this script */
- object_t *objects; /* Table for objects, contains property variables */
+ Object *objects; /* Table for objects, contains property variables */
/* Indexed by the value stored at SCRIPT_LOCALVARPTR_OFFSET,
** see VM_OBJECT_[GS]ET_INDEX() */
int objects_nr; /* Number of objects and classes */
@@ -220,9 +221,9 @@ struct script_t {
int locals_offset;
int locals_segment; /* The local variable segment */
- local_variables_t *locals_block;
+ LocalVariables *locals_block;
- code_block_t *code;
+ CodeBlock *code;
int code_blocks_nr;
int code_blocks_allocated;
int relocated;
@@ -237,39 +238,40 @@ struct dstack_t {
#define CLONE_USED -1
#define CLONE_NONE -1
-typedef object_t clone_t;
+typedef Object Clone;
-struct node_t {
+struct Node {
reg_t pred, succ; /* Predecessor, successor */
reg_t key;
reg_t value;
}; /* List nodes */
-struct list_t {
+struct List {
reg_t first;
reg_t last;
};
-struct hunk_t {
+struct Hunk {
void *mem;
unsigned int size;
const char *type;
};
-/* clone_table_t */
-DECLARE_HEAPENTRY(clone)
-/* node_table_t */
-DECLARE_HEAPENTRY(node)
-/* list_table_t */
-DECLARE_HEAPENTRY(list) /* list entries */
-/* hunk_table_t */
-DECLARE_HEAPENTRY(hunk)
-
-struct dynmem_t {
+/* CloneTable */
+DECLARE_HEAPENTRY(Clone)
+/* NodeTable */
+DECLARE_HEAPENTRY(Node)
+/* ListTable */
+DECLARE_HEAPENTRY(List) /* list entries */
+/* HunkTable */
+DECLARE_HEAPENTRY(Hunk)
+
+// Free-style memory
+struct DynMem {
int size;
char *description;
byte *buf;
-}; /* Free-style memory */
+};
enum memObjType {
MEM_OBJ_INVALID = 0,
@@ -286,19 +288,19 @@ enum memObjType {
MEM_OBJ_MAX = MEM_OBJ_RESERVED // For sanity checking
};
-struct mem_obj_t {
+struct MemObject {
memObjType type;
int segmgr_id; /* Internal value used by the seg_manager's hash map */
union {
- script_t script;
- clone_table_t clones;
- local_variables_t locals;
+ Script script;
+ CloneTable clones;
+ LocalVariables locals;
dstack_t stack;
SystemStrings sys_strings;
- list_table_t lists;
- node_table_t nodes;
- hunk_table_t hunks;
- dynmem_t dynmem;
+ ListTable lists;
+ NodeTable nodes;
+ HunkTable hunks;
+ DynMem dynmem;
char *reserved;
} data;
};
@@ -306,80 +308,80 @@ struct mem_obj_t {
struct selector_map_t {
- selector_t init; /* Init function */
- selector_t play; /* Play function (first function to be called) */
- selector_t replay; /* Replay function */
- selector_t x, y, z; /* Coordinates */
- selector_t priority;
- selector_t view, loop, cel; /* Description of a specific image */
- selector_t brLeft, brRight, brTop, brBottom; /* Bounding Rectangle */
- selector_t xStep, yStep; /* BR adjustments */
- selector_t nsLeft, nsRight, nsTop, nsBottom; /* View boundaries ('now seen') */
- selector_t text, font; /* Used by controls */
- selector_t type, state; /* Used by contols as well */
- selector_t doit; /* Called (!) by the Animate() system call */
- selector_t signal; /* Used by Animate() to control a view's behaviour */
- selector_t underBits; /* Used by the graphics subroutines to store backupped BG pic data */
+ Selector init; /* Init function */
+ Selector play; /* Play function (first function to be called) */
+ Selector replay; /* Replay function */
+ Selector x, y, z; /* Coordinates */
+ Selector priority;
+ Selector view, loop, cel; /* Description of a specific image */
+ Selector brLeft, brRight, brTop, brBottom; /* Bounding Rectangle */
+ Selector xStep, yStep; /* BR adjustments */
+ Selector nsLeft, nsRight, nsTop, nsBottom; /* View boundaries ('now seen') */
+ Selector text, font; /* Used by controls */
+ Selector type, state; /* Used by contols as well */
+ Selector doit; /* Called (!) by the Animate() system call */
+ Selector signal; /* Used by Animate() to control a view's behaviour */
+ Selector underBits; /* Used by the graphics subroutines to store backupped BG pic data */
/* The following selectors are used by the Bresenham syscalls: */
- selector_t canBeHere; /* Funcselector: Checks for movement validity */
- selector_t client; /* The object that wants to be moved */
- selector_t cycler; /* The cycler of the client */
- selector_t dx, dy; /* Deltas */
- selector_t edgeHit;
- selector_t b_movCnt, b_i1, b_i2, b_di, b_xAxis, b_incr; /* Various Bresenham vars */
- selector_t completed;
+ Selector canBeHere; /* Funcselector: Checks for movement validity */
+ Selector client; /* The object that wants to be moved */
+ Selector cycler; /* The cycler of the client */
+ Selector dx, dy; /* Deltas */
+ Selector edgeHit;
+ Selector b_movCnt, b_i1, b_i2, b_di, b_xAxis, b_incr; /* Various Bresenham vars */
+ Selector completed;
- selector_t illegalBits; /* Used by CanBeHere */
- selector_t dispose;
+ Selector illegalBits; /* Used by CanBeHere */
+ Selector dispose;
- selector_t prevSignal; /* Used by DoSound */
+ Selector prevSignal; /* Used by DoSound */
- selector_t message, modifiers; /* Used by GetEvent */
+ Selector message, modifiers; /* Used by GetEvent */
- selector_t owner, handle;
- selector_t cue;
- selector_t number;
+ Selector owner, handle;
+ Selector cue;
+ Selector number;
- selector_t max, cursor; /* Used by EditControl */
- selector_t mode; /* Used by text controls (-> DrawControl()) */
+ Selector max, cursor; /* Used by EditControl */
+ Selector mode; /* Used by text controls (-> DrawControl()) */
- selector_t wordFail, syntaxFail, semanticFail; /* Used by Parse() */
+ Selector wordFail, syntaxFail, semanticFail; /* Used by Parse() */
- selector_t claimed; /* Used generally by the event mechanism */
+ Selector claimed; /* Used generally by the event mechanism */
- selector_t elements; /* Used by SetSynonyms() */
+ Selector elements; /* Used by SetSynonyms() */
- selector_t lsTop, lsBottom, lsRight, lsLeft; /* Used by Animate() subfunctions and scroll list controls */
+ Selector lsTop, lsBottom, lsRight, lsLeft; /* Used by Animate() subfunctions and scroll list controls */
- selector_t baseSetter; /* Alternative baseSetter */
+ Selector baseSetter; /* Alternative baseSetter */
- selector_t who, distance; /* Used for 'chasing' movers */
+ Selector who, distance; /* Used for 'chasing' movers */
- selector_t looper, mover, isBlocked, heading; /* Used in DoAvoider */
+ Selector looper, mover, isBlocked, heading; /* Used in DoAvoider */
- selector_t caller, moveDone, moveSpeed; /* Used for DoBresen */
+ Selector caller, moveDone, moveSpeed; /* Used for DoBresen */
- selector_t delete_; /* Called by Animate() to dispose a view object */
+ Selector delete_; /* Called by Animate() to dispose a view object */
- selector_t vol;
- selector_t pri;
+ Selector vol;
+ Selector pri;
- selector_t min; /* SMPTE time format */
- selector_t sec;
- selector_t frame;
+ Selector min; /* SMPTE time format */
+ Selector sec;
+ Selector frame;
- selector_t dataInc;
- selector_t size;
- selector_t palette;
- selector_t cantBeHere;
- selector_t nodePtr;
- selector_t flags;
+ Selector dataInc;
+ Selector size;
+ Selector palette;
+ Selector cantBeHere;
+ Selector nodePtr;
+ Selector flags;
- selector_t points; /* Used by AvoidPath() */
+ Selector points; /* Used by AvoidPath() */
}; /* Contains selector IDs for a few selected selectors */
-struct view_object_t {
+struct ViewObject {
reg_t obj;
reg_t *signalp; /* Used only indirectly */
reg_t *underBitsp; /* The same goes for the handle storage */
@@ -402,35 +404,35 @@ struct view_object_t {
#define EXEC_STACK_TYPE_KERNEL 1
#define EXEC_STACK_TYPE_VARSELECTOR 2
-struct exec_stack_t {
+struct ExecStack {
reg_t objp;
reg_t sendp; /* Pointer to the object containing the invoked method */
union {
reg_t *varp; /* Variable pointer for read/write access */
reg_t pc; /* Not accurate for the TOS element */
} addr;
- stack_ptr_t fp; /* Frame pointer */
- stack_ptr_t sp; /* Stack pointer */
+ StackPtr fp; /* Frame pointer */
+ StackPtr sp; /* Stack pointer */
int argc;
/* former variables[4]: [all other values are derived] */
- stack_ptr_t variables_argp; /* Argument pointer */
- seg_id_t local_segment; /* local variables etc. */
+ StackPtr variables_argp; /* Argument pointer */
+ SegmentId local_segment; /* local variables etc. */
- selector_t selector; /* The selector which was used to call or -1 if not applicable */
+ Selector selector; // The selector which was used to call or -1 if not applicable
int origin; /* The stack frame position the call was made from, or -1 if it
** was the initial call. */
byte type; /* EXEC_STACK_TYPE* */
};
-struct breakpoint_t {
+struct Breakpoint {
int type;
union {
uint32 address; /* Breakpoints on exports */
char *name; /* Breakpoints on selector names */
} data;
- breakpoint_t *next;
+ Breakpoint *next;
};
#define BREAK_SELECTOR 1
@@ -480,70 +482,70 @@ extern kernel_function* kfuncs[];
extern int max_instance;
/*inline*/
-exec_stack_t *execute_method(EngineState *s, uint16 script, uint16 pubfunct, stack_ptr_t sp, reg_t calling_obj,
- uint16 argc, stack_ptr_t argp);
+ExecStack *execute_method(EngineState *s, uint16 script, uint16 pubfunct, StackPtr sp, reg_t calling_obj,
+ uint16 argc, StackPtr argp);
/* Executes function pubfunct of the specified script.
** Parameters: (EngineState *) s: The state which is to be executed with
** (uint16) script: The script which is called
** (uint16) pubfunct: The exported script function which is to be called
-** (stack_ptr_t) sp: Stack pointer position
+** (StackPtr) sp: Stack pointer position
** (reg_t) calling_obj: The heap address of the object which executed the call
** (uint16) argc: Number of arguments supplied
-** (stack_ptr_t) argp: Pointer to the first supplied argument
-** Returns : (exec_stack_t *): A pointer to the new exec stack TOS entry
+** (StackPtr) argp: Pointer to the first supplied argument
+** Returns : (ExecStack *): A pointer to the new exec stack TOS entry
*/
-exec_stack_t *send_selector(EngineState *s, reg_t send_obj, reg_t work_obj,
- stack_ptr_t sp, int framesize, stack_ptr_t argp);
+ExecStack *send_selector(EngineState *s, reg_t send_obj, reg_t work_obj,
+ StackPtr sp, int framesize, StackPtr argp);
/* Executes a "send" or related operation to a selector
** Parameters: (EngineState *) s: The EngineState to operate on
** (reg_t) send_obj: Heap address of the object to send to
** (reg_t) work_obj: Heap address of the object initiating the send
-** (stack_ptr_t) sp: Stack pointer position
+** (StackPtr) sp: Stack pointer position
** (int) framesize: Size of the send as determined by the "send" operation
-** (stack_ptr_t) argp: Pointer to the beginning of the heap block containing the
+** (StackPtr) argp: Pointer to the beginning of the heap block containing the
** data to be send. This area is a succession of one or more
** sequences of [selector_number][argument_counter] and then
** "argument_counter" word entries with the parameter values.
-** Returns : (exec_stack_t *): A pointer to the new execution stack TOS entry
+** Returns : (ExecStack *): A pointer to the new execution stack TOS entry
*/
#define SCI_XS_CALLEE_LOCALS -1
-exec_stack_t *add_exec_stack_entry(EngineState *s, reg_t pc, stack_ptr_t sp, reg_t objp, int argc,
- stack_ptr_t argp, selector_t selector, reg_t sendp, int origin, seg_id_t local_segment);
+ExecStack *add_exec_stack_entry(EngineState *s, reg_t pc, StackPtr sp, reg_t objp, int argc,
+ StackPtr argp, Selector selector, reg_t sendp, int origin, SegmentId local_segment);
/* Adds an entry to the top of the execution stack
** Parameters: (EngineState *) s: The state with which to execute
** (reg_t) pc: The initial program counter
-** (stack_ptr_t) sp: The initial stack pointer
+** (StackPtr) sp: The initial stack pointer
** (reg_t) objp: Pointer to the beginning of the current object
** (int) argc: Number of parameters to call with
-** (stack_ptr_t) argp: Heap pointer to the first parameter
-** (selector_t) selector: The selector by which it was called or
-** NULL_SELECTOR if n.a. For debugging.
+** (StackPtr) argp: Heap pointer to the first parameter
+** (Selector) selector: The selector by which it was called or
+** NULL_SELECTOR if n.a. For debugging.
** (reg_t) sendp: Pointer to the object which the message was sent to.
** Equal to objp for anything but super.
** (int) origin: Number of the execution stack element this entry was created by
** (usually the current TOS number, except for multiple sends).
-** (seg_id_t) local_segment: The segment to use for local variables,
+** (SegmentId) local_segment: The segment to use for local variables,
** or SCI_XS_CALLEE_LOCALS to use obj's segment.
-** Returns : (exec_stack_t *): A pointer to the new exec stack TOS entry
+** Returns : (ExecStack *): A pointer to the new exec stack TOS entry
*/
-exec_stack_t *add_exec_stack_varselector(EngineState *s, reg_t objp, int argc, stack_ptr_t argp,
- selector_t selector, reg_t *address, int origin);
+ExecStack *add_exec_stack_varselector(EngineState *s, reg_t objp, int argc, StackPtr argp,
+ Selector selector, reg_t *address, int origin);
/* Adds one varselector access to the execution stack
** Parameters: (EngineState *) s: The EngineState to use
** (reg_t) objp: Pointer to the object owning the selector
** (int) argc: 1 for writing, 0 for reading
-** (stack_ptr_t) argp: Pointer to the address of the data to write -2
+** (StackPtr) argp: Pointer to the address of the data to write -2
** (int) selector: Selector name
** (reg_t *) address: Heap address of the selector
** (int) origin: Stack frame which the access originated from
-** Returns : (exec_stack_t *): Pointer to the new exec-TOS element
+** Returns : (ExecStack *): Pointer to the new exec-TOS element
** This function is called from send_selector only.
*/
@@ -565,17 +567,17 @@ void vm_handle_fatal_error(EngineState *s, int line, const char *file);
*/
-void script_debug(EngineState *s, reg_t *pc, stack_ptr_t *sp, stack_ptr_t *pp, reg_t *objp,
- int *restadjust, seg_id_t *segids, reg_t **variables, reg_t **variables_base,
+void script_debug(EngineState *s, reg_t *pc, StackPtr *sp, StackPtr *pp, reg_t *objp,
+ int *restadjust, SegmentId *segids, reg_t **variables, reg_t **variables_base,
int *variables_nr, int bp);
/* Debugger functionality
** Parameters: (EngineState *) s: The state at which debugging should take place
** (reg_t *) pc: Pointer to the program counter
-** (stack_ptr_t *) sp: Pointer to the stack pointer
-** (stack_ptr_t *) pp: Pointer to the frame pointer
+** (StackPtr *) sp: Pointer to the stack pointer
+** (StackPtr *) pp: Pointer to the frame pointer
** (reg_t *) objp: Pointer to the object base pointer
** (int *) restadjust: Pointer to the &rest adjustment value
-** (seg_id_t *) segids: four-element array containing segment IDs for locals etc.
+** (SegmentId *) segids: four-element array containing segment IDs for locals etc.
** (reg_t **) variables: four-element array referencing registers for globals etc.
** (reg_t **) variables_base: four-element array referencing
** register bases for temps etc.
@@ -612,14 +614,14 @@ void script_free_vm_memory(EngineState *s);
*/
-int lookup_selector(EngineState *s, reg_t obj, selector_t selectorid, reg_t **vptr, reg_t *fptr);
+SelectorType lookup_selector(EngineState *s, reg_t obj, Selector selectorid, reg_t **vptr, reg_t *fptr);
/* Looks up a selector and returns its type and value
** Parameters: (EngineState *) s: The EngineState to use
** (reg_t) obj: Address of the object to look the selector up in
-** (selector_t) selectorid: The selector to look up
-** Returns : (int) SELECTOR_NONE if the selector was not found in the object or its superclasses.
-** SELECTOR_VARIABLE if the selector represents an object-relative variable
-** SELECTOR_METHOD if the selector represents a method
+** (Selector) selectorid: The selector to look up
+** Returns : (SelectorType) kSelectorNone if the selector was not found in the object or its superclasses.
+** kSelectorVariable if the selector represents an object-relative variable
+** kSelectorMethod if the selector represents a method
** (reg_t *) *vptr: A pointer to the storage space associated with the selector, if
** it is a variable
** (reg_t) *fptr: A reference to the function described by that selector, if it is
@@ -633,7 +635,7 @@ int lookup_selector(EngineState *s, reg_t obj, selector_t selectorid, reg_t **vp
#define SCRIPT_GET_LOAD 1 /* Load, if neccessary */
#define SCRIPT_GET_LOCK 3 /* Load, if neccessary, and lock */
-seg_id_t script_get_segment(EngineState *s, int script_id, int load);
+SegmentId script_get_segment(EngineState *s, int script_id, int load);
/* Determines the segment occupied by a certain script
** Parameters: (EngineState *) s: The state to operate on
** (int) script_id: The script in question
@@ -807,11 +809,11 @@ const char *obj_get_name(EngineState *s, reg_t pos);
** may it be modified).
*/
-object_t *obj_get(EngineState *s, reg_t offset);
+Object *obj_get(EngineState *s, reg_t offset);
/* Retreives an object from the specified location
** Parameters: (EngineState *) s: Pointer to the EngineState to operate on
** (reg_t) offset: The object's offset
-** Returns : (object_t *) The object in question, or NULL if there is none
+** Returns : (Object *) The object in question, or NULL if there is none
*/
} // End of namespace Sci
diff --git a/engines/sci/engine/vm_types.h b/engines/sci/engine/vm_types.h
index 016ab7504a..d2ddf839bc 100644
--- a/engines/sci/engine/vm_types.h
+++ b/engines/sci/engine/vm_types.h
@@ -30,7 +30,8 @@
namespace Sci {
-typedef int seg_id_t; /* Segment ID type */
+// Segment ID type
+typedef int SegmentId;
struct reg_t {
uint16 segment;
@@ -40,8 +41,10 @@ struct reg_t {
#define PREG "%04x:%04x"
#define PRINT_REG(r) (0xffff) & (unsigned) (r).segment, (unsigned) (r).offset
-typedef reg_t *stack_ptr_t; /* Stack pointer type */
-typedef int selector_t; /* Selector ID */
+// Stack pointer type
+typedef reg_t *StackPtr;
+// Selector ID
+typedef int Selector;
#define NULL_SELECTOR -1
#define PSTK "ST:%04x"