LMMS
Loading...
Searching...
No Matches
sord.h
Go to the documentation of this file.
1/*
2 Copyright 2011-2016 David Robillard <http://drobilla.net>
3
4 Permission to use, copy, modify, and/or distribute this software for any
5 purpose with or without fee is hereby granted, provided that the above
6 copyright notice and this permission notice appear in all copies.
7
8 THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15*/
16
20
21#ifndef SORD_SORD_H
22#define SORD_SORD_H
23
24#include <stddef.h>
25#include <stdint.h>
26#include <stdio.h>
27
28#include "serd/serd.h"
29
30#ifdef SORD_SHARED
31# ifdef _WIN32
32# define SORD_LIB_IMPORT __declspec(dllimport)
33# define SORD_LIB_EXPORT __declspec(dllexport)
34# else
35# define SORD_LIB_IMPORT __attribute__((visibility("default")))
36# define SORD_LIB_EXPORT __attribute__((visibility("default")))
37# endif
38# ifdef SORD_INTERNAL
39# define SORD_API SORD_LIB_EXPORT
40# else
41# define SORD_API SORD_LIB_IMPORT
42# endif
43#else
44# define SORD_API
45#endif
46
47#ifdef __cplusplus
48extern "C" {
49#else
50# include <stdbool.h>
51#endif
52
61
66typedef struct SordWorldImpl SordWorld;
67
75typedef struct SordModelImpl SordModel;
76
85
89typedef struct SordIterImpl SordIter;
90
97typedef struct SordNodeImpl SordNode;
98
104typedef const SordNode* SordQuad[4];
105
115
119typedef enum {
124
128typedef enum {
130 SORD_SOP = 1 << 1,
131 SORD_OPS = 1 << 2,
132 SORD_OSP = 1 << 3,
133 SORD_PSO = 1 << 4,
134 SORD_POS = 1 << 5
136
141
150sord_world_new(void);
151
156void
158
166void
168 SerdErrorSink error_sink,
169 void* handle);
170
176
186
193 const uint8_t* str,
194 const uint8_t* base_uri);
195
205
215 SordNode* datatype,
216 const uint8_t* str,
217 const char* lang);
218
228
233void
235
242
247const uint8_t*
249
254const uint8_t*
255sord_node_get_string_counted(const SordNode* node, size_t* bytes);
256
262const uint8_t*
264 size_t* bytes,
265 size_t* chars);
266
271const char*
273
280
287
296bool
298
305bool
307 const SordNode* b);
308
315const SerdNode*
317
326 SerdEnv* env,
327 const SerdNode* node,
328 const SerdNode* datatype,
329 const SerdNode* lang);
330
336
351 unsigned indices,
352 bool graphs);
353
358void
359sord_free(SordModel* model);
360
367
374size_t
376
381size_t
382sord_num_quads(const SordModel* model);
383
389sord_begin(const SordModel* model);
390
397sord_find(SordModel* model, const SordQuad pat);
398
406 const SordNode* s,
407 const SordNode* p,
408 const SordNode* o,
409 const SordNode* g);
419sord_get(SordModel* model,
420 const SordNode* s,
421 const SordNode* p,
422 const SordNode* o,
423 const SordNode* g);
424
429bool
430sord_ask(SordModel* model,
431 const SordNode* s,
432 const SordNode* p,
433 const SordNode* o,
434 const SordNode* g);
435
440uint64_t
441sord_count(SordModel* model,
442 const SordNode* s,
443 const SordNode* p,
444 const SordNode* o,
445 const SordNode* g);
446
453bool
454sord_contains(SordModel* model, const SordQuad pat);
455
464bool
465sord_add(SordModel* model, const SordQuad quad);
466
474void
475sord_remove(SordModel* model, const SordQuad quad);
476
488sord_erase(SordModel* model, SordIter* iter);
489
495
502 SerdEnv* env);
503
508void
510
519 const SerdNode* uri);
520
529 const SerdNode* name,
530 const SerdNode* uri);
531
540 SerdStatementFlags flags,
541 const SerdNode* graph,
542 const SerdNode* subject,
543 const SerdNode* predicate,
544 const SerdNode* object,
545 const SerdNode* object_datatype,
546 const SerdNode* object_lang);
547
553
558void
559sord_iter_get(const SordIter* iter, SordQuad quad);
560
567const SordNode*
568sord_iter_get_node(const SordIter* iter, SordQuadIndex index);
569
574const SordModel*
576
581bool
583
588bool
589sord_iter_end(const SordIter* iter);
590
595void
597
603
612bool
613sord_quad_match(const SordQuad x, const SordQuad y);
614
620
627 SerdEnv* env,
628 SerdSyntax syntax,
629 SordNode* graph);
630
635bool
636sord_write(SordModel* model,
637 SerdWriter* writer,
638 SordNode* graph);
639
646bool
648 SerdWriter* writer);
649
654
655#ifdef __cplusplus
656} /* extern "C" */
657#endif
658
659#endif /* SORD_SORD_H */
uint8_t a
Definition Spc_Cpu.h:141
int y
Definition inflate.c:1588
int g
Definition inflate.c:1573
unsigned s
Definition inflate.c:1555
unsigned x[BMAX+1]
Definition inflate.c:1586
static const char * name
Definition pugl.h:1582
SerdStatus(* SerdErrorSink)(void *SERD_NULLABLE handle, const SerdError *SERD_NONNULL error)
Definition serd.h:607
SerdStatus
Return status code.
Definition serd.h:100
SerdSyntax
RDF syntax type.
Definition serd.h:113
struct SerdReaderImpl SerdReader
Streaming parser that reads a text stream and writes to a statement sink.
Definition serd.h:94
uint32_t SerdStatementFlags
Bitwise OR of SerdStatementFlag values.
Definition serd.h:133
struct SerdWriterImpl SerdWriter
Streaming serialiser that writes a text stream as statements are pushed.
Definition serd.h:97
struct SerdEnvImpl SerdEnv
Lexical environment for relative URIs or CURIEs (base URI and namespaces).
Definition serd.h:91
uint32_t SerdNodeFlags
Bitwise OR of SerdNodeFlag values.
Definition serd.h:196
SORD_API SerdStatus sord_inserter_set_prefix(SordInserter *inserter, const SerdNode *name, const SerdNode *uri)
Definition syntax.c:52
SORD_API SordNode * sord_node_copy(const SordNode *node)
Definition sord.c:1258
SORD_API SordIter * sord_begin(const SordModel *model)
Definition sord.c:834
SORD_API SordInserter * sord_inserter_new(SordModel *model, SerdEnv *env)
Definition syntax.c:31
SORD_API bool sord_write(SordModel *model, SerdWriter *writer, SordNode *graph)
Definition syntax.c:179
SORD_API SordNode * sord_node_get_datatype(const SordNode *node)
Definition sord.c:1029
struct SordWorldImpl SordWorld
Definition sord.h:57
SORD_API const uint8_t * sord_node_get_string(const SordNode *node)
Definition sord.c:997
SORD_API const char * sord_node_get_language(const SordNode *node)
Definition sord.c:1020
SORD_API SerdStatus sord_erase(SordModel *model, SordIter *iter)
Definition sord.c:1334
SORD_API const SerdNode * sord_node_to_serd_node(const SordNode *node)
Definition sord.c:1240
SORD_API SordNode * sord_new_blank(SordWorld *world, const uint8_t *str)
Definition sord.c:1132
SORD_API bool sord_contains(SordModel *model, const SordQuad pat)
Definition sord.c:966
SORD_API bool sord_iter_end(const SordIter *iter)
Definition sord.c:575
SORD_API SordNodeType sord_node_get_type(const SordNode *node)
Definition sord.c:983
SORD_API const SordModel * sord_iter_get_model(SordIter *iter)
Definition sord.c:484
SORD_API SerdNodeFlags sord_node_get_flags(const SordNode *node)
Definition sord.c:1035
SORD_API void sord_remove(SordModel *model, const SordQuad tup)
Definition sord.c:1307
SORD_API const SordNode * sord_iter_get_node(const SordIter *iter, SordQuadIndex index)
Definition sord.c:499
SORD_API bool sord_add(SordModel *model, const SordQuad tup)
Definition sord.c:1274
struct SordIterImpl SordIter
Definition sord.h:80
SORD_API SordIter * sord_search(SordModel *model, const SordNode *s, const SordNode *p, const SordNode *o, const SordNode *g)
Definition sord.c:903
SORD_API SordIter * sord_find(SordModel *model, const SordQuad pat)
Definition sord.c:846
SORD_API bool sord_quad_match(const SordQuad x, const SordQuad y)
Definition sord.c:334
SORD_API void sord_iter_free(SordIter *iter)
Definition sord.c:581
SORD_API SordModel * sord_new(SordWorld *world, unsigned indices, bool graphs)
Definition sord.c:693
SordNodeType
Definition sord.h:110
SORD_API const uint8_t * sord_node_get_string_measured(const SordNode *node, size_t *bytes, size_t *chars)
Definition sord.c:1010
SORD_API uint64_t sord_count(SordModel *model, const SordNode *s, const SordNode *p, const SordNode *o, const SordNode *g)
Definition sord.c:950
struct SordInserterImpl SordInserter
Definition sord.h:75
SORD_API bool sord_node_equals(const SordNode *a, const SordNode *b)
Definition sord.c:314
struct SordNodeImpl SordNode
Definition sord.h:88
SORD_API void sord_node_free(SordWorld *world, SordNode *node)
Definition sord.c:1246
SORD_API SordNode * sord_node_from_serd_node(SordWorld *world, SerdEnv *env, const SerdNode *node, const SerdNode *datatype, const SerdNode *lang)
Definition sord.c:1171
SORD_API const uint8_t * sord_node_get_string_counted(const SordNode *node, size_t *bytes)
Definition sord.c:1003
SORD_API size_t sord_num_quads(const SordModel *model)
Definition sord.c:822
SORD_API size_t sord_num_nodes(const SordWorld *world)
Definition sord.c:828
SORD_API SordWorld * sord_world_new(void)
Definition sord.c:214
SORD_API void sord_free(SordModel *model)
Definition sord.c:781
SORD_API bool sord_iter_next(SordIter *iter)
Definition sord.c:564
SORD_API SerdStatus sord_inserter_write_statement(SordInserter *inserter, SerdStatementFlags flags, const SerdNode *graph, const SerdNode *subject, const SerdNode *predicate, const SerdNode *object, const SerdNode *object_datatype, const SerdNode *object_lang)
Definition syntax.c:60
SORD_API SordWorld * sord_get_world(SordModel *model)
Definition sord.c:816
SORD_API SordNode * sord_new_literal(SordWorld *world, SordNode *datatype, const uint8_t *str, const char *lang)
Definition sord.c:1158
SORD_API SordNode * sord_new_uri(SordWorld *world, const uint8_t *uri)
Definition sord.c:1095
SORD_API bool sord_write_iter(SordIter *iter, SerdWriter *writer)
Definition syntax.c:187
const SordNode * SordQuad[4]
Definition sord.h:95
SORD_API void sord_iter_get(const SordIter *iter, SordQuad tup)
Definition sord.c:490
SORD_API void sord_world_free(SordWorld *world)
Definition sord.c:237
SORD_API SerdReader * sord_new_reader(SordModel *model, SerdEnv *env, SerdSyntax syntax, SordNode *graph)
Definition syntax.c:95
SordQuadIndex
Definition sord.h:100
SORD_API bool sord_ask(SordModel *model, const SordNode *s, const SordNode *p, const SordNode *o, const SordNode *g)
Definition sord.c:939
SORD_API bool sord_node_is_inline_object(const SordNode *node)
Definition sord.c:1041
struct SordModelImpl SordModel
Definition sord.h:66
SORD_API void sord_inserter_free(SordInserter *inserter)
Definition syntax.c:40
SORD_API SordNode * sord_get(SordModel *model, const SordNode *s, const SordNode *p, const SordNode *o, const SordNode *g)
Definition sord.c:914
SORD_API SerdStatus sord_inserter_set_base_uri(SordInserter *inserter, const SerdNode *uri)
Definition syntax.c:46
SORD_API void sord_world_set_error_sink(SordWorld *world, SerdErrorSink error_sink, void *handle)
Definition sord.c:245
SordIndexOption
Definition sord.h:119
SORD_API SordNode * sord_new_relative_uri(SordWorld *world, const uint8_t *uri, const uint8_t *base_uri)
Definition sord.c:1102
@ SORD_URI
Definition sord.h:111
@ SORD_LITERAL
Definition sord.h:113
@ SORD_BLANK
Definition sord.h:112
@ SORD_PREDICATE
Definition sord.h:102
@ SORD_OBJECT
Definition sord.h:103
@ SORD_SUBJECT
Definition sord.h:101
@ SORD_GRAPH
Definition sord.h:104
@ SORD_SOP
Definition sord.h:121
@ SORD_OPS
Definition sord.h:122
@ SORD_SPO
Definition sord.h:120
@ SORD_POS
Definition sord.h:125
@ SORD_PSO
Definition sord.h:124
@ SORD_OSP
Definition sord.h:123
#define SORD_API
Definition sord.h:37
static SordNode * uri(SordWorld *world, int num)
Definition sord_test.c:47
static LilvWorld * world
Definition lilv_test.c:64
unsigned char uint8_t
Definition mid.cpp:98
A syntactic RDF node.
Definition serd.h:199
Definition syntax.c:25
Definition sord.c:158
Definition sord.c:136
Definition sord_internal.h:44
SerdNode node
Serd node.
Definition sord_internal.h:45
Definition sord.c:129
uch * p
Definition crypt.c:594
b
Definition crypt.c:628