aboutsummaryrefslogtreecommitdiffstats
path: root/src/reader.c
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2018-02-04 18:35:41 +0100
committerDavid Robillard <d@drobilla.net>2018-05-27 18:21:57 +0200
commitc564145e6f9aebabb5dfe0896e36d2bb6bc8b6b9 (patch)
tree7321decb1c1bc82935b87e6a733747a3976afeca /src/reader.c
parentd37123707c7cde6368d6d368995628ad4809913c (diff)
downloadserd-c564145e6f9aebabb5dfe0896e36d2bb6bc8b6b9.tar.gz
serd-c564145e6f9aebabb5dfe0896e36d2bb6bc8b6b9.tar.bz2
serd-c564145e6f9aebabb5dfe0896e36d2bb6bc8b6b9.zip
Make nodes opaque
Diffstat (limited to 'src/reader.c')
-rw-r--r--src/reader.c22
1 files changed, 8 insertions, 14 deletions
diff --git a/src/reader.c b/src/reader.c
index 7e2fa4ec..cedf84cf 100644
--- a/src/reader.c
+++ b/src/reader.c
@@ -40,9 +40,9 @@ void
set_blank_id(SerdReader* reader, Ref ref, size_t buf_size)
{
SerdNode* node = deref(reader, ref);
+ char* buf = (char*)(node + 1);
const char* prefix = reader->bprefix ? (const char*)reader->bprefix : "";
- node->n_bytes = snprintf(
- (char*)node->buf, buf_size, "%sb%u", prefix, reader->next_id++);
+ node->n_bytes = snprintf(buf, buf_size, "%sb%u", prefix, reader->next_id++);
}
size_t
@@ -83,7 +83,6 @@ push_node_padded(SerdReader* reader, size_t maxlen,
node->n_bytes = n_bytes;
node->flags = 0;
node->type = type;
- node->buf = NULL;
char* buf = (char*)(node + 1);
memcpy(buf, str, n_bytes + 1);
@@ -105,12 +104,7 @@ push_node(SerdReader* reader, SerdType type, const char* str, size_t n_bytes)
SerdNode*
deref(SerdReader* reader, const Ref ref)
{
- if (ref) {
- SerdNode* node = (SerdNode*)(reader->stack.buf + ref);
- node->buf = (char*)node + sizeof(SerdNode);
- return node;
- }
- return NULL;
+ return ref ? (SerdNode*)(reader->stack.buf + ref) : NULL;
}
Ref
@@ -133,8 +127,8 @@ bool
emit_statement(SerdReader* reader, ReadContext ctx, Ref o, Ref d, Ref l)
{
SerdNode* graph = deref(reader, ctx.graph);
- if (!graph && reader->default_graph.buf) {
- graph = &reader->default_graph;
+ if (!graph && reader->default_graph) {
+ graph = reader->default_graph;
}
bool ret = !reader->statement_sink ||
!reader->statement_sink(
@@ -179,7 +173,7 @@ serd_reader_new(SerdSyntax syntax,
me->prefix_sink = prefix_sink;
me->statement_sink = statement_sink;
me->end_sink = end_sink;
- me->default_graph = SERD_NODE_NULL;
+ me->default_graph = NULL;
me->stack = serd_stack_new(SERD_PAGE_SIZE);
me->syntax = syntax;
me->next_id = 1;
@@ -216,7 +210,7 @@ serd_reader_free(SerdReader* reader)
pop_node(reader, reader->rdf_nil);
pop_node(reader, reader->rdf_rest);
pop_node(reader, reader->rdf_first);
- serd_node_free(&reader->default_graph);
+ serd_node_free(reader->default_graph);
#ifdef SERD_STACK_CHECK
free(reader->allocs);
@@ -256,7 +250,7 @@ void
serd_reader_set_default_graph(SerdReader* reader,
const SerdNode* graph)
{
- serd_node_free(&reader->default_graph);
+ serd_node_free(reader->default_graph);
reader->default_graph = serd_node_copy(graph);
}