diff options
Diffstat (limited to 'engines/sci/engine/kparse.cpp')
-rw-r--r-- | engines/sci/engine/kparse.cpp | 40 |
1 files changed, 19 insertions, 21 deletions
diff --git a/engines/sci/engine/kparse.cpp b/engines/sci/engine/kparse.cpp index 785ff39d22..0254d21642 100644 --- a/engines/sci/engine/kparse.cpp +++ b/engines/sci/engine/kparse.cpp @@ -42,7 +42,6 @@ reg_t kSaid(EngineState *s, int argc, reg_t *argv) { reg_t heap_said_block = argv[0]; byte *said_block; int new_lastmatch; - Vocabulary *voc = g_sci->getVocabulary(); #ifdef DEBUG_PARSER const int debug_parser = 1; #else @@ -64,7 +63,7 @@ reg_t kSaid(EngineState *s, int argc, reg_t *argv) { s->_voc->decipherSaidBlock(said_block); #endif - if (voc->parser_event.isNull() || (readSelectorValue(s->_segMan, voc->parser_event, SELECTOR(claimed)))) { + if (s->_voc->parser_event.isNull() || (GET_SEL32V(s->_segMan, s->_voc->parser_event, SELECTOR(claimed)))) { return NULL_REG; } @@ -78,7 +77,7 @@ reg_t kSaid(EngineState *s, int argc, reg_t *argv) { s->r_acc = make_reg(0, 1); if (new_lastmatch != SAID_PARTIAL_MATCH) - writeSelectorValue(s->_segMan, voc->parser_event, SELECTOR(claimed), 1); + PUT_SEL32V(s->_segMan, s->_voc->parser_event, SELECTOR(claimed), 1); } else { return NULL_REG; @@ -93,15 +92,15 @@ reg_t kParse(EngineState *s, int argc, reg_t *argv) { char *error; ResultWordList words; reg_t event = argv[1]; - Vocabulary *voc = g_sci->getVocabulary(); + Vocabulary *voc = s->_voc; - voc->parser_event = event; + s->_voc->parser_event = event; bool res = voc->tokenizeString(words, string.c_str(), &error); - voc->parserIsValid = false; /* not valid */ + s->_voc->parserIsValid = false; /* not valid */ if (res && !words.empty()) { - voc->synonymizeTokens(words); + s->_voc->synonymizeTokens(words); s->r_acc = make_reg(0, 1); @@ -116,32 +115,32 @@ reg_t kParse(EngineState *s, int argc, reg_t *argv) { if (syntax_fail) { s->r_acc = make_reg(0, 1); - writeSelectorValue(segMan, event, SELECTOR(claimed), 1); + PUT_SEL32V(segMan, event, SELECTOR(claimed), 1); - invokeSelector(INV_SEL(s, s->_gameObj, syntaxFail, kStopOnInvalidSelector), 2, voc->parser_base, stringpos); + invoke_selector(INV_SEL(s, s->_gameObj, syntaxFail, kStopOnInvalidSelector), 2, s->_voc->parser_base, stringpos); /* Issue warning */ debugC(2, kDebugLevelParser, "Tree building failed"); } else { - voc->parserIsValid = true; - writeSelectorValue(segMan, event, SELECTOR(claimed), 0); + s->_voc->parserIsValid = true; + PUT_SEL32V(segMan, event, SELECTOR(claimed), 0); #ifdef DEBUG_PARSER - voc->dumpParseTree(); + s->_voc->dumpParseTree(); #endif } } else { s->r_acc = make_reg(0, 0); - writeSelectorValue(segMan, event, SELECTOR(claimed), 1); + PUT_SEL32V(segMan, event, SELECTOR(claimed), 1); if (error) { - s->_segMan->strcpy(voc->parser_base, error); + s->_segMan->strcpy(s->_voc->parser_base, error); debugC(2, kDebugLevelParser, "Word unknown: %s", error); /* Issue warning: */ - invokeSelector(INV_SEL(s, s->_gameObj, wordFail, kStopOnInvalidSelector), 2, voc->parser_base, stringpos); + invoke_selector(INV_SEL(s, s->_gameObj, wordFail, kStopOnInvalidSelector), 2, s->_voc->parser_base, stringpos); free(error); return make_reg(0, 1); /* Tell them that it didn't work */ } @@ -157,29 +156,28 @@ reg_t kSetSynonyms(EngineState *s, int argc, reg_t *argv) { Node *node; int script; int numSynonyms = 0; - Vocabulary *voc = g_sci->getVocabulary(); // Only SCI0-SCI1 EGA games had a parser. In newer versions, this is a stub if (getSciVersion() > SCI_VERSION_1_EGA) return s->r_acc; - voc->clearSynonyms(); + s->_voc->clearSynonyms(); - list = s->_segMan->lookupList(readSelector(segMan, object, SELECTOR(elements))); + list = s->_segMan->lookupList(GET_SEL32(segMan, object, SELECTOR(elements))); node = s->_segMan->lookupNode(list->first); while (node) { reg_t objpos = node->value; int seg; - script = readSelectorValue(segMan, objpos, SELECTOR(number)); + script = GET_SEL32V(segMan, objpos, SELECTOR(number)); seg = s->_segMan->getScriptSegment(script); if (seg > 0) numSynonyms = s->_segMan->getScript(seg)->getSynonymsNr(); if (numSynonyms) { - const byte *synonyms = s->_segMan->getScript(seg)->getSynonyms(); + byte *synonyms = s->_segMan->getScript(seg)->getSynonyms(); if (synonyms) { debugC(2, kDebugLevelParser, "Setting %d synonyms for script.%d", @@ -195,7 +193,7 @@ reg_t kSetSynonyms(EngineState *s, int argc, reg_t *argv) { synonym_t tmp; tmp.replaceant = (int16)READ_LE_UINT16(synonyms + i * 4); tmp.replacement = (int16)READ_LE_UINT16(synonyms + i * 4 + 2); - voc->addSynonym(tmp); + s->_voc->addSynonym(tmp); } } else warning("Synonyms of script.%03d were requested, but script is not available", script); |