SCI: Change Script::getObject() to accept a reg_t
This is needed for upcoming changes to the Script class
This commit is contained in:
parent
425926ed7e
commit
577d7e41c9
4 changed files with 11 additions and 11 deletions
|
@ -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;
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue