diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/n3.c | 5 | ||||
-rw-r--r-- | src/reader.c | 17 | ||||
-rw-r--r-- | src/reader.h | 6 |
3 files changed, 23 insertions, 5 deletions
@@ -15,6 +15,7 @@ */ #include "byte_source.h" +#include "caret.h" #include "env.h" #include "namespaces.h" #include "node.h" @@ -732,6 +733,7 @@ read_object(SerdReader* const reader, bool* const ate_dot) { const size_t orig_stack_size = reader->stack.size; + SerdCaret orig_caret = reader->source->caret; assert(ctx->subject); @@ -782,6 +784,7 @@ read_object(SerdReader* const reader, break; case '\"': case '\'': + ++orig_caret.col; st = read_literal(reader, &o, ate_dot); break; default: @@ -790,7 +793,7 @@ read_object(SerdReader* const reader, } if (!st && simple && o) { - st = emit_statement(reader, *ctx, o); + st = emit_statement_at(reader, *ctx, o, &orig_caret); } serd_stack_pop_to(&reader->stack, orig_stack_size); diff --git a/src/reader.c b/src/reader.c index 6ce40452..5afc28ff 100644 --- a/src/reader.c +++ b/src/reader.c @@ -154,9 +154,10 @@ push_node(SerdReader* const reader, } SerdStatus -emit_statement(SerdReader* const reader, - const ReadContext ctx, - SerdNode* const o) +emit_statement_at(SerdReader* const reader, + const ReadContext ctx, + SerdNode* const o, + SerdCaret* const caret) { if (reader->stack.size + (2 * sizeof(SerdNode)) > reader->stack.buf_size) { return SERD_ERR_OVERFLOW; @@ -167,7 +168,7 @@ emit_statement(SerdReader* const reader, serd_node_zero_pad(o); const SerdStatement statement = {{ctx.subject, ctx.predicate, o, ctx.graph}, - &reader->source->caret}; + caret}; const SerdStatus st = serd_sink_write_statement(reader->sink, *ctx.flags, &statement); @@ -176,6 +177,14 @@ emit_statement(SerdReader* const reader, return st; } +SerdStatus +emit_statement(SerdReader* const reader, + const ReadContext ctx, + SerdNode* const o) +{ + return emit_statement_at(reader, ctx, o, &reader->source->caret); +} + static SerdStatus read_statement(SerdReader* const reader) { diff --git a/src/reader.h b/src/reader.h index 30fd69a9..23d38009 100644 --- a/src/reader.h +++ b/src/reader.h @@ -95,6 +95,12 @@ void set_blank_id(SerdReader* reader, SerdNode* node, size_t buf_size); SerdStatus +emit_statement_at(SerdReader* reader, + ReadContext ctx, + SerdNode* o, + SerdCaret* caret); + +SerdStatus emit_statement(SerdReader* reader, ReadContext ctx, SerdNode* o); SerdStatus |