aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorFilippos Karapetis2009-09-12 17:42:04 +0000
committerFilippos Karapetis2009-09-12 17:42:04 +0000
commit15cb36a7ee2629e7f09aff02769353f8eded3035 (patch)
treeafc52b500c52ec05b9733a100916ae123dae4572 /engines
parent358b5649ce3988be7ef221b5811d94f10a010be9 (diff)
downloadscummvm-rg350-15cb36a7ee2629e7f09aff02769353f8eded3035.tar.gz
scummvm-rg350-15cb36a7ee2629e7f09aff02769353f8eded3035.tar.bz2
scummvm-rg350-15cb36a7ee2629e7f09aff02769353f8eded3035.zip
Made is_object() a method of the segment manager
svn-id: r44042
Diffstat (limited to 'engines')
-rw-r--r--engines/sci/engine/kernel.h10
-rw-r--r--engines/sci/engine/kgraphics.cpp10
-rw-r--r--engines/sci/engine/kscripts.cpp4
-rw-r--r--engines/sci/engine/ksound.cpp2
-rw-r--r--engines/sci/engine/seg_manager.h7
5 files changed, 13 insertions, 20 deletions
diff --git a/engines/sci/engine/kernel.h b/engines/sci/engine/kernel.h
index 9c0160befd..60840a514c 100644
--- a/engines/sci/engine/kernel.h
+++ b/engines/sci/engine/kernel.h
@@ -224,16 +224,6 @@ int invoke_selector(EngineState *s, reg_t object, int selector_id, SelectorInvoc
*/
char *kernel_lookup_text(EngineState *s, reg_t address, int index);
-
-/******************** Debug functionality ********************/
-/**
- * Checks whether a heap address contains an object
- * @param s The current state
- * @parm obj The address to check
- * @return True if it is an object, false otherwise
- */
-bool is_object(SegManager *segMan, reg_t obj);
-
/******************** Kernel function parameter macros ********************/
/* Returns the parameter value or (alt) if not enough parameters were supplied */
diff --git a/engines/sci/engine/kgraphics.cpp b/engines/sci/engine/kgraphics.cpp
index 3b17823f44..9439be3f04 100644
--- a/engines/sci/engine/kgraphics.cpp
+++ b/engines/sci/engine/kgraphics.cpp
@@ -805,7 +805,7 @@ reg_t kCanBeHere(EngineState *s, int, int argc, reg_t *argv) {
while (widget) {
if (widget->_ID && (widget->signal & _K_VIEW_SIG_FLAG_STOPUPD)
&& ((widget->_ID != obj.segment) || (widget->_subID != obj.offset))
- && is_object(s->segMan, make_reg(widget->_ID, widget->_subID)))
+ && s->segMan->isObject(make_reg(widget->_ID, widget->_subID)))
if (collides_with(s, abs_zone, make_reg(widget->_ID, widget->_subID), 1, GASEOUS_VIEW_MASK_ACTIVE, argc, argv))
return not_register(s, NULL_REG);
@@ -831,7 +831,7 @@ reg_t kCanBeHere(EngineState *s, int, int argc, reg_t *argv) {
reg_t other_obj = node->value;
debugC(2, kDebugLevelBresen, " comparing against %04x:%04x\n", PRINT_REG(other_obj));
- if (!is_object(s->segMan, other_obj)) {
+ if (!s->segMan->isObject(other_obj)) {
warning("CanBeHere() cliplist contains non-object %04x:%04x", PRINT_REG(other_obj));
} else if (other_obj != obj) { // Clipping against yourself is not recommended
@@ -1674,7 +1674,7 @@ static void draw_rect_to_control_map(EngineState *s, Common::Rect abs_zone) {
static void draw_obj_to_control_map(EngineState *s, GfxDynView *view) {
reg_t obj = make_reg(view->_ID, view->_subID);
- if (!is_object(s->segMan, obj))
+ if (!s->segMan->isObject(obj))
warning("View %d does not contain valid object reference %04x:%04x", view->_ID, PRINT_REG(obj));
reg_t* sp = view->signalp.getPointer(s->segMan);
@@ -1780,7 +1780,7 @@ int _k_view_list_dispose_loop(EngineState *s, List *list, GfxDynView *widget, in
reg_t obj = make_reg(widget->_ID, widget->_subID);
reg_t under_bits = NULL_REG;
- if (!is_object(s->segMan, obj)) {
+ if (!s->segMan->isObject(obj)) {
error("Non-object %04x:%04x present in view list during delete time", PRINT_REG(obj));
obj = NULL_REG;
} else {
@@ -1798,7 +1798,7 @@ int _k_view_list_dispose_loop(EngineState *s, List *list, GfxDynView *widget, in
}
}
}
- if (is_object(segMan, obj)) {
+ if (segMan->isObject(obj)) {
if (invoke_selector(INV_SEL(obj, delete_, kContinueOnInvalidSelector), 0))
warning("Object at %04x:%04x requested deletion, but does not have a delete funcselector", PRINT_REG(obj));
if (_k_animate_ran) {
diff --git a/engines/sci/engine/kscripts.cpp b/engines/sci/engine/kscripts.cpp
index d0b75aff96..d0d34caf03 100644
--- a/engines/sci/engine/kscripts.cpp
+++ b/engines/sci/engine/kscripts.cpp
@@ -107,10 +107,6 @@ int invoke_selector(EngineState *s, reg_t object, int selector_id, SelectorInvoc
return 0;
}
-bool is_object(SegManager *segMan, reg_t object) {
- return segMan->getObject(object) != NULL;
-}
-
// Loads arbitrary resources of type 'restype' with resource numbers 'resnrs'
// This implementation ignores all resource numbers except the first one.
reg_t kLoad(EngineState *s, int, int argc, reg_t *argv) {
diff --git a/engines/sci/engine/ksound.cpp b/engines/sci/engine/ksound.cpp
index 4d5517235d..4399de1443 100644
--- a/engines/sci/engine/ksound.cpp
+++ b/engines/sci/engine/ksound.cpp
@@ -165,7 +165,7 @@ void process_sound_events(EngineState *s) { /* Get all sound events, apply their
while ((result = s->_sound.sfx_poll(&handle, &cue))) {
reg_t obj = DEFROBNICATE_HANDLE(handle);
- if (!is_object(s->segMan, obj)) {
+ if (!s->segMan->isObject(obj)) {
warning("Non-object %04x:%04x received sound signal (%d/%d)", PRINT_REG(obj), result, cue);
return;
}
diff --git a/engines/sci/engine/seg_manager.h b/engines/sci/engine/seg_manager.h
index 33f9084ae0..41ff119dcc 100644
--- a/engines/sci/engine/seg_manager.h
+++ b/engines/sci/engine/seg_manager.h
@@ -353,6 +353,13 @@ public:
Object *getObject(reg_t pos);
/**
+ * Checks whether a heap address contains an object
+ * @parm obj The address to check
+ * @return True if it is an object, false otherwise
+ */
+ bool isObject(reg_t obj) { return getObject(obj) != NULL; }
+
+ /**
* Determines the name of an object
* @param[in] pos Location (segment, offset) of the object
* @return A name for that object, or a string describing an error