aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2018-05-12 17:56:27 +0200
committerDavid Robillard <d@drobilla.net>2020-10-27 13:13:58 +0100
commit8b20b3e3bfd186b7b0bbd082a979c7fb86a52479 (patch)
treea4a8d9722f751ad8dab1e7c021b86f106d33dee6 /src
parent40c90e819d20d6933504ccb639896be223e10c3c (diff)
downloadserd-8b20b3e3bfd186b7b0bbd082a979c7fb86a52479.tar.gz
serd-8b20b3e3bfd186b7b0bbd082a979c7fb86a52479.tar.bz2
serd-8b20b3e3bfd186b7b0bbd082a979c7fb86a52479.zip
Add serd_world_get_blank()
Diffstat (limited to 'src')
-rw-r--r--src/world.c24
-rw-r--r--src/world.h3
2 files changed, 25 insertions, 2 deletions
diff --git a/src/world.c b/src/world.c
index 90033ff5..ebafcfef 100644
--- a/src/world.c
+++ b/src/world.c
@@ -18,6 +18,7 @@
#include "world.h"
+#include "node.h"
#include "serd_config.h"
#if defined(HAVE_POSIX_FADVISE)
@@ -30,6 +31,8 @@
#include <stdlib.h>
#include <string.h>
+#define BLANK_CHARS 11
+
FILE*
serd_world_fopen(SerdWorld* world, const char* path, const char* mode)
{
@@ -76,13 +79,30 @@ serd_world_errorf(const SerdWorld* world, SerdStatus st, const char* fmt, ...)
SerdWorld*
serd_world_new(void)
{
- return (SerdWorld*)calloc(1, sizeof(SerdWorld));
+ SerdWorld* world = (SerdWorld*)calloc(1, sizeof(SerdWorld));
+
+ world->blank_node = serd_node_new_blank("b0000000000");
+
+ return world;
}
void
serd_world_free(SerdWorld* world)
{
- free(world);
+ if (world) {
+ serd_node_free(world->blank_node);
+ free(world);
+ }
+}
+
+const SerdNode*
+serd_world_get_blank(SerdWorld* world)
+{
+ char* buf = serd_node_buffer(world->blank_node);
+ memset(buf, 0, BLANK_CHARS + 1);
+ world->blank_node->n_bytes = snprintf(
+ buf, BLANK_CHARS, "b%u", ++world->next_blank_id);
+ return world->blank_node;
}
void
diff --git a/src/world.h b/src/world.h
index 7aaf3689..6d32b529 100644
--- a/src/world.h
+++ b/src/world.h
@@ -19,11 +19,14 @@
#include "serd/serd.h"
+#include <stdint.h>
#include <stdio.h>
struct SerdWorldImpl {
SerdErrorSink error_sink;
void* error_handle;
+ uint32_t next_blank_id;
+ SerdNode* blank_node;
};
FILE* serd_world_fopen(SerdWorld* world, const char* path, const char* mode);