diff options
author | Max Horn | 2009-09-17 00:45:12 +0000 |
---|---|---|
committer | Max Horn | 2009-09-17 00:45:12 +0000 |
commit | 10f898c90eef6c63995d21c2150f022ae012ea4d (patch) | |
tree | ad33cf3914f3b81b2c64744942ce46d47d1c9bbf | |
parent | 1f0e8ef4705ba242e66d5f8c0c20b2c21078bdf7 (diff) | |
download | scummvm-rg350-10f898c90eef6c63995d21c2150f022ae012ea4d.tar.gz scummvm-rg350-10f898c90eef6c63995d21c2150f022ae012ea4d.tar.bz2 scummvm-rg350-10f898c90eef6c63995d21c2150f022ae012ea4d.zip |
SCI: Rename MemObject -> SegmentObj
svn-id: r44130
-rw-r--r-- | engines/sci/console.cpp | 68 | ||||
-rw-r--r-- | engines/sci/engine/gc.cpp | 14 | ||||
-rw-r--r-- | engines/sci/engine/kernel.cpp | 22 | ||||
-rw-r--r-- | engines/sci/engine/klists.cpp | 4 | ||||
-rw-r--r-- | engines/sci/engine/kmisc.cpp | 4 | ||||
-rw-r--r-- | engines/sci/engine/kstring.cpp | 2 | ||||
-rw-r--r-- | engines/sci/engine/memobj.cpp | 28 | ||||
-rw-r--r-- | engines/sci/engine/memobj.h | 52 | ||||
-rw-r--r-- | engines/sci/engine/savegame.cpp | 22 | ||||
-rw-r--r-- | engines/sci/engine/scriptdebug.cpp | 4 | ||||
-rw-r--r-- | engines/sci/engine/seg_manager.cpp | 64 | ||||
-rw-r--r-- | engines/sci/engine/seg_manager.h | 10 | ||||
-rw-r--r-- | engines/sci/engine/vm.cpp | 10 |
13 files changed, 152 insertions, 152 deletions
diff --git a/engines/sci/console.cpp b/engines/sci/console.cpp index 0740062624..9f75b14d99 100644 --- a/engines/sci/console.cpp +++ b/engines/sci/console.cpp @@ -1314,48 +1314,48 @@ bool Console::cmdPrintSegmentTable(int argc, const char **argv) { DebugPrintf("Segment table:\n"); for (uint i = 0; i < _vm->_gamestate->segMan->_heap.size(); i++) { - MemObject *mobj = _vm->_gamestate->segMan->_heap[i]; + SegmentObj *mobj = _vm->_gamestate->segMan->_heap[i]; if (mobj && mobj->getType()) { DebugPrintf(" [%04x] ", i); switch (mobj->getType()) { - case MEM_OBJ_SCRIPT: + case SEG_TYPE_SCRIPT: DebugPrintf("S script.%03d l:%d ", (*(Script *)mobj)._nr, (*(Script *)mobj).getLockers()); break; - case MEM_OBJ_CLONES: + case SEG_TYPE_CLONES: DebugPrintf("C clones (%d allocd)", (*(CloneTable *)mobj).entries_used); break; - case MEM_OBJ_LOCALS: + case SEG_TYPE_LOCALS: DebugPrintf("V locals %03d", (*(LocalVariables *)mobj).script_id); break; - case MEM_OBJ_STACK: + case SEG_TYPE_STACK: DebugPrintf("D data stack (%d)", (*(DataStack *)mobj).nr); break; - case MEM_OBJ_SYS_STRINGS: + case SEG_TYPE_SYS_STRINGS: DebugPrintf("Y system string table"); break; - case MEM_OBJ_LISTS: + case SEG_TYPE_LISTS: DebugPrintf("L lists (%d)", (*(ListTable *)mobj).entries_used); break; - case MEM_OBJ_NODES: + case SEG_TYPE_NODES: DebugPrintf("N nodes (%d)", (*(NodeTable *)mobj).entries_used); break; - case MEM_OBJ_HUNK: + case SEG_TYPE_HUNK: DebugPrintf("H hunk (%d)", (*(HunkTable *)mobj).entries_used); break; - case MEM_OBJ_DYNMEM: + case SEG_TYPE_DYNMEM: DebugPrintf("M dynmem: %d bytes", (*(DynMem *)mobj)._size); break; - case MEM_OBJ_STRING_FRAG: + case SEG_TYPE_STRING_FRAG: DebugPrintf("F string fragments"); break; @@ -1378,11 +1378,11 @@ bool Console::segmentInfo(int nr) { if ((nr < 0) || ((uint)nr >= _vm->_gamestate->segMan->_heap.size()) || !_vm->_gamestate->segMan->_heap[nr]) return false; - MemObject *mobj = _vm->_gamestate->segMan->_heap[nr]; + SegmentObj *mobj = _vm->_gamestate->segMan->_heap[nr]; switch (mobj->getType()) { - case MEM_OBJ_SCRIPT: { + case SEG_TYPE_SCRIPT: { Script *scr = (Script *)mobj; DebugPrintf("script.%03d locked by %d, bufsize=%d (%x)\n", scr->_nr, scr->getLockers(), (uint)scr->_bufSize, (uint)scr->_bufSize); if (scr->_exportTable) @@ -1410,21 +1410,21 @@ bool Console::segmentInfo(int nr) { } break; - case MEM_OBJ_LOCALS: { + case SEG_TYPE_LOCALS: { LocalVariables *locals = (LocalVariables *)mobj; DebugPrintf("locals for script.%03d\n", locals->script_id); DebugPrintf(" %d (0x%x) locals\n", locals->_locals.size(), locals->_locals.size()); } break; - case MEM_OBJ_STACK: { + case SEG_TYPE_STACK: { DataStack *stack = (DataStack *)mobj; DebugPrintf("stack\n"); DebugPrintf(" %d (0x%x) entries\n", stack->nr, stack->nr); } break; - case MEM_OBJ_SYS_STRINGS: { + case SEG_TYPE_SYS_STRINGS: { DebugPrintf("system string table - viewing currently disabled\n"); #if 0 SystemStrings *strings = &(mobj->data.sys_strings); @@ -1436,7 +1436,7 @@ bool Console::segmentInfo(int nr) { } break; - case MEM_OBJ_CLONES: { + case SEG_TYPE_CLONES: { CloneTable *ct = (CloneTable *)mobj; DebugPrintf("clones\n"); @@ -1457,7 +1457,7 @@ bool Console::segmentInfo(int nr) { } break; - case MEM_OBJ_LISTS: { + case SEG_TYPE_LISTS: { ListTable *lt = (ListTable *)mobj; DebugPrintf("lists\n"); @@ -1469,12 +1469,12 @@ bool Console::segmentInfo(int nr) { } break; - case MEM_OBJ_NODES: { + case SEG_TYPE_NODES: { DebugPrintf("nodes (total %d)\n", (*(NodeTable *)mobj).entries_used); break; } - case MEM_OBJ_HUNK: { + case SEG_TYPE_HUNK: { HunkTable *ht = (HunkTable *)mobj; DebugPrintf("hunk (total %d)\n", ht->entries_used); @@ -1486,7 +1486,7 @@ bool Console::segmentInfo(int nr) { } break; - case MEM_OBJ_DYNMEM: { + case SEG_TYPE_DYNMEM: { DebugPrintf("dynmem (%s): %d bytes\n", (*(DynMem *)mobj)._description.c_str(), (*(DynMem *)mobj)._size); @@ -1494,7 +1494,7 @@ bool Console::segmentInfo(int nr) { } break; - case MEM_OBJ_STRING_FRAG: { + case SEG_TYPE_STRING_FRAG: { DebugPrintf("string frags\n"); break; } @@ -1642,7 +1642,7 @@ bool Console::cmdGCShowReachable(int argc, const char **argv) { return true; } - MemObject *mobj = _vm->_gamestate->segMan->getMemObject(addr.segment); + SegmentObj *mobj = _vm->_gamestate->segMan->getSegmentObj(addr.segment); if (!mobj) { DebugPrintf("Unknown segment : %x\n", addr.segment); return 1; @@ -1671,7 +1671,7 @@ bool Console::cmdGCShowFreeable(int argc, const char **argv) { return true; } - MemObject *mobj = _vm->_gamestate->segMan->getMemObject(addr.segment); + SegmentObj *mobj = _vm->_gamestate->segMan->getSegmentObj(addr.segment); if (!mobj) { DebugPrintf("Unknown segment : %x\n", addr.segment); return true; @@ -1701,7 +1701,7 @@ bool Console::cmdGCNormalize(int argc, const char **argv) { return true; } - MemObject *mobj = _vm->_gamestate->segMan->getMemObject(addr.segment); + SegmentObj *mobj = _vm->_gamestate->segMan->getSegmentObj(addr.segment); if (!mobj) { DebugPrintf("Unknown segment : %x\n", addr.segment); return true; @@ -2881,14 +2881,14 @@ 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->segMan->_heap.size(); i++) { - MemObject *mobj = s->segMan->_heap[i]; + SegmentObj *mobj = s->segMan->_heap[i]; int idx = 0; int max_index = 0; if (mobj) { - if (mobj->getType() == MEM_OBJ_SCRIPT) + if (mobj->getType() == SEG_TYPE_SCRIPT) max_index = (*(Script *)mobj)._objects.size(); - else if (mobj->getType() == MEM_OBJ_CLONES) + else if (mobj->getType() == SEG_TYPE_CLONES) max_index = (*(CloneTable *)mobj)._table.size(); } @@ -2899,10 +2899,10 @@ int parse_reg_t(EngineState *s, const char *str, reg_t *dest) { // Returns 0 on objpos.offset = 0; objpos.segment = i; - if (mobj->getType() == MEM_OBJ_SCRIPT) { + if (mobj->getType() == SEG_TYPE_SCRIPT) { obj = &(*(Script *)mobj)._objects[idx]; objpos.offset = obj->pos.offset; - } else if (mobj->getType() == MEM_OBJ_CLONES) { + } else if (mobj->getType() == SEG_TYPE_CLONES) { obj = &((*(CloneTable *)mobj)._table[idx]); objpos.offset = idx; valid = ((CloneTable *)mobj)->isValidEntry(idx); @@ -2983,7 +2983,7 @@ void Console::printList(List *l) { while (!pos.isNull()) { Node *node; - NodeTable *nt = (NodeTable *)GET_SEGMENT(*_vm->_gamestate->segMan, pos.segment, MEM_OBJ_NODES); + NodeTable *nt = (NodeTable *)GET_SEGMENT(*_vm->_gamestate->segMan, pos.segment, SEG_TYPE_NODES); if (!nt || !nt->isValidEntry(pos.offset)) { DebugPrintf(" WARNING: %04x:%04x: Doesn't contain list node!\n", @@ -3010,7 +3010,7 @@ void Console::printList(List *l) { } int Console::printNode(reg_t addr) { - MemObject *mobj = GET_SEGMENT(*_vm->_gamestate->segMan, addr.segment, MEM_OBJ_LISTS); + SegmentObj *mobj = GET_SEGMENT(*_vm->_gamestate->segMan, addr.segment, SEG_TYPE_LISTS); if (mobj) { ListTable *lt = (ListTable *)mobj; @@ -3027,7 +3027,7 @@ int Console::printNode(reg_t addr) { } else { NodeTable *nt; Node *node; - mobj = GET_SEGMENT(*_vm->_gamestate->segMan, addr.segment, MEM_OBJ_NODES); + mobj = GET_SEGMENT(*_vm->_gamestate->segMan, addr.segment, SEG_TYPE_NODES); if (!mobj) { DebugPrintf("Segment #%04x is not a list or node segment\n", addr.segment); @@ -3089,7 +3089,7 @@ int Console::printObject(reg_t pos) { reg_t fptr = VM_OBJECT_READ_FUNCTION(obj, i); DebugPrintf(" [%03x] %s = %04x:%04x\n", VM_OBJECT_GET_FUNCSELECTOR(obj, i), selector_name(s, VM_OBJECT_GET_FUNCSELECTOR(obj, i)), PRINT_REG(fptr)); } - if (s->segMan->_heap[pos.segment]->getType() == MEM_OBJ_SCRIPT) + if (s->segMan->_heap[pos.segment]->getType() == SEG_TYPE_SCRIPT) DebugPrintf("\nOwner script:\t%d\n", s->segMan->getScript(pos.segment)->_nr); return 0; diff --git a/engines/sci/engine/gc.cpp b/engines/sci/engine/gc.cpp index d6f9bab2af..5e5db1f8a4 100644 --- a/engines/sci/engine/gc.cpp +++ b/engines/sci/engine/gc.cpp @@ -53,7 +53,7 @@ static reg_t_hash_map *normalise_hashmap_ptrs(SegManager *segMan, reg_t_hash_map for (reg_t_hash_map::iterator i = nonnormal_map.begin(); i != nonnormal_map.end(); ++i) { reg_t reg = i->_key; - MemObject *mobj = (reg.segment < segMan->_heap.size()) ? segMan->_heap[reg.segment] : NULL; + SegmentObj *mobj = (reg.segment < segMan->_heap.size()) ? segMan->_heap[reg.segment] : NULL; if (mobj) { reg = mobj->findCanonicAddress(segMan, reg); @@ -111,7 +111,7 @@ reg_t_hash_map *find_all_used_references(EngineState *s) { // Init: Explicitly loaded scripts for (i = 1; i < segMan->_heap.size(); i++) if (segMan->_heap[i] - && segMan->_heap[i]->getType() == MEM_OBJ_SCRIPT) { + && segMan->_heap[i]->getType() == SEG_TYPE_SCRIPT) { Script *script = (Script *)segMan->_heap[i]; if (script->getLockers()) { // Explicitly loaded? @@ -146,10 +146,10 @@ reg_t_hash_map *find_all_used_references(EngineState *s) { struct deallocator_t { SegManager *segMan; - MemObject *mobj; + SegmentObj *mobj; #ifdef DEBUG_GC - char *segnames[MEM_OBJ_MAX + 1]; - int segcount[MEM_OBJ_MAX + 1]; + char *segnames[SEG_TYPE_MAX + 1]; + int segcount[SEG_TYPE_MAX + 1]; #endif reg_t_hash_map *use_map; }; @@ -176,7 +176,7 @@ void run_gc(EngineState *s) { #ifdef DEBUG_GC debugC(2, kDebugLevelGC, "[GC] Running...\n"); - memset(&(deallocator.segcount), 0, sizeof(int) * (MEM_OBJ_MAX + 1)); + memset(&(deallocator.segcount), 0, sizeof(int) * (SEG_TYPE_MAX + 1)); #endif deallocator.segMan = segMan; @@ -198,7 +198,7 @@ void run_gc(EngineState *s) { { int i; debugC(2, kDebugLevelGC, "[GC] Summary:\n"); - for (i = 0; i <= MEM_OBJ_MAX; i++) + for (i = 0; i <= SEG_TYPE_MAX; i++) if (deallocator.segcount[i]) debugC(2, kDebugLevelGC, "\t%d\t* %s\n", deallocator.segcount[i], deallocator.segnames[i]); } diff --git a/engines/sci/engine/kernel.cpp b/engines/sci/engine/kernel.cpp index 3cdeec1866..850827aa28 100644 --- a/engines/sci/engine/kernel.cpp +++ b/engines/sci/engine/kernel.cpp @@ -467,7 +467,7 @@ reg_t kalloc(SegManager *segMan, const char *type, int space) { // Returns a pointer to the memory indicated by the specified handle byte *kmem(SegManager *segMan, reg_t handle) { - HunkTable *ht = (HunkTable *)GET_SEGMENT(*segMan, handle.segment, MEM_OBJ_HUNK); + HunkTable *ht = (HunkTable *)GET_SEGMENT(*segMan, handle.segment, SEG_TYPE_HUNK); if (!ht || !ht->isValidEntry(handle.offset)) { warning("Error: kmem() with invalid handle"); @@ -621,7 +621,7 @@ void Kernel::mapFunctions() { } int determine_reg_type(SegManager *segMan, reg_t reg, bool allow_invalid) { - MemObject *mobj; + SegmentObj *mobj; int type = 0; if (!reg.segment) { @@ -632,14 +632,14 @@ int determine_reg_type(SegManager *segMan, reg_t reg, bool allow_invalid) { return type; } - mobj = segMan->getMemObject(reg.segment); + mobj = segMan->getSegmentObj(reg.segment); if (!mobj) return 0; // Invalid SciVersion version = segMan->sciVersion(); // for the offset defines switch (mobj->getType()) { - case MEM_OBJ_SCRIPT: + case SEG_TYPE_SCRIPT: if (reg.offset <= (*(Script *)mobj)._bufSize && reg.offset >= -SCRIPT_OBJECT_MAGIC_OFFSET && RAW_IS_OBJECT((*(Script *)mobj)._buf + reg.offset)) { Object *obj = ((Script *)mobj)->getObject(reg.offset); @@ -650,22 +650,22 @@ int determine_reg_type(SegManager *segMan, reg_t reg, bool allow_invalid) { } else return KSIG_REF; - case MEM_OBJ_CLONES: + case SEG_TYPE_CLONES: type = KSIG_OBJECT; break; - case MEM_OBJ_LOCALS: - case MEM_OBJ_STACK: - case MEM_OBJ_SYS_STRINGS: - case MEM_OBJ_DYNMEM: + case SEG_TYPE_LOCALS: + case SEG_TYPE_STACK: + case SEG_TYPE_SYS_STRINGS: + case SEG_TYPE_DYNMEM: type = KSIG_REF; break; - case MEM_OBJ_LISTS: + case SEG_TYPE_LISTS: type = KSIG_LIST; break; - case MEM_OBJ_NODES: + case SEG_TYPE_NODES: type = KSIG_NODE; break; diff --git a/engines/sci/engine/klists.cpp b/engines/sci/engine/klists.cpp index 556bb32712..91842ffad2 100644 --- a/engines/sci/engine/klists.cpp +++ b/engines/sci/engine/klists.cpp @@ -32,7 +32,7 @@ Node *lookup_node(EngineState *s, reg_t addr) { if (!addr.offset && !addr.segment) return NULL; // Non-error null - MemObject *mobj = GET_SEGMENT(*s->segMan, addr.segment, MEM_OBJ_NODES); + SegmentObj *mobj = GET_SEGMENT(*s->segMan, addr.segment, SEG_TYPE_NODES); if (!mobj) { // FIXME: This occurs right at the beginning of SQ4, when walking north from the first screen. It doesn't // seem to have any apparent ill-effects, though, so it's been changed to non-fatal, for now @@ -52,7 +52,7 @@ Node *lookup_node(EngineState *s, reg_t addr) { } List *lookup_list(EngineState *s, reg_t addr) { - MemObject *mobj = GET_SEGMENT(*s->segMan, addr.segment, MEM_OBJ_LISTS); + SegmentObj *mobj = GET_SEGMENT(*s->segMan, addr.segment, SEG_TYPE_LISTS); if (!mobj) { error("Attempt to use non-list %04x:%04x as list", PRINT_REG(addr)); diff --git a/engines/sci/engine/kmisc.cpp b/engines/sci/engine/kmisc.cpp index 7f16e7196d..5bb4737fb2 100644 --- a/engines/sci/engine/kmisc.cpp +++ b/engines/sci/engine/kmisc.cpp @@ -204,7 +204,7 @@ reg_t kMemory(EngineState *s, int, int argc, reg_t *argv) { warning("Attempt to peek invalid memory at %04x:%04x", PRINT_REG(argv[1])); return s->r_acc; } - if (s->segMan->getMemObjectType(argv[1].segment) == MEM_OBJ_LOCALS) + if (s->segMan->getSegmentType(argv[1].segment) == SEG_TYPE_LOCALS) return *((reg_t *) ref); else return make_reg(0, (int16)READ_LE_UINT16(ref)); @@ -218,7 +218,7 @@ reg_t kMemory(EngineState *s, int, int argc, reg_t *argv) { return s->r_acc; } - if (s->segMan->getMemObjectType(argv[1].segment) == MEM_OBJ_LOCALS) + if (s->segMan->getSegmentType(argv[1].segment) == SEG_TYPE_LOCALS) *((reg_t *) ref) = argv[2]; else { if (argv[2].segment) { diff --git a/engines/sci/engine/kstring.cpp b/engines/sci/engine/kstring.cpp index 49976ebae8..cbe5dfca7a 100644 --- a/engines/sci/engine/kstring.cpp +++ b/engines/sci/engine/kstring.cpp @@ -308,7 +308,7 @@ reg_t kStrCpy(EngineState *s, int, int argc, reg_t *argv) { if (length >= 0) strncpy(dest, src, length); else { - if (s->segMan->_heap[argv[0].segment]->getType() == MEM_OBJ_DYNMEM) { + if (s->segMan->_heap[argv[0].segment]->getType() == SEG_TYPE_DYNMEM) { reg_t *srcp = (reg_t *) src; int i; diff --git a/engines/sci/engine/memobj.cpp b/engines/sci/engine/memobj.cpp index c8be76576b..e59e41f24a 100644 --- a/engines/sci/engine/memobj.cpp +++ b/engines/sci/engine/memobj.cpp @@ -38,41 +38,41 @@ namespace Sci { //#define GC_DEBUG_VERBOSE // Debug garbage verbosely -MemObject *MemObject::createMemObject(MemObjectType type) { - MemObject *mem = 0; +SegmentObj *SegmentObj::createSegmentObj(SegmentType type) { + SegmentObj *mem = 0; switch (type) { - case MEM_OBJ_SCRIPT: + case SEG_TYPE_SCRIPT: mem = new Script(); break; - case MEM_OBJ_CLONES: + case SEG_TYPE_CLONES: mem = new CloneTable(); break; - case MEM_OBJ_LOCALS: + case SEG_TYPE_LOCALS: mem = new LocalVariables(); break; - case MEM_OBJ_SYS_STRINGS: + case SEG_TYPE_SYS_STRINGS: mem = new SystemStrings(); break; - case MEM_OBJ_STACK: + case SEG_TYPE_STACK: mem = new DataStack(); break; - case MEM_OBJ_HUNK: + case SEG_TYPE_HUNK: mem = new HunkTable(); break; - case MEM_OBJ_STRING_FRAG: + case SEG_TYPE_STRING_FRAG: mem = new StringFrag(); break; - case MEM_OBJ_LISTS: + case SEG_TYPE_LISTS: mem = new ListTable(); break; - case MEM_OBJ_NODES: + case SEG_TYPE_NODES: mem = new NodeTable(); break; - case MEM_OBJ_DYNMEM: + case SEG_TYPE_DYNMEM: mem = new DynMem(); break; default: - error("Unknown MemObject type %d", type); + error("Unknown SegmentObj type %d", type); break; } @@ -229,7 +229,7 @@ int16 Script::getHeap(uint16 offset) const { // return (_buf[offset] | (_buf[offset+1]) << 8); } -byte *MemObject::dereference(reg_t pointer, int *size) { +byte *SegmentObj::dereference(reg_t pointer, int *size) { error("Error: Trying to dereference pointer %04x:%04x to inappropriate segment", PRINT_REG(pointer)); return NULL; diff --git a/engines/sci/engine/memobj.h b/engines/sci/engine/memobj.h index 0294fb01c9..7889f529f8 100644 --- a/engines/sci/engine/memobj.h +++ b/engines/sci/engine/memobj.h @@ -34,34 +34,34 @@ namespace Sci { -enum MemObjectType { - MEM_OBJ_INVALID = 0, - MEM_OBJ_SCRIPT = 1, - MEM_OBJ_CLONES = 2, - MEM_OBJ_LOCALS = 3, - MEM_OBJ_STACK = 4, - MEM_OBJ_SYS_STRINGS = 5, - MEM_OBJ_LISTS = 6, - MEM_OBJ_NODES = 7, - MEM_OBJ_HUNK = 8, - MEM_OBJ_DYNMEM = 9, - MEM_OBJ_STRING_FRAG = 10, - - MEM_OBJ_MAX // For sanity checking +enum SegmentType { + SEG_TYPE_INVALID = 0, + SEG_TYPE_SCRIPT = 1, + SEG_TYPE_CLONES = 2, + SEG_TYPE_LOCALS = 3, + SEG_TYPE_STACK = 4, + SEG_TYPE_SYS_STRINGS = 5, + SEG_TYPE_LISTS = 6, + SEG_TYPE_NODES = 7, + SEG_TYPE_HUNK = 8, + SEG_TYPE_DYNMEM = 9, + SEG_TYPE_STRING_FRAG = 10, + + SEG_TYPE_MAX // For sanity checking }; -struct MemObject : public Common::Serializable { - MemObjectType _type; +struct SegmentObj : public Common::Serializable { + SegmentType _type; typedef void (*NoteCallback)(void *param, reg_t addr); // FIXME: Bad choice of name public: - static MemObject *createMemObject(MemObjectType type); + static SegmentObj *createSegmentObj(SegmentType type); public: - virtual ~MemObject() {} + virtual ~SegmentObj() {} - inline MemObjectType getType() const { return _type; } + inline SegmentType getType() const { return _type; } /** * Check whether the given offset into this memory object is valid, @@ -112,7 +112,7 @@ public: // TODO: Implement the following class -struct StringFrag : public MemObject { +struct StringFrag : public SegmentObj { virtual bool isValidOffset(uint16 offset) const { return false; } virtual void saveLoadWithSerializer(Common::Serializer &ser); @@ -135,7 +135,7 @@ struct SystemString { reg_t *value; }; -struct SystemStrings : public MemObject { +struct SystemStrings : public SegmentObj { SystemString strings[SYS_STRINGS_MAX]; public: @@ -178,7 +178,7 @@ struct CallsStruct { int type; /**< Same as ExecStack.type */ }; -struct LocalVariables : public MemObject { +struct LocalVariables : public SegmentObj { int script_id; /**< Script ID this local variable block belongs to */ Common::Array<reg_t> _locals; @@ -237,7 +237,7 @@ struct CodeBlock { -class Script : public MemObject { +class Script : public SegmentObj { public: int _nr; /**< Script number */ byte *_buf; /**< Static data buffer, or NULL if not used */ @@ -427,7 +427,7 @@ private: }; /** Data stack */ -struct DataStack : MemObject { +struct DataStack : SegmentObj { int nr; /**< Number of stack entries */ reg_t *entries; @@ -473,7 +473,7 @@ struct Hunk { }; template<typename T> -struct Table : public MemObject { +struct Table : public SegmentObj { typedef T value_type; struct Entry : public T { int next_free; /* Only used for free entries */ @@ -578,7 +578,7 @@ struct HunkTable : public Table<Hunk> { // Free-style memory -struct DynMem : public MemObject { +struct DynMem : public SegmentObj { int _size; Common::String _description; byte *_buf; diff --git a/engines/sci/engine/savegame.cpp b/engines/sci/engine/savegame.cpp index 3b222f26d3..11599797e2 100644 --- a/engines/sci/engine/savegame.cpp +++ b/engines/sci/engine/savegame.cpp @@ -217,21 +217,21 @@ void SegManager::saveLoadWithSerializer(Common::Serializer &s) { s.syncAsUint32LE(sync_heap_size); _heap.resize(sync_heap_size); for (uint i = 0; i < sync_heap_size; ++i) { - MemObject *&mobj = _heap[i]; + SegmentObj *&mobj = _heap[i]; // Sync the memobj type - MemObjectType type = (s.isSaving() && mobj) ? mobj->getType() : MEM_OBJ_INVALID; + SegmentType type = (s.isSaving() && mobj) ? mobj->getType() : SEG_TYPE_INVALID; s.syncAsUint32LE(type); // If we were saving and mobj == 0, or if we are loading and this is an // entry marked as empty -> skip to next - if (type == MEM_OBJ_INVALID) { + if (type == SEG_TYPE_INVALID) { mobj = 0; continue; } if (s.isLoading()) { - mobj = MemObject::createMemObject(type); + mobj = SegmentObj::createSegmentObj(type); } assert(mobj); @@ -241,7 +241,7 @@ void SegManager::saveLoadWithSerializer(Common::Serializer &s) { mobj->saveLoadWithSerializer(s); // If we are loading a script, hook it up in the script->segment map. - if (s.isLoading() && type == MEM_OBJ_SCRIPT) { + if (s.isLoading() && type == SEG_TYPE_SCRIPT) { _scriptSegMap[((Script *)mobj)->_nr] = i; } } @@ -525,7 +525,7 @@ static byte *find_unique_script_block(EngineState *s, byte *buf, int type) { // FIXME: This should probably be turned into an EngineState method static void reconstruct_stack(EngineState *retval) { - SegmentId stack_seg = retval->segMan->findSegmentByType(MEM_OBJ_STACK); + SegmentId stack_seg = retval->segMan->findSegmentByType(SEG_TYPE_STACK); DataStack *stack = (DataStack *)(retval->segMan->_heap[stack_seg]); retval->stack_segment = stack_seg; @@ -553,14 +553,14 @@ static void load_script(EngineState *s, Script *scr) { // FIXME: The following should likely become a SegManager method static void reconstruct_scripts(EngineState *s, SegManager *self) { uint i, j; - MemObject *mobj; + SegmentObj *mobj; SciVersion version = self->sciVersion(); // for the selector defines for (i = 0; i < self->_heap.size(); i++) { if (self->_heap[i]) { mobj = self->_heap[i]; switch (mobj->getType()) { - case MEM_OBJ_SCRIPT: { + case SEG_TYPE_SCRIPT: { Script *scr = (Script *)mobj; // FIXME: Unify this code with script_instantiate_* @@ -597,7 +597,7 @@ static void reconstruct_scripts(EngineState *s, SegManager *self) { if (self->_heap[i]) { mobj = self->_heap[i]; switch (mobj->getType()) { - case MEM_OBJ_SCRIPT: { + case SEG_TYPE_SCRIPT: { Script *scr = (Script *)mobj; for (j = 0; j < scr->_objects.size(); j++) { @@ -738,8 +738,8 @@ EngineState *gamestate_restore(EngineState *s, Common::SeekableReadStream *fh) { retval->game_obj = s->game_obj; retval->script_000 = retval->segMan->getScript(retval->segMan->getScriptSegment(0, SCRIPT_GET_DONT_LOAD)); retval->gc_countdown = GC_INTERVAL - 1; - retval->sys_strings_segment = retval->segMan->findSegmentByType(MEM_OBJ_SYS_STRINGS); - retval->sys_strings = (SystemStrings *)GET_SEGMENT(*retval->segMan, retval->sys_strings_segment, MEM_OBJ_SYS_STRINGS); + retval->sys_strings_segment = retval->segMan->findSegmentByType(SEG_TYPE_SYS_STRINGS); + retval->sys_strings = (SystemStrings *)GET_SEGMENT(*retval->segMan, retval->sys_strings_segment, SEG_TYPE_SYS_STRINGS); // Restore system strings SystemString *str; diff --git a/engines/sci/engine/scriptdebug.cpp b/engines/sci/engine/scriptdebug.cpp index 4f4f23f1fc..38879a48ae 100644 --- a/engines/sci/engine/scriptdebug.cpp +++ b/engines/sci/engine/scriptdebug.cpp @@ -99,7 +99,7 @@ int propertyOffsetToId(SegManager *segMan, int prop_ofs, reg_t objp) { // Disassembles one command from the heap, returns address of next command or 0 if a ret was encountered. reg_t disassemble(EngineState *s, reg_t pos, int print_bw_tag, int print_bytecode) { - MemObject *mobj = GET_SEGMENT(*s->segMan, pos.segment, MEM_OBJ_SCRIPT); + SegmentObj *mobj = GET_SEGMENT(*s->segMan, pos.segment, SEG_TYPE_SCRIPT); Script *script_entity = NULL; byte *scr; int scr_size; @@ -360,7 +360,7 @@ void script_debug(EngineState *s, bool bp) { #endif if (scriptState.seeking && !bp) { // Are we looking for something special? - MemObject *mobj = GET_SEGMENT(*s->segMan, scriptState.xs->addr.pc.segment, MEM_OBJ_SCRIPT); + SegmentObj *mobj = GET_SEGMENT(*s->segMan, scriptState.xs->addr.pc.segment, SEG_TYPE_SCRIPT); if (mobj) { Script *scr = (Script *)mobj; diff --git a/engines/sci/engine/seg_manager.cpp b/engines/sci/engine/seg_manager.cpp index ed95e22e78..402a690e62 100644 --- a/engines/sci/engine/seg_manager.cpp +++ b/engines/sci/engine/seg_manager.cpp @@ -94,12 +94,12 @@ SegmentId SegManager::findFreeSegment() const { return seg; } -MemObject *SegManager::allocSegment(MemObjectType type, SegmentId *segid) { +SegmentObj *SegManager::allocSegment(SegmentType type, SegmentId *segid) { // Find a free segment *segid = findFreeSegment(); // Now allocate an object of the appropriate type... - MemObject *mem = MemObject::createMemObject(type); + SegmentObj *mem = SegmentObj::createSegmentObj(type); if (!mem) error("SegManager: invalid mobj"); @@ -121,8 +121,8 @@ Script *SegManager::allocateScript(int script_nr, SegmentId *seg_id) { return (Script *)_heap[*seg_id]; } - // allocate the MemObject - MemObject *mem = allocSegment(MEM_OBJ_SCRIPT, seg_id); + // allocate the SegmentObj + SegmentObj *mem = allocSegment(SEG_TYPE_SCRIPT, seg_id); // Add the script to the "script id -> segment id" hashmap _scriptSegMap[script_nr] = *seg_id; @@ -167,12 +167,12 @@ void Script::setScriptSize(int script_nr, ResourceManager *resMan) { } int SegManager::deallocate(SegmentId seg, bool recursive) { - MemObject *mobj; + SegmentObj *mobj; VERIFY(check(seg), "invalid seg id"); mobj = _heap[seg]; - if (mobj->getType() == MEM_OBJ_SCRIPT) { + if (mobj->getType() == SEG_TYPE_SCRIPT) { Script *scr = (Script *)mobj; _scriptSegMap.erase(scr->_nr); if (recursive && scr->_localsSegment) @@ -207,14 +207,14 @@ Script *SegManager::getScript(const SegmentId seg) { if (!_heap[seg]) { error("SegManager::getScript(): seg id %x is not in memory", seg); } - if (_heap[seg]->getType() != MEM_OBJ_SCRIPT) { - error("SegManager::getScript(): seg id %x refers to type %d != MEM_OBJ_SCRIPT", seg, _heap[seg]->getType()); + if (_heap[seg]->getType() != SEG_TYPE_SCRIPT) { + error("SegManager::getScript(): seg id %x refers to type %d != SEG_TYPE_SCRIPT", seg, _heap[seg]->getType()); } return (Script *)_heap[seg]; } Script *SegManager::getScriptIfLoaded(const SegmentId seg) { - if (seg < 1 || (uint)seg >= _heap.size() || !_heap[seg] || _heap[seg]->getType() != MEM_OBJ_SCRIPT) + if (seg < 1 || (uint)seg >= _heap.size() || !_heap[seg] || _heap[seg]->getType() != SEG_TYPE_SCRIPT) return 0; return (Script *)_heap[seg]; } @@ -226,29 +226,29 @@ SegmentId SegManager::findSegmentByType(int type) { return -1; } -MemObject *SegManager::getMemObject(SegmentId seg) { +SegmentObj *SegManager::getSegmentObj(SegmentId seg) { if (seg < 1 || (uint)seg >= _heap.size() || !_heap[seg]) return 0; return _heap[seg]; } -MemObjectType SegManager::getMemObjectType(SegmentId seg) { +SegmentType SegManager::getSegmentType(SegmentId seg) { if (seg < 1 || (uint)seg >= _heap.size() || !_heap[seg]) - return MEM_OBJ_INVALID; + return SEG_TYPE_INVALID; return _heap[seg]->getType(); } Object *SegManager::getObject(reg_t pos) { - MemObject *mobj = getMemObject(pos.segment); + SegmentObj *mobj = getSegmentObj(pos.segment); SciVersion version = _resMan->sciVersion(); Object *obj = NULL; if (mobj != NULL) { - if (mobj->getType() == MEM_OBJ_CLONES) { + if (mobj->getType() == SEG_TYPE_CLONES) { CloneTable *ct = (CloneTable *)mobj; if (ct->isValidEntry(pos.offset)) obj = &(ct->_table[pos.offset]); - } else if (mobj->getType() == MEM_OBJ_SCRIPT) { + } else if (mobj->getType() == SEG_TYPE_SCRIPT) { Script *scr = (Script *)mobj; if (pos.offset <= scr->_bufSize && pos.offset >= -SCRIPT_OBJECT_MAGIC_OFFSET && RAW_IS_OBJECT(scr->_buf + pos.offset)) { @@ -573,10 +573,10 @@ LocalVariables *SegManager::allocLocalsSegment(Script *scr, int count) { if (scr->_localsSegment) { locals = (LocalVariables *)_heap[scr->_localsSegment]; VERIFY(locals != NULL, "Re-used locals segment was NULL'd out"); - VERIFY(locals->getType() == MEM_OBJ_LOCALS, "Re-used locals segment did not consist of local variables"); + VERIFY(locals->getType() == SEG_TYPE_LOCALS, "Re-used locals segment did not consist of local variables"); VERIFY(locals->script_id == scr->_nr, "Re-used locals segment belonged to other script"); } else - locals = (LocalVariables *)allocSegment(MEM_OBJ_LOCALS, &scr->_localsSegment); + locals = (LocalVariables *)allocSegment(SEG_TYPE_LOCALS, &scr->_localsSegment); scr->_localsBlock = locals; locals->script_id = scr->_nr; @@ -709,7 +709,7 @@ static char *SegManager::dynprintf(char *msg, ...) { */ DataStack *SegManager::allocateStack(int size, SegmentId *segid) { - MemObject *mobj = allocSegment(MEM_OBJ_STACK, segid); + SegmentObj *mobj = allocSegment(SEG_TYPE_STACK, segid); DataStack *retval = (DataStack *)mobj; retval->entries = (reg_t *)calloc(size, sizeof(reg_t)); @@ -719,13 +719,13 @@ DataStack *SegManager::allocateStack(int size, SegmentId *segid) { } SystemStrings *SegManager::allocateSysStrings(SegmentId *segid) { - return (SystemStrings *)allocSegment(MEM_OBJ_SYS_STRINGS, segid); + return (SystemStrings *)allocSegment(SEG_TYPE_SYS_STRINGS, segid); } SegmentId SegManager::allocateStringFrags() { SegmentId segid; - allocSegment(MEM_OBJ_STRING_FRAG, &segid); + allocSegment(SEG_TYPE_STRING_FRAG, &segid); return segid; } @@ -746,7 +746,7 @@ uint16 SegManager::validateExportFunc(int pubfunct, SegmentId seg) { } void SegManager::freeHunkEntry(reg_t addr) { - HunkTable *ht = (HunkTable *)GET_SEGMENT(*this, addr.segment, MEM_OBJ_HUNK); + HunkTable *ht = (HunkTable *)GET_SEGMENT(*this, addr.segment, SEG_TYPE_HUNK); if (!ht) { warning("Attempt to free Hunk from address %04x:%04x: Invalid segment type", PRINT_REG(addr)); @@ -774,7 +774,7 @@ Clone *SegManager::allocateClone(reg_t *addr) { int offset; if (!Clones_seg_id) { - table = (CloneTable *)allocSegment(MEM_OBJ_CLONES, &(Clones_seg_id)); + table = (CloneTable *)allocSegment(SEG_TYPE_CLONES, &(Clones_seg_id)); } else table = (CloneTable *)_heap[Clones_seg_id]; @@ -789,8 +789,8 @@ void SegManager::reconstructClones() { for (uint i = 0; i < _heap.size(); i++) { if (_heap[i]) { - MemObject *mobj = _heap[i]; - if (mobj->getType() == MEM_OBJ_CLONES) { + SegmentObj *mobj = _heap[i]; + if (mobj->getType() == SEG_TYPE_CLONES) { CloneTable *ct = (CloneTable *)mobj; for (uint j = 0; j < ct->_table.size(); j++) { @@ -835,7 +835,7 @@ List *SegManager::allocateList(reg_t *addr) { int offset; if (!Lists_seg_id) - allocSegment(MEM_OBJ_LISTS, &(Lists_seg_id)); + allocSegment(SEG_TYPE_LISTS, &(Lists_seg_id)); table = (ListTable *)_heap[Lists_seg_id]; offset = table->allocEntry(); @@ -849,7 +849,7 @@ Node *SegManager::allocateNode(reg_t *addr) { int offset; if (!Nodes_seg_id) - allocSegment(MEM_OBJ_NODES, &(Nodes_seg_id)); + allocSegment(SEG_TYPE_NODES, &(Nodes_seg_id)); table = (NodeTable *)_heap[Nodes_seg_id]; offset = table->allocEntry(); @@ -863,7 +863,7 @@ Hunk *SegManager::alloc_Hunk(reg_t *addr) { int offset; if (!Hunks_seg_id) - allocSegment(MEM_OBJ_HUNK, &(Hunks_seg_id)); + allocSegment(SEG_TYPE_HUNK, &(Hunks_seg_id)); table = (HunkTable *)_heap[Hunks_seg_id]; offset = table->allocEntry(); @@ -879,7 +879,7 @@ byte *SegManager::dereference(reg_t pointer, int *size) { return NULL; /* Invalid */ } - MemObject *mobj = _heap[pointer.segment]; + SegmentObj *mobj = _heap[pointer.segment]; return mobj->dereference(pointer, size); } @@ -919,7 +919,7 @@ char *SegManager::derefString(reg_t pointer, int entries) { byte *SegManager::allocDynmem(int size, const char *descr, reg_t *addr) { SegmentId seg; - MemObject *mobj = allocSegment(MEM_OBJ_DYNMEM, &seg); + SegmentObj *mobj = allocSegment(SEG_TYPE_DYNMEM, &seg); *addr = make_reg(seg, 0); DynMem &d = *(DynMem *)mobj; @@ -940,10 +940,10 @@ const char *SegManager::getDescription(reg_t addr) { if (addr.segment < 1 || addr.segment >= _heap.size()) return ""; - MemObject *mobj = _heap[addr.segment]; + SegmentObj *mobj = _heap[addr.segment]; switch (mobj->getType()) { - case MEM_OBJ_DYNMEM: + case SEG_TYPE_DYNMEM: return (*(DynMem *)mobj)._description.c_str(); default: return ""; @@ -951,7 +951,7 @@ const char *SegManager::getDescription(reg_t addr) { } int SegManager::freeDynmem(reg_t addr) { - if (addr.segment < 1 || addr.segment >= _heap.size() || !_heap[addr.segment] || _heap[addr.segment]->getType() != MEM_OBJ_DYNMEM) + if (addr.segment < 1 || addr.segment >= _heap.size() || !_heap[addr.segment] || _heap[addr.segment]->getType() != SEG_TYPE_DYNMEM) return 1; // error deallocate(addr.segment, true); diff --git a/engines/sci/engine/seg_manager.h b/engines/sci/engine/seg_manager.h index 277b734f60..4b1f0aaf99 100644 --- a/engines/sci/engine/seg_manager.h +++ b/engines/sci/engine/seg_manager.h @@ -33,7 +33,7 @@ namespace Sci { -#define GET_SEGMENT(mgr, index, rtype) (((mgr).getMemObjectType(index) == (rtype))? (mgr)._heap[index] : NULL) +#define GET_SEGMENT(mgr, index, rtype) (((mgr).getSegmentType(index) == (rtype))? (mgr)._heap[index] : NULL) /** * Parameters for getScriptSegment(). @@ -315,10 +315,10 @@ public: SegmentId findSegmentByType(int type); // TODO: document this - MemObject *getMemObject(SegmentId seg); + SegmentObj *getSegmentObj(SegmentId seg); // TODO: document this - MemObjectType getMemObjectType(SegmentId seg); + SegmentType getSegmentType(SegmentId seg); /** * Retrieves an object from the specified location @@ -353,7 +353,7 @@ public: SciVersion sciVersion() { return _resMan->sciVersion(); } public: // TODO: make private - Common::Array<MemObject *> _heap; + Common::Array<SegmentObj *> _heap; Common::Array<Class> _classtable; /**< Table of all classes */ private: @@ -370,7 +370,7 @@ private: SegmentId Hunks_seg_id; ///< ID of the (a) hunk segment private: - MemObject *allocSegment(MemObjectType type, SegmentId *segid); + SegmentObj *allocSegment(SegmentType type, SegmentId *segid); LocalVariables *allocLocalsSegment(Script *scr, int count); int deallocate(SegmentId seg, bool recursive); int createClassTable(); diff --git a/engines/sci/engine/vm.cpp b/engines/sci/engine/vm.cpp index dc22666188..7d45f2153b 100644 --- a/engines/sci/engine/vm.cpp +++ b/engines/sci/engine/vm.cpp @@ -463,7 +463,7 @@ ExecStack *add_exec_stack_entry(EngineState *s, reg_t pc, StackPtr sp, reg_t obj #endif static reg_t pointer_add(EngineState *s, reg_t base, int offset) { - MemObject *mobj = s->segMan->getMemObject(base.segment); + SegmentObj *mobj = s->segMan->getSegmentObj(base.segment); if (!mobj) { error("[VM] Error: Attempt to add %d to invalid pointer %04x:%04x", offset, PRINT_REG(base)); @@ -472,13 +472,13 @@ static reg_t pointer_add(EngineState *s, reg_t base, int offset) { switch (mobj->getType()) { - case MEM_OBJ_LOCALS: + case SEG_TYPE_LOCALS: base.offset += 2 * offset; return base; - case MEM_OBJ_SCRIPT: - case MEM_OBJ_STACK: - case MEM_OBJ_DYNMEM: + case SEG_TYPE_SCRIPT: + case SEG_TYPE_STACK: + case SEG_TYPE_DYNMEM: base.offset += offset; return base; break; |