| return ENS_OK; | return ENS_OK; | ||||
| } | } | ||||
| espeak_ng_STATUS | |||||
| text_decoder_decode_string_multibyte(espeak_ng_TEXT_DECODER *decoder, | |||||
| const void *input, | |||||
| espeak_ng_ENCODING encoding, | |||||
| int flags) | |||||
| { | |||||
| switch (flags & 7) | |||||
| { | |||||
| case espeakCHARS_WCHAR: | |||||
| return text_decoder_decode_wstring(decoder, (const wchar_t *)input, -1); | |||||
| case espeakCHARS_AUTO: | |||||
| return text_decoder_decode_string_auto(decoder, (const char *)input, -1, encoding); | |||||
| case espeakCHARS_UTF8: | |||||
| return text_decoder_decode_string(decoder, (const char *)input, -1, ESPEAKNG_ENCODING_UTF_8); | |||||
| case espeakCHARS_8BIT: | |||||
| return text_decoder_decode_string(decoder, (const char *)input, -1, encoding); | |||||
| case espeakCHARS_16BIT: | |||||
| return text_decoder_decode_string(decoder, (const char *)input, -1, ESPEAKNG_ENCODING_ISO_10646_UCS_2); | |||||
| default: | |||||
| return ENS_UNKNOWN_TEXT_ENCODING; | |||||
| } | |||||
| } | |||||
| int | int | ||||
| text_decoder_eof(espeak_ng_TEXT_DECODER *decoder) | text_decoder_eof(espeak_ng_TEXT_DECODER *decoder) | ||||
| { | { |
| const wchar_t *string, | const wchar_t *string, | ||||
| int length); | int length); | ||||
| espeak_ng_STATUS | |||||
| text_decoder_decode_string_multibyte(espeak_ng_TEXT_DECODER *decoder, | |||||
| const void *input, | |||||
| espeak_ng_ENCODING encoding, | |||||
| int flags); | |||||
| int | int | ||||
| text_decoder_eof(espeak_ng_TEXT_DECODER *decoder); | text_decoder_eof(espeak_ng_TEXT_DECODER *decoder); | ||||
| if (p_decoder == NULL) | if (p_decoder == NULL) | ||||
| p_decoder = create_text_decoder(); | p_decoder = create_text_decoder(); | ||||
| switch (option_multibyte) | |||||
| { | |||||
| case espeakCHARS_WCHAR: | |||||
| text_decoder_decode_wstring(p_decoder, (const wchar_t *)vp_input, -1); | |||||
| break; | |||||
| case espeakCHARS_AUTO: | |||||
| text_decoder_decode_string_auto(p_decoder, (const char *)vp_input, -1, tr->encoding); | |||||
| break; | |||||
| case espeakCHARS_UTF8: | |||||
| text_decoder_decode_string(p_decoder, (const char *)vp_input, -1, ESPEAKNG_ENCODING_UTF_8); | |||||
| break; | |||||
| case espeakCHARS_8BIT: | |||||
| text_decoder_decode_string(p_decoder, (const char *)vp_input, -1, tr->encoding); | |||||
| break; | |||||
| case espeakCHARS_16BIT: | |||||
| text_decoder_decode_string(p_decoder, (const char *)vp_input, -1, ESPEAKNG_ENCODING_ISO_10646_UCS_2); | |||||
| break; | |||||
| default: | |||||
| return NULL; // unknown multibyte option value | |||||
| } | |||||
| if (text_decoder_decode_string_multibyte(p_decoder, vp_input, tr->encoding, option_multibyte) != ENS_OK) | |||||
| return NULL; | |||||
| embedded_ix = 0; | embedded_ix = 0; | ||||
| embedded_read = 0; | embedded_read = 0; |