Browse Source

encoding.c: Implement a peekc API.

master
Reece H. Dunn 8 years ago
parent
commit
3f692f498b
3 changed files with 37 additions and 0 deletions
  1. 9
    0
      src/libespeak-ng/encoding.c
  2. 3
    0
      src/libespeak-ng/encoding.h
  3. 25
    0
      tests/encoding.c

+ 9
- 0
src/libespeak-ng/encoding.c View File

return decoder->get(decoder); return decoder->get(decoder);
} }


uint32_t
text_decoder_peekc(espeak_ng_TEXT_DECODER *decoder)
{
const uint8_t *current = decoder->current;
uint32_t c = decoder->get(decoder);
decoder->current = current;
return c;
}

const void * const void *
text_decoder_get_buffer(espeak_ng_TEXT_DECODER *decoder) text_decoder_get_buffer(espeak_ng_TEXT_DECODER *decoder)
{ {

+ 3
- 0
src/libespeak-ng/encoding.h View File

uint32_t uint32_t
text_decoder_getc(espeak_ng_TEXT_DECODER *decoder); text_decoder_getc(espeak_ng_TEXT_DECODER *decoder);


uint32_t
text_decoder_peekc(espeak_ng_TEXT_DECODER *decoder);

const void * const void *
text_decoder_get_buffer(espeak_ng_TEXT_DECODER *decoder); text_decoder_get_buffer(espeak_ng_TEXT_DECODER *decoder);



+ 25
- 0
tests/encoding.c View File

destroy_text_decoder(decoder); destroy_text_decoder(decoder);
} }


void
test_peekc()
{
printf("testing peekc\n");

espeak_ng_TEXT_DECODER *decoder = create_text_decoder();

assert(text_decoder_decode_string(decoder, "aGd", 3, ESPEAKNG_ENCODING_US_ASCII) == ENS_OK);
assert(text_decoder_eof(decoder) == 0);
assert(text_decoder_getc(decoder) == 'a');
assert(text_decoder_eof(decoder) == 0);
assert(text_decoder_peekc(decoder) == 'G');
assert(text_decoder_eof(decoder) == 0);
assert(text_decoder_getc(decoder) == 'G');
assert(text_decoder_eof(decoder) == 0);
assert(text_decoder_peekc(decoder) == 'd');
assert(text_decoder_eof(decoder) == 0);
assert(text_decoder_getc(decoder) == 'd');
assert(text_decoder_eof(decoder) == 1);

destroy_text_decoder(decoder);
}

int int
main(int argc, char **argv) main(int argc, char **argv)
{ {
test_wchar_decoder(); test_wchar_decoder();
test_auto_decoder(); test_auto_decoder();


test_peekc();

printf("done\n"); printf("done\n");


return EXIT_SUCCESS; return EXIT_SUCCESS;

Loading…
Cancel
Save