aboutsummaryrefslogtreecommitdiffstats
path: root/core.lv2/serd-0.1.0.h
diff options
context:
space:
mode:
Diffstat (limited to 'core.lv2/serd-0.1.0.h')
-rw-r--r--core.lv2/serd-0.1.0.h634
1 files changed, 0 insertions, 634 deletions
diff --git a/core.lv2/serd-0.1.0.h b/core.lv2/serd-0.1.0.h
deleted file mode 100644
index 56511b1..0000000
--- a/core.lv2/serd-0.1.0.h
+++ /dev/null
@@ -1,634 +0,0 @@
-/*
- Copyright 2011 David Robillard <http://drobilla.net>
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
- OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/**
- @file serd.h API for Serd, a lightweight RDF syntax library.
-*/
-
-#ifndef SERD_SERD_H
-#define SERD_SERD_H
-
-#include <stdbool.h>
-#include <stddef.h>
-#include <stdint.h>
-#include <stdio.h>
-
-#ifdef SERD_SHARED
- #if defined _WIN32 || defined __CYGWIN__
- #define SERD_LIB_IMPORT __declspec(dllimport)
- #define SERD_LIB_EXPORT __declspec(dllexport)
- #else
- #define SERD_LIB_IMPORT __attribute__ ((visibility("default")))
- #define SERD_LIB_EXPORT __attribute__ ((visibility("default")))
- #endif
- #ifdef SERD_INTERNAL
- #define SERD_API SERD_LIB_EXPORT
- #else
- #define SERD_API SERD_LIB_IMPORT
- #endif
-#else
- #define SERD_API
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- @defgroup serd Serd
- A lightweight RDF syntax library.
- @{
-*/
-
-/**
- Environment (namespace prefixes).
-
- A SerdEnv represents a set of namespace prefixes, and is used to resolve
- CURIEs to full URIs.
-*/
-typedef struct SerdEnvImpl* SerdEnv;
-
-/**
- RDF reader.
-
- A SerdReader parses RDF by reading some syntax and calling user-provided
- sink functions as input is read (much like an XML SAX parser).
-*/
-typedef struct SerdReaderImpl* SerdReader;
-
-/**
- Read state.
-
- This represents state (context) necessary for fully resolving URIs during a
- read (i.e. the base URI and namespace prefixes). It is implemented
- separately from SerdReader so the reader can avoid the overhead in cases
- where this information is unnecessary (e.g. streaming reserialisation).
-*/
-typedef struct SerdReadStateImpl* SerdReadState;
-
-/**
- RDF writer.
-
- A SerdWriter provides a number of functions to allow writing RDF syntax out
- to some stream. These functions are deliberately compatible with the sink
- functions used by SerdReader, so a reader can be directly connected to a
- writer to re-serialise a document.
-*/
-typedef struct SerdWriterImpl* SerdWriter;
-
-/**
- RDF syntax type.
-*/
-typedef enum {
- /**
- Turtle - Terse RDF Triple Language (UTF-8).
- @see <a href="http://www.w3.org/TeamSubmission/turtle/">Turtle</a>
- */
- SERD_TURTLE = 1,
-
- /**
- NTriples - Line-based RDF triples (ASCII).
- @see <a href="http://www.w3.org/TR/rdf-testcases#ntriples">NTriples</a>
- */
- SERD_NTRIPLES = 2
-} SerdSyntax;
-
-/**
- Type of a syntactic RDF node.
-
- This is more precise than the type of an abstract RDF node. An abstract node
- is either a resource, literal, or blank. In syntax there are two ways to
- refer to both a resource (by URI or CURIE) and a blank (by ID or
- anonymously).
-
- Serd represents all nodes as an unquoted UTF-8 string "value" associated
- with a @ref SerdType, which is precise enough to preserve the syntactic
- information required for streaming abbreviation. A non-abbreviating sink may
- simply consider @ref SERD_ANON_BEGIN and @ref SERD_ANON equivalent to
- @ref SERD_BLANK_ID.
-*/
-typedef enum {
- /**
- The type of a nonexistent node.
-
- This type is occasionally useful, but is never emitted by the reader.
- */
- SERD_NOTHING = 0,
-
- /**
- Literal value.
-
- A literal optionally has either an associated language, or an associated
- datatype (not both).
- */
- SERD_LITERAL = 1,
-
- /**
- URI (absolute or relative).
-
- Value is an unquoted URI string, which is either a relative reference
- with respect to the current base URI, or an absolute URI. A URI is an ID
- with universal scope.
- @see <a href="http://tools.ietf.org/html/rfc3986">RFC3986</a>.
- */
- SERD_URI = 2,
-
- /**
- CURIE, a shortened URI.
-
- Value is an unquoted CURIE string relative to the current environment,
- e.g. "rdf:type".
- @see <a href="http://www.w3.org/TR/curie">CURIE Syntax 1.0</a>
- */
- SERD_CURIE = 3,
-
- /**
- A blank node ID.
-
- Value is a blank node ID, e.g. "id3", which is valid only in this
- serialisation.
- @see <a href="http://www.w3.org/TeamSubmission/turtle#nodeID">Turtle
- <tt>nodeID</tt></a>
- */
- SERD_BLANK_ID = 4,
-
- /**
- The first reference to an anonymous (inlined) blank node.
-
- Value is identical to a @ref SERD_BLANK_ID value (i.e. this type may be
- safely considered equivalent to @ref SERD_BLANK_ID).
- */
- SERD_ANON_BEGIN = 5,
-
- /**
- An anonymous blank node.
-
- Value is identical to a @ref SERD_BLANK_ID value (i.e. this type may be
- safely considered equivalent to @ref SERD_BLANK_ID).
- */
- SERD_ANON = 6
-} SerdType;
-
-/**
- @name SerdURI
- @{
-*/
-
-/**
- An unterminated string fragment.
-*/
-typedef struct {
- const uint8_t* buf; /**< Start of chunk */
- size_t len; /**< Length of chunk in bytes */
-} SerdChunk;
-
-/**
- A parsed URI.
-
- This struct directly refers to chunks in other strings, it does not own any
- memory itself. Thus, URIs can be parsed and/or resolved against a base URI
- in-place without allocating memory.
-*/
-typedef struct {
- SerdChunk scheme; /**< Scheme */
- SerdChunk authority; /**< Authority */
- SerdChunk path_base; /**< Path prefix if relative */
- SerdChunk path; /**< Path suffix */
- SerdChunk query; /**< Query */
- SerdChunk fragment; /**< Fragment */
-} SerdURI;
-
-static const SerdURI SERD_URI_NULL = {{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}};
-
-/**
- Return true iff @a utf8 starts with a valid URI scheme.
-*/
-SERD_API
-bool
-serd_uri_string_has_scheme(const uint8_t* utf8);
-
-/**
- Parse @a utf8, writing result to @a out.
-*/
-SERD_API
-bool
-serd_uri_parse(const uint8_t* utf8, SerdURI* out);
-
-/**
- Set @a out to @a uri resolved against @a base.
-*/
-SERD_API
-void
-serd_uri_resolve(const SerdURI* uri, const SerdURI* base, SerdURI* out);
-
-/**
- Sink function for raw string output.
-*/
-typedef size_t (*SerdSink)(const void* buf, size_t len, void* stream);
-
-/**
- Serialise @a uri with a series of calls to @a sink.
-*/
-SERD_API
-size_t
-serd_uri_serialise(const SerdURI* uri, SerdSink sink, void* stream);
-
-/**
- @}
- @name SerdNode
- @{
-*/
-
-/**
- A syntactic RDF node.
-*/
-typedef struct {
- SerdType type;
- size_t n_bytes; /**< Size in bytes (including null) */
- size_t n_chars; /**< Length in characters */
- const uint8_t* buf; /**< Buffer */
-} SerdNode;
-
-static const SerdNode SERD_NODE_NULL = { SERD_NOTHING, 0, 0, 0 };
-
-/**
- Make a (shallow) node from @a str.
-
- This measures, but does not copy, @a str. No memory is allocated.
-*/
-SERD_API
-SerdNode
-serd_node_from_string(SerdType type, const uint8_t* str);
-
-/**
- Make a deep copy of @a node.
-
- @return a node that the caller must free with @ref serd_node_free.
-*/
-SERD_API
-SerdNode
-serd_node_copy(const SerdNode* node);
-
-/**
- Simple wrapper for serd_node_new_uri to resolve a URI node.
-*/
-SERD_API
-SerdNode
-serd_node_new_uri_from_node(const SerdNode* uri_node,
- const SerdURI* base,
- SerdURI* out);
-
-/**
- Simple wrapper for serd_node_new_uri to resolve a URI string.
-*/
-SERD_API
-SerdNode
-serd_node_new_uri_from_string(const uint8_t* str,
- const SerdURI* base,
- SerdURI* out);
-
-/**
- Create a new node by serialising @a uri into a new string.
-
- @param uri The URI to parse and serialise.
-
- @param base Base URI to resolve @a uri against (or NULL for no resolution).
-
- @param out Set to the parsing of the new URI (i.e. points only to
- memory owned by the new returned node).
-*/
-SERD_API
-SerdNode
-serd_node_new_uri(const SerdURI* uri, const SerdURI* base, SerdURI* out);
-
-/**
- Free any data owned by @a node.
-
- Note that if @a node is itself dynamically allocated (which is not the case
- for nodes created internally by serd), it will not be freed.
-*/
-SERD_API
-void
-serd_node_free(SerdNode* node);
-
-/**
- @}
- @name Handlers
- @{
-*/
-
-/**
- Sink (callback) for base URI changes.
-
- Called whenever the base URI of the serialisation changes.
-*/
-typedef bool (*SerdBaseSink)(void* handle,
- const SerdNode* uri);
-
-/**
- Sink (callback) for namespace definitions.
-
- Called whenever a prefix is defined in the serialisation.
-*/
-typedef bool (*SerdPrefixSink)(void* handle,
- const SerdNode* name,
- const SerdNode* uri);
-
-/**
- Sink (callback) for statements.
-
- Called for every RDF statement in the serialisation.
-*/
-typedef bool (*SerdStatementSink)(void* handle,
- const SerdNode* graph,
- const SerdNode* subject,
- const SerdNode* predicate,
- const SerdNode* object,
- const SerdNode* object_datatype,
- const SerdNode* object_lang);
-
-/**
- Sink (callback) for anonymous node end markers.
-
- This is called to indicate that the anonymous node with the given
- @a value will no longer be referred to by any future statements
- (i.e. the anonymous serialisation of the node is finished).
-*/
-typedef bool (*SerdEndSink)(void* handle,
- const SerdNode* node);
-
-/**
- @}
- @name SerdEnv
- @{
-*/
-
-/**
- Create a new environment.
-*/
-SERD_API
-SerdEnv
-serd_env_new();
-
-/**
- Free @a ns.
-*/
-SERD_API
-void
-serd_env_free(SerdEnv env);
-
-/**
- Add namespace @a uri to @a ns using prefix @a name.
-*/
-SERD_API
-void
-serd_env_add(SerdEnv env,
- const SerdNode* name,
- const SerdNode* uri);
-
-/**
- Qualify @a into a CURIE if possible.
-*/
-SERD_API
-bool
-serd_env_qualify(const SerdEnv env,
- const SerdNode* uri,
- SerdNode* prefix,
- SerdChunk* suffix);
-
-/**
- Expand @a curie.
-*/
-SERD_API
-bool
-serd_env_expand(const SerdEnv env,
- const SerdNode* curie,
- SerdChunk* uri_prefix,
- SerdChunk* uri_suffix);
-
-/**
- Call @a func for each prefix defined in @a env.
-*/
-SERD_API
-void
-serd_env_foreach(const SerdEnv env,
- SerdPrefixSink func,
- void* handle);
-
-/**
- @}
- @name SerdReader
- @{
-*/
-
-/**
- Create a new RDF reader.
-*/
-SERD_API
-SerdReader
-serd_reader_new(SerdSyntax syntax,
- void* handle,
- SerdBaseSink base_sink,
- SerdPrefixSink prefix_sink,
- SerdStatementSink statement_sink,
- SerdEndSink end_sink);
-
-/**
- Set a prefix to be added to all blank node identifiers.
-
- This is useful when multiple files are to be parsed into the same output
- (e.g. a store, or other files). Since Serd preserves blank node IDs, this
- could cause conflicts where two non-equivalent blank nodes are merged,
- resulting in corrupt data. By setting a unique blank node prefix for each
- parsed file, this can be avoided, while preserving blank node names.
-*/
-SERD_API
-void
-serd_reader_set_blank_prefix(SerdReader reader,
- const uint8_t* prefix);
-
-/**
- Read @a file.
-*/
-SERD_API
-bool
-serd_reader_read_file(SerdReader reader,
- FILE* file,
- const uint8_t* name);
-
-/**
- Read @a utf8.
-*/
-SERD_API
-bool
-serd_reader_read_string(SerdReader me, const uint8_t* utf8);
-
-/**
- Free @a reader.
-*/
-SERD_API
-void
-serd_reader_free(SerdReader reader);
-
-/**
- Create a new read state with the given initial base URI and environment.
-
- A reference to @a env will be kept, and @a env will be modified as the
- state is modified.
-*/
-SERD_API
-SerdReadState
-serd_read_state_new(SerdEnv env,
- const uint8_t* base_uri_str);
-
-/**
- Free @a state.
-*/
-SERD_API
-void
-serd_read_state_free(SerdReadState state);
-
-/**
- Expand @a node to a full URI.
-
- @param node A CURIE or URI node to expand and/or resolve.
-*/
-SERD_API
-SerdNode
-serd_read_state_expand(SerdReadState state,
- const SerdNode* node);
-
-/**
- Get the current base URI.
-*/
-SERD_API
-SerdNode
-serd_read_state_get_base_uri(SerdReadState state,
- SerdURI* out);
-
-/**
- Set the current base URI.
-*/
-SERD_API
-bool
-serd_read_state_set_base_uri(SerdReadState state,
- const SerdNode* uri_node);
-
-/**
- Set a namespace prefix.
-*/
-SERD_API
-bool
-serd_read_state_set_prefix(SerdReadState state,
- const SerdNode* name,
- const SerdNode* uri_node);
-
-/**
- @}
- @name SerdWriter
- @{
-*/
-
-typedef enum {
- SERD_STYLE_ABBREVIATED = 1, /**< Abbreviate triples when possible. */
- SERD_STYLE_ASCII = 1 << 1, /**< Escape all non-ASCII characters. */
- SERD_STYLE_RESOLVED = 1 << 2, /**< Resolve relative URIs against base. */
- SERD_STYLE_CURIED = 1 << 3 /**< Shorted URIs into CURIEs. */
-} SerdStyle;
-
-/**
- Create a new RDF writer.
-*/
-SERD_API
-SerdWriter
-serd_writer_new(SerdSyntax syntax,
- SerdStyle style,
- SerdEnv env,
- const SerdURI* base_uri,
- SerdSink sink,
- void* stream);
-
-/**
- Free @a writer.
-*/
-SERD_API
-void
-serd_writer_free(SerdWriter writer);
-
-/**
- Set the current output base URI (and emit directive if applicable).
-*/
-SERD_API
-void
-serd_writer_set_base_uri(SerdWriter writer,
- const SerdURI* uri);
-
-/**
- Set a namespace prefix (and emit directive if applicable).
-*/
-SERD_API
-bool
-serd_writer_set_prefix(SerdWriter writer,
- const SerdNode* name,
- const SerdNode* uri);
-
-/**
- Write a statement.
-*/
-SERD_API
-bool
-serd_writer_write_statement(SerdWriter writer,
- const SerdNode* graph,
- const SerdNode* subject,
- const SerdNode* predicate,
- const SerdNode* object,
- const SerdNode* object_datatype,
- const SerdNode* object_lang);
-
-/**
- Mark the end of an anonymous node's description.
-*/
-SERD_API
-bool
-serd_writer_end_anon(SerdWriter writer,
- const SerdNode* node);
-
-/**
- Finish a write.
-*/
-SERD_API
-void
-serd_writer_finish(SerdWriter writer);
-
-/**
- @}
- @}
-*/
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif /* SERD_SERD_H */