aboutsummaryrefslogtreecommitdiffstats
path: root/src/world.c
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2018-10-28 14:15:28 +0100
committerDavid Robillard <d@drobilla.net>2020-10-27 13:13:58 +0100
commit2c70b584b6b110a85f0a7b1491b40c0de37b7f93 (patch)
treee12e4b90e70eb42566f36ed16db2e630dc6e2303 /src/world.c
parentbd945cd3a0f49718fa40469aee9efc6a90266612 (diff)
downloadserd-2c70b584b6b110a85f0a7b1491b40c0de37b7f93.tar.gz
serd-2c70b584b6b110a85f0a7b1491b40c0de37b7f93.tar.bz2
serd-2c70b584b6b110a85f0a7b1491b40c0de37b7f93.zip
Cache commonly used nodes in the world
Diffstat (limited to 'src/world.c')
-rw-r--r--src/world.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/world.c b/src/world.c
index 3d632f05..800a8bbc 100644
--- a/src/world.c
+++ b/src/world.c
@@ -21,6 +21,7 @@
#include "cursor.h"
#include "node.h"
#include "serd_config.h"
+#include "serd_internal.h"
#if defined(HAVE_POSIX_FADVISE)
# include <fcntl.h>
@@ -84,8 +85,18 @@ SerdWorld*
serd_world_new(void)
{
SerdWorld* world = (SerdWorld*)calloc(1, sizeof(SerdWorld));
+ SerdNodes* nodes = serd_nodes_new();
+
+ world->rdf_first = serd_nodes_manage(nodes, serd_new_uri(NS_RDF "first"));
+ world->rdf_nil = serd_nodes_manage(nodes, serd_new_uri(NS_RDF "nil"));
+ world->rdf_rest = serd_nodes_manage(nodes, serd_new_uri(NS_RDF "rest"));
+ world->rdf_type = serd_nodes_manage(nodes, serd_new_uri(NS_RDF "type"));
+ world->xsd_boolean = serd_nodes_manage(nodes, serd_new_uri(NS_XSD "boolean"));
+ world->xsd_decimal = serd_nodes_manage(nodes, serd_new_uri(NS_XSD "decimal"));
+ world->xsd_integer = serd_nodes_manage(nodes, serd_new_uri(NS_XSD "integer"));
world->blank_node = serd_new_blank("b0000000000");
+ world->nodes = nodes;
return world;
}
@@ -95,6 +106,7 @@ serd_world_free(SerdWorld* world)
{
if (world) {
serd_node_free(world->blank_node);
+ serd_nodes_free(world->nodes);
free(world);
}
}