Volksdata 1.0b7
RDF library
Loading...
Searching...
No Matches
store_interface.h
Go to the documentation of this file.
1
33
34
35#ifndef VOLK_STORE_INTERFACE_H
36#define VOLK_STORE_INTERFACE_H
37
38#include "volksdata/buffer.h"
39
40
45
47typedef enum {
62
68
70
72
74
86
87
89typedef enum {
92
93
94/*
95 * Store function types.
96 */
97
114typedef VOLK_rc (*store_setup_fn_t)(const char *id, bool clear);
115
116
128typedef void * (*store_new_fn_t)(const char *id, size_t size);
129
130
136typedef void (*store_free_fn_t)(void *store);
137
138
145typedef size_t (*store_size_fn_t)(const void *store);
146
147
154typedef char * (*store_id_fn_t)(const void *store);
155
156
157#if 0
164typedef VOLK_rc (*store_stat_fn_t)(void *store, void *stat);
165#endif
166
167
185 void *store, VOLK_StoreFlags flags, void **txn);
186
187
196typedef VOLK_rc (*store_txn_commit_fn_t)(void *txn);
197
198
205typedef void (*store_txn_abort_fn_t)(void *txn);
206
207
215 void *store, const VOLK_Buffer *old_c, const VOLK_Buffer *new_c,
216 void *udata);
217
218
223typedef void * (*store_add_init_fn_t)(
224 void *store, const VOLK_Buffer *sc, void *udata);
225
226
232 void *it, const VOLK_BufferTriple * sspo);
233
234
241typedef void (*store_add_abort_fn_t)(void *it);
242
243
248typedef VOLK_rc (*store_add_done_fn_t)(void *it);
249
250
256 void *store, const VOLK_Buffer *sterm, void *udata);
257
258
259/*
260 * Iterator function types.
261 */
262
267typedef void * (*store_lookup_fn_t)(
268 void *store,
269 const VOLK_Buffer *ss, const VOLK_Buffer *sp, const VOLK_Buffer *so,
270 const VOLK_Buffer *sc, void *udata, size_t *ct);
271
272
286typedef bool (*store_trp_exist_fn_t)(
287 void *store, const VOLK_BufferTriple *sspo, const VOLK_Buffer *sc);
288
289
295 void *it, VOLK_BufferTriple *sspo, VOLK_Buffer **ctx);
296
297
302typedef void (*iter_free_fn_t)(void * it);
303
304
309typedef void * (*iter_txn_fn_t)(void *it);
310
311
317 void *store,
318 const VOLK_Buffer *ss, const VOLK_Buffer *sp, const VOLK_Buffer *so,
319 const VOLK_Buffer *sc, void *udata, size_t *ct);
320
321
326typedef VOLK_Buffer ** (*store_ctx_list_fn_t)(void *store, void *txn);
327
328
329
330/*
331 * Iterface type definitions.
332 */
333
403
404
405/*
406 * Template for a new store and iterator implementation.
407 * These should be placed in the .c file where the interface functions are
408 * defined, and declared as `extern` in the related .h file.
409
410const VOLK_StoreInt my_store_int = {
411 .name = "My Store", // Truncated to 15 chars.
412 .features = VOLK_STORE_PERM | VOLK_STORE_IDX,
413
414 .setup_fn = my_setup_fn,
415 .new_fn = my_new_fn,
416 .free_fn = my_free_fn,
417
418 .size_fn = my_size_fn,
419 .id_fn = my_id_fn,
420
421 .txn_begin_fn = my_txn_begin_fn,
422 .txn_commit_fn = my_txn_commit_fn,
423 .txn_abort_fn = my_txn_abort_fn,
424
425 .ctx_update_fn = my_ctx_update_fn,
426
427 .add_init_fn = my_init_fn,
428 .add_iter_fn = my_iter_fn,
429 .add_abort_fn = my_add_abort_fn,
430 .add_done_fn = my_add_done_fn,
431 .add_term_fn = my_add_term_fn,
432
433 .lookup_fn = my_lookup_fn,
434 .lu_next_fn = my_iter_next_fn,
435 .lu_free_fn = my_iter_free_fn,
436 .iter_txn_fn = my_iter_txn_fn,
437
438 .remove_fn = my_remove_fn,
439
440 .ctx_list_fn = my_ctx_list_fn,
441};
442*/
443
445
446#endif // VOLK_STORE_INTERFACE_H
int VOLK_rc
Definition core.h:79
VOLK_rc(* store_update_ctx_fn_t)(void *store, const VOLK_Buffer *old_c, const VOLK_Buffer *new_c, void *udata)
Update the context of triples in a context-aware store.
void *(* iter_txn_fn_t)(void *it)
Prototype: get iterator active transaction handle.
void(* iter_free_fn_t)(void *it)
Prototype: free an iterator allocated by a lookup.
VOLK_rc(* store_remove_fn_t)(void *store, const VOLK_Buffer *ss, const VOLK_Buffer *sp, const VOLK_Buffer *so, const VOLK_Buffer *sc, void *udata, size_t *ct)
Prototype: delete triples by pattern matching.
VOLK_rc(* store_txn_begin_fn_t)(void *store, VOLK_StoreFlags flags, void **txn)
Begin a transaction.
VOLK_StoreFlags
Store flags passed to various operations.
void *(* store_add_init_fn_t)(void *store, const VOLK_Buffer *sc, void *udata)
Initialize bulk triple load.
void *(* store_lookup_fn_t)(void *store, const VOLK_Buffer *ss, const VOLK_Buffer *sp, const VOLK_Buffer *so, const VOLK_Buffer *sc, void *udata, size_t *ct)
Prototype: look up triples by pattern matching.
char *(* store_id_fn_t)(const void *store)
Prototype: get the store ID.
VOLK_Buffer **(* store_ctx_list_fn_t)(void *store, void *txn)
Prototype: Get index of all graph (context) URIs in a store.
void(* store_free_fn_t)(void *store)
Prototype: free store handle.
VOLK_rc(* store_setup_fn_t)(const char *id, bool clear)
Prototype: create any environment necessary for the store to work.
void *(* store_new_fn_t)(const char *id, size_t size)
Prototype: create a new store.
VOLK_rc(* store_txn_commit_fn_t)(void *txn)
Commit a transaction.
void(* store_add_abort_fn_t)(void *it)
Abort an add loop and free iterator.
VOLK_StoreFeature
Store feature flags.
VOLK_rc(* iter_next_fn_t)(void *it, VOLK_BufferTriple *sspo, VOLK_Buffer **ctx)
Prototype: yield the matching triples and advance the iterator.
bool(* store_trp_exist_fn_t)(void *store, const VOLK_BufferTriple *sspo, const VOLK_Buffer *sc)
Prototype: check for existence of a triple (T/F).
void(* store_txn_abort_fn_t)(void *txn)
Abort a transaction.
VOLK_rc(* store_add_done_fn_t)(void *it)
Finalize an add loop and free iterator.
size_t(* store_size_fn_t)(const void *store)
Prototype: get store size.
VOLK_rc(* store_add_term_fn_t)(void *store, const VOLK_Buffer *sterm, void *udata)
Add a single term to the store.
VOLK_rc(* store_add_iter_fn_t)(void *it, const VOLK_BufferTriple *sspo)
Add one triple into the store.
@ VOLK_STORE_TXN_RO
Start a read-only transaction.
@ VOLK_STORE_TXN
Supports transaction handling.
@ VOLK_STORE_EMBED
@ VOLK_STORE_COW
Copy on write.
@ VOLK_STORE_IDX
Store is fully SPO(C)-indexed.
@ VOLK_STORE_PERM
@ VOLK_STORE_CTX
Triple of byte buffers.
Definition buffer.h:60
General-purpose data buffer.
Definition buffer.h:47
Store interface.
store_size_fn_t size_fn
Number of triples in the store.
VOLK_StoreFeature features
Feature flags.
store_txn_abort_fn_t txn_abort_fn
Abort transaction.
store_new_fn_t new_fn
Create a new store instance.
iter_free_fn_t lu_free_fn
Free the lookup iterator.
store_txn_commit_fn_t txn_commit_fn
Commit transaction.
store_remove_fn_t remove_fn
Remove triples by pattern.
store_add_abort_fn_t add_abort_fn
store_add_iter_fn_t add_iter_fn
Add one triple.
char name[16]
Store type name.
store_add_term_fn_t add_term_fn
store_update_ctx_fn_t update_ctx_fn
store_free_fn_t free_fn
Free the store.
store_txn_begin_fn_t txn_begin_fn
Begin transaction.
store_setup_fn_t setup_fn
Called before store_new_fn_t.
store_ctx_list_fn_t ctx_list_fn
store_add_init_fn_t add_init_fn
Initialize add iteration.
iter_txn_fn_t iter_txn_fn
Get iterator's transaction.
iter_next_fn_t lu_next_fn
Advance the lookup iterator.
store_id_fn_t id_fn
Get store ID.
store_lookup_fn_t lookup_fn
Look up triples by pattern. 
store_add_done_fn_t add_done_fn
Complete the add process.