SCI: Change Script::getObject() to accept a reg_t

This is needed for upcoming changes to the Script class
This commit is contained in:
Filippos Karapetis 2012-06-15 11:44:54 +03:00
parent 425926ed7e
commit 577d7e41c9
4 changed files with 11 additions and 11 deletions

View file

@ -377,7 +377,7 @@ uint16 Kernel::findRegType(reg_t reg) {
if (reg.offset <= (*(Script *)mobj).getBufSize() && if (reg.offset <= (*(Script *)mobj).getBufSize() &&
reg.offset >= -SCRIPT_OBJECT_MAGIC_OFFSET && reg.offset >= -SCRIPT_OBJECT_MAGIC_OFFSET &&
RAW_IS_OBJECT((*(Script *)mobj).getBuf(reg.offset)) ) { RAW_IS_OBJECT((*(Script *)mobj).getBuf(reg.offset)) ) {
result |= ((Script *)mobj)->getObject(reg.offset) ? SIG_TYPE_OBJECT : SIG_TYPE_REFERENCE; result |= ((Script *)mobj)->getObject(reg) ? SIG_TYPE_OBJECT : SIG_TYPE_REFERENCE;
} else } else
result |= SIG_TYPE_REFERENCE; result |= SIG_TYPE_REFERENCE;
break; break;

View file

@ -243,16 +243,16 @@ const byte *Script::getSci3ObjectsPointer() {
return ptr; return ptr;
} }
Object *Script::getObject(uint16 offset) { Object *Script::getObject(reg_t pos) {
if (_objects.contains(offset)) if (_objects.contains(pos.offset))
return &_objects[offset]; return &_objects[pos.offset];
else else
return 0; return 0;
} }
const Object *Script::getObject(uint16 offset) const { const Object *Script::getObject(reg_t pos) const {
if (_objects.contains(offset)) if (_objects.contains(pos.offset))
return &_objects[offset]; return &_objects[pos.offset];
else else
return 0; return 0;
} }
@ -746,7 +746,7 @@ Common::Array<reg_t> Script::listAllDeallocatable(SegmentId segId) const {
Common::Array<reg_t> Script::listAllOutgoingReferences(reg_t addr) const { Common::Array<reg_t> Script::listAllOutgoingReferences(reg_t addr) const {
Common::Array<reg_t> tmp; Common::Array<reg_t> tmp;
if (addr.offset <= _bufSize && addr.offset >= -SCRIPT_OBJECT_MAGIC_OFFSET && RAW_IS_OBJECT(_buf + addr.offset)) { if (addr.offset <= _bufSize && addr.offset >= -SCRIPT_OBJECT_MAGIC_OFFSET && RAW_IS_OBJECT(_buf + addr.offset)) {
const Object *obj = getObject(addr.offset); const Object *obj = getObject(addr);
if (obj) { if (obj) {
// Note all local variables, if we have a local variable environment // Note all local variables, if we have a local variable environment
if (_localsSegment) if (_localsSegment)

View file

@ -119,8 +119,8 @@ public:
virtual void saveLoadWithSerializer(Common::Serializer &ser); virtual void saveLoadWithSerializer(Common::Serializer &ser);
Object *getObject(uint16 offset); Object *getObject(reg_t pos);
const Object *getObject(uint16 offset) const; const Object *getObject(reg_t pos) const;
/** /**
* Initializes an object within the segment manager * Initializes an object within the segment manager

View file

@ -228,7 +228,7 @@ Object *SegManager::getObject(reg_t pos) const {
Script *scr = (Script *)mobj; Script *scr = (Script *)mobj;
if (pos.offset <= scr->getBufSize() && pos.offset >= -SCRIPT_OBJECT_MAGIC_OFFSET if (pos.offset <= scr->getBufSize() && pos.offset >= -SCRIPT_OBJECT_MAGIC_OFFSET
&& RAW_IS_OBJECT(scr->getBuf(pos.offset))) { && RAW_IS_OBJECT(scr->getBuf(pos.offset))) {
obj = scr->getObject(pos.offset); obj = scr->getObject(pos);
} }
} }
} }