35#ifndef VOLK_STORE_INTERFACE_H
36#define VOLK_STORE_INTERFACE_H
122typedef void * (*store_new_fn_t)(
const char *id,
size_t size);
148typedef char * (*store_id_fn_t)(
const void *store);
158typedef VOLK_rc (*store_stat_fn_t)(
void *store,
void *stat);
216typedef void * (*store_add_init_fn_t)(
249 void *store,
const VOLK_Buffer *sterm,
void *udata);
260typedef void * (*store_lookup_fn_t)(
302typedef void * (*iter_txn_fn_t)(
void *it);
319typedef VOLK_Buffer ** (*store_ctx_list_fn_t)(
void *store,
void *txn);
341typedef struct store_if_t {
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_COW
Copy on write.
@ VOLK_STORE_IDX
Store is fully SPO(C)-indexed.
General-purpose data buffer.
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.