| OLD | NEW |
| 1 #include "license.hunspell" | 1 #include "license.hunspell" |
| 2 #include "license.myspell" | 2 #include "license.myspell" |
| 3 | 3 |
| 4 #ifndef MOZILLA_CLIENT | 4 #ifndef MOZILLA_CLIENT |
| 5 #include <cstdlib> | 5 #include <cstdlib> |
| 6 #include <cstring> | 6 #include <cstring> |
| 7 #include <cstdio> | 7 #include <cstdio> |
| 8 #include <cctype> | 8 #include <cctype> |
| 9 #else | 9 #else |
| 10 #include <stdlib.h> | 10 #include <stdlib.h> |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 112 for (int j = 0; j < (numaliasm); j++) free(aliasm[j]); | 112 for (int j = 0; j < (numaliasm); j++) free(aliasm[j]); |
| 113 free(aliasm); | 113 free(aliasm); |
| 114 aliasm = NULL; | 114 aliasm = NULL; |
| 115 } | 115 } |
| 116 | 116 |
| 117 if (ignorechars) free(ignorechars); | 117 if (ignorechars) free(ignorechars); |
| 118 if (ignorechars_utf16) free(ignorechars_utf16); | 118 if (ignorechars_utf16) free(ignorechars_utf16); |
| 119 | 119 |
| 120 #ifdef HUNSPELL_CHROME_CLIENT | 120 #ifdef HUNSPELL_CHROME_CLIENT |
| 121 EmptyHentryCache(); | 121 EmptyHentryCache(); |
| 122 STLDeleteValues(&custom_word_to_hentry_map_); | |
| 123 for (std::vector<std::string*>::iterator it = pointer_to_strings_.begin(); | 122 for (std::vector<std::string*>::iterator it = pointer_to_strings_.begin(); |
| 124 it != pointer_to_strings_.end(); ++it) { | 123 it != pointer_to_strings_.end(); ++it) { |
| 125 delete *it; | 124 delete *it; |
| 126 } | 125 } |
| 127 #endif | 126 #endif |
| 128 } | 127 } |
| 129 | 128 |
| 130 #ifdef HUNSPELL_CHROME_CLIENT | 129 #ifdef HUNSPELL_CHROME_CLIENT |
| 131 void HashMgr::EmptyHentryCache() { | 130 void HashMgr::EmptyHentryCache() { |
| 132 // We need to delete each cache entry, and each additional one in the linked | 131 // We need to delete each cache entry, and each additional one in the linked |
| (...skipping 12 matching lines...) Expand all Loading... |
| 145 #endif | 144 #endif |
| 146 | 145 |
| 147 // lookup a root word in the hashtable | 146 // lookup a root word in the hashtable |
| 148 | 147 |
| 149 struct hentry * HashMgr::lookup(const char *word) const | 148 struct hentry * HashMgr::lookup(const char *word) const |
| 150 { | 149 { |
| 151 #ifdef HUNSPELL_CHROME_CLIENT | 150 #ifdef HUNSPELL_CHROME_CLIENT |
| 152 int affix_ids[hunspell::BDict::MAX_AFFIXES_PER_WORD]; | 151 int affix_ids[hunspell::BDict::MAX_AFFIXES_PER_WORD]; |
| 153 int affix_count = bdict_reader->FindWord(word, affix_ids); | 152 int affix_count = bdict_reader->FindWord(word, affix_ids); |
| 154 if (affix_count == 0) { // look for custom added word | 153 if (affix_count == 0) { // look for custom added word |
| 155 std::map<StringPiece, struct hentry *>::const_iterator iter = | 154 std::map<StringPiece, int>::const_iterator iter = |
| 156 custom_word_to_hentry_map_.find(word); | 155 custom_word_to_affix_id_map_.find(word); |
| 157 if (iter != custom_word_to_hentry_map_.end()) | 156 if (iter != custom_word_to_affix_id_map_.end()) { |
| 158 return iter->second; | 157 affix_count = 1; |
| 159 else | 158 affix_ids[0] = iter->second; |
| 160 return NULL; | 159 } |
| 161 } | 160 } |
| 162 | 161 |
| 163 static const int kMaxWordLen = 128; | 162 static const int kMaxWordLen = 128; |
| 164 static char word_buf[kMaxWordLen]; | 163 static char word_buf[kMaxWordLen]; |
| 165 strncpy(word_buf, word, kMaxWordLen); | 164 strncpy(word_buf, word, kMaxWordLen); |
| 166 | 165 |
| 167 return AffixIDsToHentry(word_buf, affix_ids, affix_count); | 166 return AffixIDsToHentry(word_buf, affix_ids, affix_count); |
| 168 #else | 167 #else |
| 169 struct hentry * dp; | 168 struct hentry * dp; |
| 170 if (tableptr) { | 169 if (tableptr) { |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 236 } | 235 } |
| 237 #endif | 236 #endif |
| 238 while (dp->next != NULL) { | 237 while (dp->next != NULL) { |
| 239 if ((!dp->next_homonym) && (strcmp(hp->word, dp->word) == 0)) dp->next_
homonym = hp; | 238 if ((!dp->next_homonym) && (strcmp(hp->word, dp->word) == 0)) dp->next_
homonym = hp; |
| 240 dp=dp->next; | 239 dp=dp->next; |
| 241 } | 240 } |
| 242 if ((!dp->next_homonym) && (strcmp(hp->word, dp->word) == 0)) dp->next_ho
monym = hp; | 241 if ((!dp->next_homonym) && (strcmp(hp->word, dp->word) == 0)) dp->next_ho
monym = hp; |
| 243 dp->next = hp; | 242 dp->next = hp; |
| 244 } | 243 } |
| 245 #endif // HUNSPELL_CHROME_CLIENT | 244 #endif // HUNSPELL_CHROME_CLIENT |
| 246 std::map<StringPiece, struct hentry *>::iterator iter = | 245 std::map<StringPiece, int>::iterator iter = |
| 247 custom_word_to_hentry_map_.find(word); | 246 custom_word_to_affix_id_map_.find(word); |
| 248 if(iter == custom_word_to_hentry_map_.end()) { // word needs to be added | 247 if(iter == custom_word_to_affix_id_map_.end()) { // word needs to be added |
| 249 // Make a custom hentry. | |
| 250 struct hentry* he = new hentry; | |
| 251 he->word = (char *)word; | |
| 252 he->wlen = wl; | |
| 253 he->next = NULL; | |
| 254 he->next_homonym = NULL; | |
| 255 | |
| 256 std::string* new_string_word = new std::string(word); | 248 std::string* new_string_word = new std::string(word); |
| 257 pointer_to_strings_.push_back(new_string_word); | 249 pointer_to_strings_.push_back(new_string_word); |
| 258 StringPiece sp(*(new_string_word)); | 250 StringPiece sp(*(new_string_word)); |
| 259 custom_word_to_hentry_map_[sp] = he; | 251 custom_word_to_affix_id_map_[sp] = 0; // no affixes for custom words |
| 260 return 1; | 252 return 1; |
| 261 } | 253 } |
| 262 | 254 |
| 263 return 0; | 255 return 0; |
| 264 } | 256 } |
| 265 | 257 |
| 266 // add a custom dic. word to the hash table (public) | 258 // add a custom dic. word to the hash table (public) |
| 267 int HashMgr::put_word(const char * word, int wl, char * aff) | 259 int HashMgr::put_word(const char * word, int wl, char * aff) |
| 268 { | 260 { |
| 269 unsigned short * flags; | 261 unsigned short * flags; |
| (...skipping 658 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 928 int HashMgr::is_aliasm() { | 920 int HashMgr::is_aliasm() { |
| 929 return (aliasm != NULL); | 921 return (aliasm != NULL); |
| 930 } | 922 } |
| 931 | 923 |
| 932 char * HashMgr::get_aliasm(int index) { | 924 char * HashMgr::get_aliasm(int index) { |
| 933 if ((index > 0) && (index <= numaliasm)) return aliasm[index - 1]; | 925 if ((index > 0) && (index <= numaliasm)) return aliasm[index - 1]; |
| 934 HUNSPELL_WARNING(stderr, "error: bad morph. alias index: %d\n", index); | 926 HUNSPELL_WARNING(stderr, "error: bad morph. alias index: %d\n", index); |
| 935 return NULL; | 927 return NULL; |
| 936 } | 928 } |
| 937 #endif | 929 #endif |
| OLD | NEW |