diff options
author | David Robillard <d@drobilla.net> | 2021-02-20 10:11:33 -0500 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2021-03-08 23:36:35 -0500 |
commit | c579186c5dd4e11bffddd353cef8978a66ef9c10 (patch) | |
tree | b89f1059d161872ded394a5c620a3b4f156f7972 /src/n3.c | |
parent | c7a827b07898551611d43f92cf4e2fa53595957a (diff) | |
download | serd-c579186c5dd4e11bffddd353cef8978a66ef9c10.tar.gz serd-c579186c5dd4e11bffddd353cef8978a66ef9c10.tar.bz2 serd-c579186c5dd4e11bffddd353cef8978a66ef9c10.zip |
WIP: Simplify node construction
Diffstat (limited to 'src/n3.c')
-rw-r--r-- | src/n3.c | 25 |
1 files changed, 5 insertions, 20 deletions
@@ -155,11 +155,9 @@ read_ECHAR(SerdReader* reader, SerdNode* dest) eat_byte_safe(reader, 'b'); return push_byte(reader, dest, '\b'); case 'n': - dest->flags |= SERD_HAS_NEWLINE; eat_byte_safe(reader, 'n'); return push_byte(reader, dest, '\n'); case 'r': - dest->flags |= SERD_HAS_NEWLINE; eat_byte_safe(reader, 'r'); return push_byte(reader, dest, '\r'); case 'f': @@ -248,23 +246,8 @@ read_utf8_code(SerdReader* reader, SerdNode* dest, uint32_t* code, uint8_t c) static inline SerdStatus read_character(SerdReader* reader, SerdNode* dest, uint8_t c) { - if (!(c & 0x80)) { - switch (c) { - case 0xA: - case 0xD: - dest->flags |= SERD_HAS_NEWLINE; - break; - case '"': - case '\'': - dest->flags |= SERD_HAS_QUOTE; - break; - default: - break; - } - - return push_byte(reader, dest, c); - } - return read_utf8_character(reader, dest, c); + return (c & 0x80) ? read_utf8_character(reader, dest, c) + : push_byte(reader, dest, c); } // [10] comment ::= '#' ( [^#xA #xD] )* @@ -350,7 +333,7 @@ read_STRING_LITERAL_LONG(SerdReader* reader, SerdNode* ref, uint8_t q) eat_byte_safe(reader, q3); break; } - ref->flags |= SERD_HAS_QUOTE; + push_byte(reader, ref, c); st = read_character(reader, ref, (uint8_t)q2); } else { @@ -436,6 +419,8 @@ read_String(SerdReader* reader, SerdNode* node) } eat_byte_safe(reader, q3); + node->flags |= SERD_IS_LONG_LITERAL; + return read_STRING_LITERAL_LONG(reader, node, (uint8_t)q1); } |