diff options
| author | Peng Wu <alexepico@gmail.com> | 2024-09-29 13:36:15 +0800 |
|---|---|---|
| committer | Peng Wu <alexepico@gmail.com> | 2024-09-29 13:36:15 +0800 |
| commit | bfcf58960acfa5d6aa64f2f67fa05b0ce2b63c8e (patch) | |
| tree | 7bf3f2cadd7a7f616d7510e1967f74c789a8a071 /src/storage/punct_table.cpp | |
| parent | 1601e32083f5e7aec1e883a95519514b8ce8583b (diff) | |
| download | libpinyin-bfcf58960acfa5d6aa64f2f67fa05b0ce2b63c8e.tar.gz libpinyin-bfcf58960acfa5d6aa64f2f67fa05b0ce2b63c8e.tar.xz libpinyin-bfcf58960acfa5d6aa64f2f67fa05b0ce2b63c8e.zip | |
Update class PunctTable
Diffstat (limited to 'src/storage/punct_table.cpp')
| -rw-r--r-- | src/storage/punct_table.cpp | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/storage/punct_table.cpp b/src/storage/punct_table.cpp index 461d4bc..249f6c3 100644 --- a/src/storage/punct_table.cpp +++ b/src/storage/punct_table.cpp @@ -143,3 +143,61 @@ bool PunctTableEntry::remove_punctuation(const gchar * punct) { return false; } + +bool PunctTable::get_all_punctuations(/* in */ phrase_token_t index, + /* out */ gchar ** & puncts) { + assert(NULL == puncts); + + if (!load_entry(index)) + return false; + + return m_entry->get_all_punctuations(puncts); +} + +bool PunctTable::append_punctuation(/* in */ phrase_token_t index, + /* in */ const gchar * punct) { + if (!load_entry(index)) + return false; + if (!m_entry->append_punctuation(punct)) + return false; + if (!store_entry(index)) + return false; + return true; +} + +bool PunctTable::remove_punctuation(/* in */ phrase_token_t index, + /* in */ const gchar * punct) { + if (!load_entry(index)) + return false; + if (!m_entry->remove_punctuation(punct)) + return false; + if (!store_entry(index)) + return false; + return true; +} + +bool PunctTable::load_text(FILE * infile) { + phrase_token_t token; + char phrase[256]; + char punct[256]; + size_t freq; + + while (!feof(infile)) { +#ifdef __APPLE__ + int num = fscanf(infile, "%u %255[^ \t] %255[^ \t] %ld", + &token, phrase, punct, &freq); +#else + int num = fscanf(infile, "%u %255s %255s %ld", + &token, phrase, punct, &freq); +#endif + + if (4 != num) + continue; + + if (feof(infile)) + break; + + append_punctuation(token, punct); + } + return true; +} |
