aboutsummaryrefslogtreecommitdiffstats
path: root/include/serd/world.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/serd/world.h')
-rw-r--r--include/serd/world.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/include/serd/world.h b/include/serd/world.h
index abf2999c..fe381628 100644
--- a/include/serd/world.h
+++ b/include/serd/world.h
@@ -7,6 +7,9 @@
#include "serd/attributes.h"
#include "serd/error.h"
#include "serd/node.h"
+#include "serd/status.h"
+
+#include <stddef.h>
SERD_BEGIN_DECLS
@@ -19,6 +22,11 @@ SERD_BEGIN_DECLS
/// Global library state
typedef struct SerdWorldImpl SerdWorld;
+/// Resource limits to control allocation
+typedef struct {
+ size_t reader_stack_size;
+} SerdLimits;
+
/**
Create a new Serd World.
@@ -33,6 +41,27 @@ SERD_API void
serd_world_free(SerdWorld* SERD_NULLABLE world);
/**
+ Return the current resource limits.
+
+ These determine how much memory is allocated for reading and writing (where
+ the required stack space depends on the input data. The defaults use about
+ a megabyte and over 100 levels of nesting, which is more than enough for
+ most data.
+*/
+SERD_API SerdLimits
+serd_world_limits(const SerdWorld* SERD_NONNULL world);
+
+/**
+ Set the current resource limits.
+
+ This updates the "current" limits, that is, those that will be used after
+ this call. It can be used to configure allocation sizes before calling some
+ other function like serd_reader_new() that uses the current limits.
+*/
+SERD_API SerdStatus
+serd_world_set_limits(SerdWorld* SERD_NONNULL world, SerdLimits limits);
+
+/**
Return a unique blank node.
The returned node is valid only until the next time serd_world_get_blank()