diff options
Diffstat (limited to 'sratom')
-rw-r--r-- | sratom/sratom.h | 231 |
1 files changed, 0 insertions, 231 deletions
diff --git a/sratom/sratom.h b/sratom/sratom.h deleted file mode 100644 index 22cf39e..0000000 --- a/sratom/sratom.h +++ /dev/null @@ -1,231 +0,0 @@ -/* - Copyright 2012-2016 David Robillard <http://drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ - -/** - @file sratom.h API for Sratom, an LV2 Atom RDF serialisation library. -*/ - -#ifndef SRATOM_SRATOM_H -#define SRATOM_SRATOM_H - -#include "lv2/atom/atom.h" -#include "lv2/atom/forge.h" -#include "lv2/urid/urid.h" -#include "serd/serd.h" -#include "sord/sord.h" - -#include <stdbool.h> -#include <stdint.h> - -#ifdef SRATOM_SHARED -# ifdef _WIN32 -# define SRATOM_LIB_IMPORT __declspec(dllimport) -# define SRATOM_LIB_EXPORT __declspec(dllexport) -# else -# define SRATOM_LIB_IMPORT __attribute__((visibility("default"))) -# define SRATOM_LIB_EXPORT __attribute__((visibility("default"))) -# endif -# ifdef SRATOM_INTERNAL -# define SRATOM_API SRATOM_LIB_EXPORT -# else -# define SRATOM_API SRATOM_LIB_IMPORT -# endif -#else -# define SRATOM_API -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/** - @defgroup sratom Sratom - - A library for serialising LV2 Atoms. - - @{ -*/ - -/** - Atom serialiser. -*/ -typedef struct SratomImpl Sratom; - -/** - Mode for reading resources to LV2 Objects. - - This affects how resources (which are either blank nodes or have URIs) are - read by sratom_read(), since they may be read as simple references (a URI or - blank node ID) or a complete description (an atom "Object"). - - Currently, blank nodes are always read as Objects, but support for reading - blank node IDs may be added in the future. -*/ -typedef enum { - /** - Read blank nodes as Objects, and named resources as URIs. - */ - SRATOM_OBJECT_MODE_BLANK, - - /** - Read blank nodes and the main subject as Objects, and any other named - resources as URIs. The "main subject" is the subject parameter passed - to sratom_read(); if this is a resource it will be read as an Object, - but all other named resources encountered will be read as URIs. - */ - SRATOM_OBJECT_MODE_BLANK_SUBJECT -} SratomObjectMode; - -/** - Create a new Atom serialiser. -*/ -SRATOM_API -Sratom* -sratom_new(LV2_URID_Map* map); - -/** - Free an Atom serialisation. -*/ -SRATOM_API -void -sratom_free(Sratom* sratom); - -/** - Set the environment for reading or writing Turtle. - - This can be used to set namespace prefixes and a base URI for - sratom_to_turtle() and sratom_from_turtle(). -*/ -SRATOM_API -void -sratom_set_env(Sratom* sratom, - SerdEnv* env); - -/** - Set the sink(s) where sratom will write its output. - - This must be called before calling sratom_write(). -*/ -SRATOM_API -void -sratom_set_sink(Sratom* sratom, - const char* base_uri, - SerdStatementSink sink, - SerdEndSink end_sink, - void* handle); - -/** - Write pretty numeric literals. - - If `pretty_numbers` is true, numbers will be written as pretty Turtle - literals, rather than string literals with precise types. The cost of this - is that the types might get fudged on a round-trip to RDF and back. -*/ -SRATOM_API -void -sratom_set_pretty_numbers(Sratom* sratom, - bool pretty_numbers); - -/** - Configure how resources will be read to form LV2 Objects. -*/ -SRATOM_API -void -sratom_set_object_mode(Sratom* sratom, - SratomObjectMode object_mode); - -/** - Write an Atom to RDF. - The serialised atom is written to the sink set by sratom_set_sink(). - @return 0 on success, or a non-zero error code otherwise. -*/ -SRATOM_API -int -sratom_write(Sratom* sratom, - LV2_URID_Unmap* unmap, - uint32_t flags, - const SerdNode* subject, - const SerdNode* predicate, - uint32_t type_urid, - uint32_t size, - const void* body); - -/** - Read an Atom from RDF. - The resulting atom will be written to `forge`. -*/ -SRATOM_API -void -sratom_read(Sratom* sratom, - LV2_Atom_Forge* forge, - SordWorld* world, - SordModel* model, - const SordNode* node); - -/** - Serialise an Atom to a Turtle string. - The returned string must be free()'d by the caller. -*/ -SRATOM_API -char* -sratom_to_turtle(Sratom* sratom, - LV2_URID_Unmap* unmap, - const char* base_uri, - const SerdNode* subject, - const SerdNode* predicate, - uint32_t type, - uint32_t size, - const void* body); - -/** - Read an Atom from a Turtle string. - The returned atom must be free()'d by the caller. -*/ -SRATOM_API -LV2_Atom* -sratom_from_turtle(Sratom* sratom, - const char* base_uri, - const SerdNode* subject, - const SerdNode* predicate, - const char* str); - -/** - A convenient resizing sink for LV2_Atom_Forge. - The handle must point to an initialized SerdChunk. -*/ -SRATOM_API -LV2_Atom_Forge_Ref -sratom_forge_sink(LV2_Atom_Forge_Sink_Handle handle, - const void* buf, - uint32_t size); - -/** - The corresponding deref function for sratom_forge_sink. -*/ -SRATOM_API -LV2_Atom* -sratom_forge_deref(LV2_Atom_Forge_Sink_Handle handle, - LV2_Atom_Forge_Ref ref); - -/** - @} -*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* SRATOM_SRATOM_H */ |