diff options
author | Max Horn | 2009-03-24 17:41:46 +0000 |
---|---|---|
committer | Max Horn | 2009-03-24 17:41:46 +0000 |
commit | 65b96f6a1bf1f4ca8a062f785996306dabbfedf3 (patch) | |
tree | 4939957bec85362a8070a1225f47c9f3c2d2f84b /engines/sci/scicore | |
parent | d38590e6d4053939390ae5a853397f9574d9982e (diff) | |
download | scummvm-rg350-65b96f6a1bf1f4ca8a062f785996306dabbfedf3.tar.gz scummvm-rg350-65b96f6a1bf1f4ca8a062f785996306dabbfedf3.tar.bz2 scummvm-rg350-65b96f6a1bf1f4ca8a062f785996306dabbfedf3.zip |
SCI: Changed vocab_tokenize_string to not 'return' the list it generates, but rather pass a reference to an existing list to it (this is a bit more efficient, and allows us to return an error value)
svn-id: r39670
Diffstat (limited to 'engines/sci/scicore')
-rw-r--r-- | engines/sci/scicore/vocabulary.cpp | 7 | ||||
-rw-r--r-- | engines/sci/scicore/vocabulary.h | 5 |
2 files changed, 6 insertions, 6 deletions
diff --git a/engines/sci/scicore/vocabulary.cpp b/engines/sci/scicore/vocabulary.cpp index 283029b226..f9e58c1123 100644 --- a/engines/sci/scicore/vocabulary.cpp +++ b/engines/sci/scicore/vocabulary.cpp @@ -477,13 +477,12 @@ int vocab_build_simple_parse_tree(parse_tree_node_t *nodes, result_word_t *words } #endif -ResultWordList vocab_tokenize_string(char *sentence, word_t **words, int words_nr, +int vocab_tokenize_string(ResultWordList &retval, char *sentence, word_t **words, int words_nr, const SuffixList &suffixes, char **error) { char *lastword = sentence; int pos_in_sentence = 0; char c; int wordlen = 0; - ResultWordList retval; *error = NULL; @@ -507,7 +506,7 @@ ResultWordList vocab_tokenize_string(char *sentence, word_t **words, int words_n *error = (char *)sci_calloc(wordlen + 1, 1); strncpy(*error, lastword, wordlen); // Set the offending word retval.clear(); - return retval; // And return with error + return 1; // And return with error } // Copy into list @@ -520,7 +519,7 @@ ResultWordList vocab_tokenize_string(char *sentence, word_t **words, int words_n } while (c); // Until terminator is hit - return retval; + return 0; } void _vocab_recursive_ptree_dump_treelike(parse_tree_node_t *nodes, int nr, int prevnr) { diff --git a/engines/sci/scicore/vocabulary.h b/engines/sci/scicore/vocabulary.h index 41562e092d..7a9507b74c 100644 --- a/engines/sci/scicore/vocabulary.h +++ b/engines/sci/scicore/vocabulary.h @@ -283,7 +283,7 @@ ResultWord vocab_lookup_word(char *word, int word_len, */ -ResultWordList vocab_tokenize_string(char *sentence, +int vocab_tokenize_string(ResultWordList &retval, char *sentence, word_t **words, int words_nr, const SuffixList &suffixes, char **error); /* Tokenizes a string and compiles it into word_ts. ** Parameters: (char *) sentence: The sentence to examine @@ -291,7 +291,8 @@ ResultWordList vocab_tokenize_string(char *sentence, ** (int) words_nr: Number of words to scan for ** (SuffixList) suffixes: suffixes to scan for ** (char **) error: Points to a malloc'd copy of the offending text or to NULL on error -** Returns : (word_t *): A list of word_ts containing the result, or NULL. +** (ResultWordList) retval: A list of word_ts containing the result, or NULL. +** Returns : 0 on success, 1 if an error occurred ** On error, NULL is returned. If *error is NULL, the sentence did not contain any useful words; ** if not, *error points to a malloc'd copy of the offending word. ** The returned list may contain anywords. |