git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@177 d46cf337-b52f-0410-862d-fd96e6ae7743master
| {NULL,-1}}; | {NULL,-1}}; | ||||
| int Translator::ReadClause(FILE *f_in, char *buf, unsigned short *charix, int n_buf) | |||||
| {//================================================================================= | |||||
| int Translator::ReadClause(FILE *f_in, char *buf, short *charix, int n_buf) | |||||
| {//======================================================================== | |||||
| /* Find the end of the current clause. | /* Find the end of the current clause. | ||||
| Write the clause into buf | Write the clause into buf | ||||
| { | { | ||||
| charix[ix] = count_characters - clause_start_char; | charix[ix] = count_characters - clause_start_char; | ||||
| while(j < ix) | while(j < ix) | ||||
| charix[j++] = 0xffff; // subsequent bytes of a multibyte character | |||||
| charix[j++] = -1; // subsequent bytes of a multibyte character | |||||
| } | } | ||||
| if(((ix > (n_buf-20)) && !IsAlpha(c1) && !iswdigit(c1)) || (ix >= (n_buf-2))) | if(((ix > (n_buf-20)) && !IsAlpha(c1) && !iswdigit(c1)) || (ix >= (n_buf-2))) |
| int j, k; | int j, k; | ||||
| int n_digits; | int n_digits; | ||||
| unsigned short charix[N_TR_SOURCE+1]; | |||||
| short charix[N_TR_SOURCE+1]; | |||||
| WORD_TAB words[N_CLAUSE_WORDS]; | WORD_TAB words[N_CLAUSE_WORDS]; | ||||
| int word_count=0; // index into words | int word_count=0; // index into words | ||||
| while(charix[j] != 0) | while(charix[j] != 0) | ||||
| { | { | ||||
| // count the number of characters (excluding multibyte continuation bytes) | // count the number of characters (excluding multibyte continuation bytes) | ||||
| if(charix[j++] != 0xffff) | |||||
| if(charix[j++] != -1) | |||||
| k++; | k++; | ||||
| } | } | ||||
| words[0].length = k; | words[0].length = k; | ||||
| words[word_count].start = ix; | words[word_count].start = ix; | ||||
| words[word_count].flags = 0; | words[word_count].flags = 0; | ||||
| for(j=source_index; charix[j] == 0; j++); // skip blanks | |||||
| for(j=source_index; charix[j] <= 0; j++); // skip blanks | |||||
| words[word_count].sourceix = charix[j]; | words[word_count].sourceix = charix[j]; | ||||
| k = 0; | k = 0; | ||||
| while(charix[j] != 0) | while(charix[j] != 0) | ||||
| { | { | ||||
| // count the number of characters (excluding multibyte continuation bytes) | // count the number of characters (excluding multibyte continuation bytes) | ||||
| if(charix[j++] != 0xffff) | |||||
| if(charix[j++] != -1) | |||||
| k++; | k++; | ||||
| } | } | ||||
| words[word_count].length = k; | words[word_count].length = k; |
| void MakePhonemeList(int post_pause, int new_sentence); | void MakePhonemeList(int post_pause, int new_sentence); | ||||
| int SubstitutePhonemes(PHONEME_LIST2 *plist_out); | int SubstitutePhonemes(PHONEME_LIST2 *plist_out); | ||||
| int ReadClause(FILE *f_in, char *buf, unsigned short *charix, int n_buf); | |||||
| int ReadClause(FILE *f_in, char *buf, short *charix, int n_buf); | |||||
| int AnnouncePunctuation(int c1, int c2, char *buf, int ix); | int AnnouncePunctuation(int c1, int c2, char *buf, int ix); | ||||
| const char *LookupDict2(const char *word, const char *word2, char *phonetic, unsigned int *flags, int end_flags, WORD_TAB *wtab); | const char *LookupDict2(const char *word, const char *word2, char *phonetic, unsigned int *flags, int end_flags, WORD_TAB *wtab); |