diff options
Diffstat (limited to 'src/reader.h')
-rw-r--r-- | src/reader.h | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/reader.h b/src/reader.h index a5e1f3f0..df6e6387 100644 --- a/src/reader.h +++ b/src/reader.h @@ -57,7 +57,7 @@ struct SerdReaderImpl { SerdNode* rdf_first; SerdNode* rdf_rest; SerdNode* rdf_nil; - SerdByteSource source; + SerdByteSource* source; SerdStack stack; SerdSyntax syntax; SerdReaderFlags flags; @@ -104,12 +104,21 @@ SerdStatus read_turtleTrigDoc(SerdReader* reader); static inline int peek_byte(SerdReader* reader) { - SerdByteSource* source = &reader->source; + SerdByteSource* source = reader->source; return source->eof ? EOF : (int)source->read_buf[source->read_head]; } static inline int +eat_byte(SerdReader* reader) +{ + const int c = peek_byte(reader); + const SerdStatus st = serd_byte_source_advance(reader->source); + + return st > SERD_FAILURE ? EOF : c; +} + +static inline int eat_byte_safe(SerdReader* reader, const int byte) { (void)byte; @@ -117,7 +126,7 @@ eat_byte_safe(SerdReader* reader, const int byte) const int c = peek_byte(reader); assert(c == byte); - serd_byte_source_advance(&reader->source); + serd_byte_source_advance(reader->source); return c; } |