aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2019-04-28 17:54:00 +0200
committerDavid Robillard <d@drobilla.net>2019-12-20 10:26:55 -0500
commit99ec121876753b95987a53f7435427fdf438191a (patch)
tree002df115e543da606c8c78f7d30739ac62fe8c69 /src
parentf79260e122a02b0cf553342d598bba78e169d0da (diff)
downloadserd-99ec121876753b95987a53f7435427fdf438191a.tar.gz
serd-99ec121876753b95987a53f7435427fdf438191a.tar.bz2
serd-99ec121876753b95987a53f7435427fdf438191a.zip
Replace serd_reader_set_strict() with SerdReaderFlags
This makes reader options extensible and should hopefully prevent the need for grafting on more similar functions in the future.
Diffstat (limited to 'src')
-rw-r--r--src/reader.c9
-rw-r--r--src/serdi.c13
-rw-r--r--src/writer.c6
3 files changed, 12 insertions, 16 deletions
diff --git a/src/reader.c b/src/reader.c
index 20903c7f..bd15c73f 100644
--- a/src/reader.c
+++ b/src/reader.c
@@ -164,6 +164,7 @@ serd_reader_read_document(SerdReader* reader)
SerdReader*
serd_reader_new(SerdWorld* world,
SerdSyntax syntax,
+ SerdReaderFlags flags,
const SerdSink* sink,
size_t stack_size)
{
@@ -174,7 +175,7 @@ serd_reader_new(SerdWorld* world,
me->stack = serd_stack_new(stack_size);
me->syntax = syntax;
me->next_id = 1;
- me->strict = true;
+ me->strict = !(flags & SERD_READ_LAX);
me->rdf_first = push_node(me, SERD_URI, NS_RDF "first", 48);
me->rdf_rest = push_node(me, SERD_URI, NS_RDF "rest", 47);
@@ -184,12 +185,6 @@ serd_reader_new(SerdWorld* world,
}
void
-serd_reader_set_strict(SerdReader* reader, bool strict)
-{
- reader->strict = strict;
-}
-
-void
serd_reader_free(SerdReader* reader)
{
serd_reader_finish(reader);
diff --git a/src/serdi.c b/src/serdi.c
index 3a220d91..28fd0ec1 100644
--- a/src/serdi.c
+++ b/src/serdi.c
@@ -96,13 +96,13 @@ main(int argc, char** argv)
SerdSyntax input_syntax = (SerdSyntax)0;
SerdSyntax output_syntax = (SerdSyntax)0;
- SerdWriterFlags writer_flags = SERD_WRITE_STRICT;
+ SerdReaderFlags reader_flags = 0;
+ SerdWriterFlags writer_flags = 0;
bool from_string = false;
bool from_stdin = false;
bool bulk_read = true;
bool bulk_write = false;
bool no_inline = false;
- bool lax = false;
bool use_model = false;
bool quiet = false;
size_t stack_size = 4194304;
@@ -125,8 +125,8 @@ main(int argc, char** argv)
} else if (argv[a][1] == 'h') {
return print_usage(argv[0], false);
} else if (argv[a][1] == 'l') {
- writer_flags &= ~SERD_WRITE_STRICT;
- lax = true;
+ reader_flags |= SERD_READ_LAX;
+ writer_flags |= SERD_WRITE_LAX;
} else if (argv[a][1] == 'm') {
use_model = true;
} else if (argv[a][1] == 'q') {
@@ -243,8 +243,9 @@ main(int argc, char** argv)
sink = serd_writer_get_sink(writer);
}
- reader = serd_reader_new(world, input_syntax, sink, stack_size);
- serd_reader_set_strict(reader, !lax);
+ reader = serd_reader_new(
+ world, input_syntax, reader_flags, sink, stack_size);
+
if (quiet) {
serd_world_set_log_func(world, quiet_error_func, NULL);
}
diff --git a/src/writer.c b/src/writer.c
index d3ed1ae5..7c057107 100644
--- a/src/writer.c
+++ b/src/writer.c
@@ -281,7 +281,7 @@ write_uri(SerdWriter* writer, const char* utf8, size_t n_bytes, SerdStatus* st)
size_t size = 0;
len += write_character(writer, (const uint8_t*)utf8 + i, &size, st);
i += size;
- if (*st && (writer->flags & SERD_WRITE_STRICT)) {
+ if (*st && !(writer->flags & SERD_WRITE_LAX)) {
break;
} else if (size == 0) {
// Corrupt input, scan to start of next character
@@ -297,7 +297,7 @@ ewrite_uri(SerdWriter* writer, const char* utf8, size_t n_bytes)
SerdStatus st = SERD_SUCCESS;
write_uri(writer, utf8, n_bytes, &st);
- return (writer->flags & SERD_WRITE_STRICT) ? st : SERD_SUCCESS;
+ return (writer->flags & SERD_WRITE_LAX) ? SERD_SUCCESS : st;
}
SERD_WARN_UNUSED_RESULT static SerdStatus
@@ -423,7 +423,7 @@ write_text(SerdWriter* writer,
}
}
- return (writer->flags & SERD_WRITE_STRICT) ? st : SERD_SUCCESS;
+ return (writer->flags & SERD_WRITE_LAX) ? SERD_SUCCESS : st;
}
SERD_WARN_UNUSED_RESULT static size_t