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
88/*
89 * Store function types.
90 */
91
108typedef VOLK_rc (*store_setup_fn_t)(const char *id, bool clear);
109
110
122typedef void * (*store_new_fn_t)(const char *id, size_t size);
123
124
130typedef void (*store_free_fn_t)(void *store);
131
132
139typedef size_t (*store_size_fn_t)(const void *store);
140
141
148typedef char * (*store_id_fn_t)(const void *store);
149
150
151#if 0
158typedef VOLK_rc (*store_stat_fn_t)(void *store, void *stat);
159#endif
160
161
178typedef VOLK_rc (*store_txn_begin_fn_t)(void *store, int flags, void **txn);
179
180
189typedef VOLK_rc (*store_txn_commit_fn_t)(void *txn);
190
191
198typedef void (*store_txn_abort_fn_t)(void *txn);
199
200
208 void *store, const VOLK_Buffer *old_c, const VOLK_Buffer *new_c,
209 void *udata);
210
211
216typedef void * (*store_add_init_fn_t)(
217 void *store, const VOLK_Buffer *sc, void *udata);
218
219
225 void *it, const VOLK_BufferTriple * sspo);
226
227
234typedef void (*store_add_abort_fn_t)(void *it);
235
236
241typedef VOLK_rc (*store_add_done_fn_t)(void *it);
242
243
249 void *store, const VOLK_Buffer *sterm, void *udata);
250
251
252/*
253 * Iterator function types.
254 */
255
260typedef void * (*store_lookup_fn_t)(
261 void *store,
262 const VOLK_Buffer *ss, const VOLK_Buffer *sp, const VOLK_Buffer *so,
263 const VOLK_Buffer *sc, void *udata, size_t *ct);
264
265
279typedef bool (*store_trp_exist_fn_t)(
280 void *store, const VOLK_BufferTriple *sspo, const VOLK_Buffer *sc);
281
282
288 void *it, VOLK_BufferTriple *sspo, VOLK_Buffer **ctx);
289
290
295typedef void (*iter_free_fn_t)(void * it);
296
297
302typedef void * (*iter_txn_fn_t)(void *it);
303
304
310 void *store,
311 const VOLK_Buffer *ss, const VOLK_Buffer *sp, const VOLK_Buffer *so,
312 const VOLK_Buffer *sc, void *udata, size_t *ct);
313
314
319typedef VOLK_Buffer ** (*store_ctx_list_fn_t)(void *store, void *txn);
320
321
322
323/*
324 * Iterface type definitions.
325 */
326
396
397
398/*
399 * Template for a new store and iterator implementation.
400 * These should be placed in the .c file where the interface functions are
401 * defined, and declared as `extern` in the related .h file.
402
403const VOLK_StoreInt my_store_int = {
404 .name = "My Store", // Truncated to 15 chars.
405 .features = VOLK_STORE_PERM | VOLK_STORE_IDX,
406
407 .setup_fn = my_setup_fn,
408 .new_fn = my_new_fn,
409 .free_fn = my_free_fn,
410
411 .size_fn = my_size_fn,
412 .id_fn = my_id_fn,
413
414 .txn_begin_fn = my_txn_begin_fn,
415 .txn_commit_fn = my_txn_commit_fn,
416 .txn_abort_fn = my_txn_abort_fn,
417
418 .ctx_update_fn = my_ctx_update_fn,
419
420 .add_init_fn = my_init_fn,
421 .add_iter_fn = my_iter_fn,
422 .add_abort_fn = my_add_abort_fn,
423 .add_done_fn = my_add_done_fn,
424 .add_term_fn = my_add_term_fn,
425
426 .lookup_fn = my_lookup_fn,
427 .lu_next_fn = my_iter_next_fn,
428 .lu_free_fn = my_iter_free_fn,
429 .iter_txn_fn = my_iter_txn_fn,
430
431 .remove_fn = my_remove_fn,
432
433 .ctx_list_fn = my_ctx_list_fn,
434};
435*/
436
438
439#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.
VOLK_rc(* store_txn_begin_fn_t)(void *store, int flags, void **txn)
Begin a transaction.
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.
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
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.