diff options
| author | Federico Angelilli <code@fedang.net> | 2024-06-07 13:00:09 +0200 |
|---|---|---|
| committer | Federico Angelilli <code@fedang.net> | 2024-06-07 13:00:09 +0200 |
| commit | b2398c1735f0482e83b811fed49550ea3d9d32a2 (patch) | |
| tree | 028497ee9415d922dcc011cc2b68fdb8e2992d9c /any_sexp.h | |
| parent | bde2e4df872bcf0cae61805a9b3c1ec400cece16 (diff) | |
Update documentation
Diffstat (limited to 'any_sexp.h')
| -rw-r--r-- | any_sexp.h | 16 |
1 files changed, 11 insertions, 5 deletions
@@ -27,6 +27,7 @@ #include <stdint.h> #include <stddef.h> #include <stdbool.h> +#include <stdio.h> typedef enum { ANY_SEXP_TAG_ERROR = 0xf, @@ -130,6 +131,8 @@ void any_sexp_reader_init(any_sexp_reader_t *reader, any_sexp_getchar_t getc, vo void any_sexp_reader_string_init(any_sexp_reader_t *reader, any_sexp_reader_string_t *string, const char *source, size_t length); +void any_sexp_reader_file_init(any_sexp_reader_t *reader, FILE *file); + bool any_sexp_reader_end(any_sexp_reader_t *reader); any_sexp_t any_sexp_read(any_sexp_reader_t *reader); @@ -138,8 +141,6 @@ any_sexp_t any_sexp_read(any_sexp_reader_t *reader); #ifndef ANY_SEXP_NO_WRITER -#include <stdio.h> - typedef struct { any_sexp_putchar_t putc; void *stream; @@ -276,9 +277,9 @@ static void any_sexp_reader_skip(any_sexp_reader_t *reader) static char any_sexp_reader_string_getc(any_sexp_reader_string_t *string) { - if (string->cursor >= string->length) - return EOF; - return string->source[string->cursor++]; + return string->cursor < string->length + ? string->source[string->cursor++] + : EOF; } void any_sexp_reader_init(any_sexp_reader_t *reader, any_sexp_getchar_t getc, void *stream) @@ -296,6 +297,11 @@ void any_sexp_reader_string_init(any_sexp_reader_t *reader, any_sexp_reader_stri any_sexp_reader_init(reader, (any_sexp_getchar_t)any_sexp_reader_string_getc, string); } +void any_sexp_reader_file_init(any_sexp_reader_t *reader, FILE *file) +{ + any_sexp_reader_init(reader, (any_sexp_getchar_t)fgetc, file); +} + bool any_sexp_reader_end(any_sexp_reader_t *reader) { return reader->c == EOF; |
