aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/n3.c5
-rw-r--r--src/reader.c17
-rw-r--r--src/reader.h6
3 files changed, 23 insertions, 5 deletions
diff --git a/src/n3.c b/src/n3.c
index 80c7b9fe..5940c010 100644
--- a/src/n3.c
+++ b/src/n3.c
@@ -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