aboutsummaryrefslogtreecommitdiffstats
path: root/src/writer.c
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2016-03-16 16:21:20 -0400
committerDavid Robillard <d@drobilla.net>2020-10-27 13:13:58 +0100
commit085e63e53502adfc16c3830ed6b0b941314b8f8a (patch)
tree509a1b7b5ee85e9e6d3a409e25029f9062fe29fb /src/writer.c
parent9e5fa742b6ef66a546c0a77c14f834f2268c5f71 (diff)
downloadserd-085e63e53502adfc16c3830ed6b0b941314b8f8a.tar.gz
serd-085e63e53502adfc16c3830ed6b0b941314b8f8a.tar.bz2
serd-085e63e53502adfc16c3830ed6b0b941314b8f8a.zip
Use char* for strings in public API
The constant casting just makes user code a mess, for no benefit.
Diffstat (limited to 'src/writer.c')
-rw-r--r--src/writer.c54
1 files changed, 27 insertions, 27 deletions
diff --git a/src/writer.c b/src/writer.c
index 96d2e92b..39acd75b 100644
--- a/src/writer.c
+++ b/src/writer.c
@@ -110,7 +110,7 @@ struct SerdWriterImpl {
SerdNode list_subj;
unsigned list_depth;
unsigned indent;
- uint8_t* bprefix;
+ char* bprefix;
size_t bprefix_len;
Sep last_sep;
bool empty;
@@ -146,7 +146,7 @@ w_err(SerdWriter* writer, SerdStatus st, const char* fmt, ...)
va_list args;
va_start(args, fmt);
- const SerdError e = { st, (const uint8_t*)"", 0, 0, fmt, &args };
+ const SerdError e = { st, "", 0, 0, fmt, &args };
serd_error(writer->error_sink, writer->error_handle, &e);
va_end(args);
}
@@ -163,7 +163,7 @@ static void
copy_node(SerdNode* dst, const SerdNode* src)
{
if (src) {
- dst->buf = (uint8_t*)realloc((char*)dst->buf, src->n_bytes + 1);
+ dst->buf = (char*)realloc((char*)dst->buf, src->n_bytes + 1);
dst->n_bytes = src->n_bytes;
dst->flags = src->flags;
dst->type = src->type;
@@ -212,7 +212,7 @@ write_character(SerdWriter* writer, const uint8_t* utf8, size_t* size)
}
static inline bool
-uri_must_escape(const uint8_t c)
+uri_must_escape(const char c)
{
switch (c) {
case ' ': case '"': case '<': case '>': case '\\':
@@ -224,7 +224,7 @@ uri_must_escape(const uint8_t c)
}
static size_t
-write_uri(SerdWriter* writer, const uint8_t* utf8, size_t n_bytes)
+write_uri(SerdWriter* writer, const char* utf8, size_t n_bytes)
{
size_t len = 0;
for (size_t i = 0; i < n_bytes;) {
@@ -243,7 +243,7 @@ write_uri(SerdWriter* writer, const uint8_t* utf8, size_t n_bytes)
// Write UTF-8 character
size_t size = 0;
- len += write_character(writer, utf8 + i, &size);
+ len += write_character(writer, (const uint8_t*)utf8 + i, &size);
i += size;
if (size == 0) {
// Corrupt input, scan to start of next character
@@ -254,7 +254,7 @@ write_uri(SerdWriter* writer, const uint8_t* utf8, size_t n_bytes)
}
static bool
-lname_must_escape(const uint8_t c)
+lname_must_escape(const char c)
{
/* This arbitrary list of characters, most of which have nothing to do with
Turtle, must be handled as special cases here because the RDF and SPARQL
@@ -277,7 +277,7 @@ lname_must_escape(const uint8_t c)
}
static size_t
-write_lname(SerdWriter* writer, const uint8_t* utf8, size_t n_bytes)
+write_lname(SerdWriter* writer, const char* utf8, size_t n_bytes)
{
size_t len = 0;
for (size_t i = 0; i < n_bytes; ++i) {
@@ -303,7 +303,7 @@ write_lname(SerdWriter* writer, const uint8_t* utf8, size_t n_bytes)
static size_t
write_text(SerdWriter* writer, TextContext ctx,
- const uint8_t* utf8, size_t n_bytes)
+ const char* utf8, size_t n_bytes)
{
size_t len = 0;
for (size_t i = 0; i < n_bytes;) {
@@ -358,7 +358,8 @@ write_text(SerdWriter* writer, TextContext ctx,
// Write UTF-8 character
size_t size = 0;
- len += write_character(writer, utf8 + i - 1, &size);
+ len += write_character(writer, (const uint8_t*)utf8 + i - 1, &size);
+
if (size == 0) {
// Corrupt input, scan to start of next character
for (; i < n_bytes && (utf8[i] & 0x80); ++i) {}
@@ -372,7 +373,7 @@ write_text(SerdWriter* writer, TextContext ctx,
static size_t
uri_sink(const void* buf, size_t len, void* stream)
{
- return write_uri((SerdWriter*)stream, (const uint8_t*)buf, len);
+ return write_uri((SerdWriter*)stream, (const char*)buf, len);
}
static void
@@ -441,7 +442,7 @@ write_literal(SerdWriter* writer,
SerdStatementFlags flags)
{
if (supports_abbrev(writer) && datatype && datatype->buf) {
- const char* type_uri = (const char*)datatype->buf;
+ const char* type_uri = datatype->buf;
if (!strncmp(type_uri, NS_XSD, sizeof(NS_XSD) - 1) && (
!strcmp(type_uri + sizeof(NS_XSD) - 1, "boolean") ||
!strcmp(type_uri + sizeof(NS_XSD) - 1, "integer"))) {
@@ -449,7 +450,7 @@ write_literal(SerdWriter* writer,
return true;
} else if (!strncmp(type_uri, NS_XSD, sizeof(NS_XSD) - 1) &&
!strcmp(type_uri + sizeof(NS_XSD) - 1, "decimal") &&
- strchr((const char*)node->buf, '.') &&
+ strchr(node->buf, '.') &&
node->buf[node->n_bytes - 1] != '.') {
/* xsd:decimal literals without trailing digits, e.g. "5.", can
not be written bare in Turtle. We could add a 0 which is
@@ -482,7 +483,7 @@ write_literal(SerdWriter* writer,
// Return true iff `buf` is a valid prefixed name suffix
static inline bool
-is_name(const uint8_t* buf, const size_t len)
+is_name(const char* buf, const size_t len)
{
// TODO: This is more strict than it should be.
for (size_t i = 0; i < len; ++i) {
@@ -510,10 +511,10 @@ write_uri_node(SerdWriter* const writer,
const bool has_scheme = serd_uri_string_has_scheme(node->buf);
if (field == FIELD_PREDICATE && supports_abbrev(writer)
- && !strcmp((const char*)node->buf, NS_RDF "type")) {
+ && !strcmp(node->buf, NS_RDF "type")) {
return sink("a", 1, writer) == 1;
} else if (supports_abbrev(writer)
- && !strcmp((const char*)node->buf, NS_RDF "nil")) {
+ && !strcmp(node->buf, NS_RDF "nil")) {
return sink("()", 2, writer) == 2;
} else if (has_scheme && (writer->style & SERD_STYLE_CURIED) &&
serd_env_qualify(writer->env, node, &prefix, &suffix) &&
@@ -618,9 +619,8 @@ write_blank(SerdWriter* const writer,
}
sink("_:", 2, writer);
- if (writer->bprefix && !strncmp((const char*)node->buf,
- (const char*)writer->bprefix,
- writer->bprefix_len)) {
+ if (writer->bprefix &&
+ !strncmp(node->buf, writer->bprefix, writer->bprefix_len)) {
sink(node->buf + writer->bprefix_len,
node->n_bytes - writer->bprefix_len,
writer);
@@ -682,11 +682,11 @@ write_list_obj(SerdWriter* writer,
const SerdNode* datatype,
const SerdNode* lang)
{
- if (!strcmp((const char*)object->buf, NS_RDF "nil")) {
+ if (!strcmp(object->buf, NS_RDF "nil")) {
--writer->indent;
write_sep(writer, SEP_LIST_END);
return true;
- } else if (!strcmp((const char*)predicate->buf, NS_RDF "first")) {
+ } else if (!strcmp(predicate->buf, NS_RDF "first")) {
write_sep(writer, SEP_LIST_SEP);
write_node(writer, object, datatype, lang, FIELD_OBJECT, flags);
}
@@ -901,15 +901,15 @@ serd_writer_set_error_sink(SerdWriter* writer,
}
void
-serd_writer_chop_blank_prefix(SerdWriter* writer,
- const uint8_t* prefix)
+serd_writer_chop_blank_prefix(SerdWriter* writer,
+ const char* prefix)
{
free(writer->bprefix);
writer->bprefix_len = 0;
writer->bprefix = NULL;
if (prefix) {
- writer->bprefix_len = strlen((const char*)prefix);
- writer->bprefix = (uint8_t*)malloc(writer->bprefix_len + 1);
+ writer->bprefix_len = strlen(prefix);
+ writer->bprefix = (char*)malloc(writer->bprefix_len + 1);
memcpy(writer->bprefix, prefix, writer->bprefix_len + 1);
}
}
@@ -1011,9 +1011,9 @@ serd_buffer_sink(const void* buf, size_t len, void* stream)
return len;
}
-uint8_t*
+char*
serd_buffer_sink_finish(SerdBuffer* stream)
{
serd_buffer_sink("", 1, stream);
- return (uint8_t*)stream->buf;
+ return (char*)stream->buf;
}