From 4eff1002f99c15c213144c2aef1bf49c1bbb65e6 Mon Sep 17 00:00:00 2001 From: Max Horn Date: Sun, 15 Feb 2009 22:01:09 +0000 Subject: SCI: Got rid of a nasty hack where class, delete, new were re#defined because FreeSCI used these C++ keywords for variable names svn-id: r38312 --- engines/sci/engine/game.cpp | 6 +++--- engines/sci/engine/kernel.cpp | 4 ++-- engines/sci/engine/kgraphics.cpp | 2 +- engines/sci/engine/vm.cpp | 24 ++++++++++++------------ engines/sci/include/kernel.h | 2 +- engines/sci/include/old_objects.h | 8 +------- engines/sci/include/resource.h | 5 ----- engines/sci/include/vm.h | 8 +------- engines/sci/scicore/script.cpp | 2 +- engines/sci/scicore/vocab.cpp | 4 ++-- 10 files changed, 24 insertions(+), 41 deletions(-) (limited to 'engines') diff --git a/engines/sci/engine/game.cpp b/engines/sci/engine/game.cpp index fc24727c55..ccf720f927 100644 --- a/engines/sci/engine/game.cpp +++ b/engines/sci/engine/game.cpp @@ -305,13 +305,13 @@ game_init_sound(state_t *s, int sound_flags) /* Maps a class ID to the script the corresponding class is contained in */ /* Returns the script number suggested by vocab.996, or -1 if there's none */ static int -suggested_script(resource_t *res, unsigned int class) +suggested_script(resource_t *res, unsigned int classId) { int offset; - if (!res || class >= res->size >> 2) + if (!res || classId >= res->size >> 2) return -1; - offset = 2 + (class << 2); + offset = 2 + (classId << 2); return getInt16(res->data + offset); } diff --git a/engines/sci/engine/kernel.cpp b/engines/sci/engine/kernel.cpp index 538bdcd60c..1c403f0a40 100644 --- a/engines/sci/engine/kernel.cpp +++ b/engines/sci/engine/kernel.cpp @@ -499,7 +499,7 @@ k_Unknown(state_t *s, int funct_nr, int argc, reg_t *argv) } else switch(kfunct_mappers[funct_nr].type) { case KF_NEW: - return kfunct_mappers[funct_nr].new.fun(s, funct_nr, argc, argv); + return kfunct_mappers[funct_nr].sig_pair.fun(s, funct_nr, argc, argv); case KF_NONE: default: @@ -907,7 +907,7 @@ script_map_kernel(state_t *s) break; case KF_NEW: - s->kfunct_table[functnr] = kfunct_mappers[found].new; + s->kfunct_table[functnr] = kfunct_mappers[found].sig_pair; kernel_compile_signature(&(s->kfunct_table[functnr].signature)); ++mapped; break; diff --git a/engines/sci/engine/kgraphics.cpp b/engines/sci/engine/kgraphics.cpp index e011fdbcf7..0d12e40d6f 100644 --- a/engines/sci/engine/kgraphics.cpp +++ b/engines/sci/engine/kgraphics.cpp @@ -1997,7 +1997,7 @@ _k_view_list_dispose_loop(state_t *s, list_t *list, gfxw_dyn_view_t *widget, } if (is_object(s, obj)) { - if (invoke_selector(INV_SEL(obj, delete, 1), 0)) + if (invoke_selector(INV_SEL(obj, delete_, 1), 0)) SCIkwarn(SCIkWARNING, "Object at "PREG" requested deletion, but does not have" " a delete funcselector\n", PRINT_REG(obj)); if (_k_animate_ran) { diff --git a/engines/sci/engine/vm.cpp b/engines/sci/engine/vm.cpp index c9c4560d67..b19d07a7d1 100644 --- a/engines/sci/engine/vm.cpp +++ b/engines/sci/engine/vm.cpp @@ -230,7 +230,7 @@ script_error(state_t *s, const char *file, int line, const char *reason) reg_t get_class_address(state_t *s, int classnr, int lock, reg_t caller) { - class_t *class = s->classtable + classnr; + class_t *the_class = s->classtable + classnr; if (NULL == s) { sciprintf("vm.c: get_class_address(): NULL passed for \"s\"\n"); @@ -239,26 +239,26 @@ get_class_address(state_t *s, int classnr, int lock, reg_t caller) if (classnr < 0 || s->classtable_size <= classnr - || class->script < 0) { + || the_class->script < 0) { sciprintf("[VM] Attempt to dereference class %x, which doesn't exist (max %x)\n", classnr, s->classtable_size); script_error_flag = script_debug_flag = 1; return NULL_REG; } else { - if (!class->reg.segment) { - script_get_segment(s, class->script, lock); + if (!the_class->reg.segment) { + script_get_segment(s, the_class->script, lock); - if (!class->reg.segment) { + if (!the_class->reg.segment) { sciprintf("[VM] Trying to instantiate class %x by instantiating script 0x%x (%03d) failed;" - " Entering debugger.\n", classnr, class->script); + " Entering debugger.\n", classnr, the_class->script); script_error_flag = script_debug_flag = 1; return NULL_REG; } } else - if (caller.segment != class->reg.segment) - sm_increment_lockers(&s->seg_manager, class->reg.segment, SEG_ID); + if (caller.segment != the_class->reg.segment) + sm_increment_lockers(&s->seg_manager, the_class->reg.segment, SEG_ID); - return class->reg; + return the_class->reg; } } @@ -458,11 +458,11 @@ send_selector(state_t *s, reg_t send_obj, reg_t work_obj, { /* Argument is supplied -> Selector should be set */ if (print_send_action) { - reg_t val = *varp; - reg_t new = argp[1]; + reg_t oldReg = *varp; + reg_t newReg = argp[1]; sciprintf("[write to selector: change "PREG" to "PREG"]\n", - PRINT_REG(val), PRINT_REG(new)); + PRINT_REG(oldReg), PRINT_REG(newReg)); print_send_action = 0; } send_calls[send_calls_nr].address.var = varp; /* register the call */ diff --git a/engines/sci/include/kernel.h b/engines/sci/include/kernel.h index 6c4b15926c..7737973a78 100644 --- a/engines/sci/include/kernel.h +++ b/engines/sci/include/kernel.h @@ -392,7 +392,7 @@ typedef struct { typedef struct { int type; /* KF_* */ const char *name; - kfunct_sig_pair_t new; + kfunct_sig_pair_t sig_pair; } sci_kernel_function_t; extern sci_kernel_function_t kfunct_mappers[]; diff --git a/engines/sci/include/old_objects.h b/engines/sci/include/old_objects.h index 850e489a83..e735a4dbc9 100644 --- a/engines/sci/include/old_objects.h +++ b/engines/sci/include/old_objects.h @@ -4,12 +4,6 @@ #include #include -#ifdef __cplusplus -# define new new_ -# define delete delete_ -# define class class_ -#endif /* __cplusplus */ - typedef FLEXARRAY(script_opcode,int number;) script_method; typedef struct object_ @@ -33,7 +27,7 @@ typedef struct object_ typedef struct { int id; - object* class; + object* classID; byte* heap; int offset; } instance; diff --git a/engines/sci/include/resource.h b/engines/sci/include/resource.h index 88df611e59..24b7c716c7 100644 --- a/engines/sci/include/resource.h +++ b/engines/sci/include/resource.h @@ -212,11 +212,6 @@ putInt16(byte* dest, int src) ** (int) src: value to write */ -#ifdef _cplusplus -# define delete _freesci_cplusplus_workaround_delete -# define new _freesci_cplusplus_workaround_new -#endif - #define SCI_MEMTEST memtest(__FILE__, __LINE__) /*-- queues --*/ diff --git a/engines/sci/include/vm.h b/engines/sci/include/vm.h index 31141126ff..863d9c2186 100644 --- a/engines/sci/include/vm.h +++ b/engines/sci/include/vm.h @@ -39,12 +39,6 @@ #ifndef _SCI_VM_H #define _SCI_VM_H -#ifdef __cplusplus -# define new new_ -# define delete delete_ -# define class class_ -#endif /* __cplusplus */ - #define VM_STACK_SIZE 0x1000 /* Number of bytes to be allocated for the stack */ @@ -338,7 +332,7 @@ typedef struct { selector_t caller, moveDone, moveSpeed; /* Used for DoBresen */ - selector_t delete; /* Called by Animate() to dispose a view object */ + selector_t delete_; /* Called by Animate() to dispose a view object */ selector_t vol; selector_t pri; diff --git a/engines/sci/scicore/script.cpp b/engines/sci/scicore/script.cpp index b54c0e52c3..c2d0027fbe 100644 --- a/engines/sci/scicore/script.cpp +++ b/engines/sci/scicore/script.cpp @@ -151,7 +151,7 @@ script_map_selectors(state_t *s, selector_map_t *map) FIND_SELECTOR(type, "type"); FIND_SELECTOR(state, "state"); FIND_SELECTOR(doit, "doit"); - FIND_SELECTOR(delete, "delete"); + FIND_SELECTOR(delete_, "delete"); FIND_SELECTOR(signal, "signal"); FIND_SELECTOR(underBits, "underBits"); FIND_SELECTOR(canBeHere, "canBeHere"); diff --git a/engines/sci/scicore/vocab.cpp b/engines/sci/scicore/vocab.cpp index c712fdf4b5..b5b14c8e80 100644 --- a/engines/sci/scicore/vocab.cpp +++ b/engines/sci/scicore/vocab.cpp @@ -471,8 +471,8 @@ vocab_build_simple_parse_tree(parse_tree_node_t *nodes, result_word_t *words, in int i, length, pos = 0; for (i = 0; i < words_nr; ++i) { - if (words[i].class != VOCAB_CLASS_ANYWORD) { - nodes[pos].type = words[i].class; + if (words[i].classID != VOCAB_CLASS_ANYWORD) { + nodes[pos].type = words[i].classID; nodes[pos].content.value = words[i].group; pos += 2; /* Link information is filled in below */ } -- cgit v1.2.3