File: tbchain.h

package info (click to toggle)
4store 1.1.6%2B20151109-2
  • links: PTS, VCS
  • area: main
  • in suites: buster, stretch
  • size: 82,388 kB
  • sloc: ansic: 65,689; sh: 2,916; perl: 2,245; makefile: 281; python: 213
file content (61 lines) | stat: -rw-r--r-- 2,598 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#ifndef TBCHAIN_H
#define TBCHAIN_H

#include "tbchain.h"
#include "backend.h"
#include "../common/4s-datatypes.h"

typedef struct _fs_tbchain fs_tbchain; 
typedef struct _fs_tbchain_it fs_tbchain_it;
typedef enum {
	/* bit set on first block if chain is sparse */
	FS_TBCHAIN_SPARSE = 1,
	/* bit set on first block if chain has triples that don't appear in the
         * graph */
	FS_TBCHAIN_SUPERSET = 2,
} fs_tbchain_bit;

fs_tbchain *fs_tbchain_open(fs_backend *be, const char *label, int flags);
fs_tbchain *fs_tbchain_open_filename(const char *fname, int flags);
int fs_tbchain_sync(fs_tbchain *bc);
int fs_tbchain_close(fs_tbchain *bc);
int fs_tbchain_unlink(fs_tbchain *bc);

/* create a new triple block chain */
fs_index_node fs_tbchain_new_chain(fs_tbchain *bc);
/* remove an existing triple block chain, and free the blocks */
int fs_tbchain_remove_chain(fs_tbchain *bc, fs_index_node b);

/* return the length of the chain in triples */
fs_index_node fs_tbchain_length(fs_tbchain *bc, fs_index_node b);
/* addpend a triple to the chain, creating blocks is neccesary */
fs_index_node fs_tbchain_add_triple(fs_tbchain *bc, fs_index_node b, fs_rid triple[3]) __attribute__ ((warn_unused_result));

/* functions to set/clear a bit on a chain, indicating that not all
 * the triples included still exist in the graph */
int fs_tbchain_set_bit(fs_tbchain *bc, fs_index_node b, fs_tbchain_bit bit);
int fs_tbchain_clear_bit(fs_tbchain *bc, fs_index_node b, fs_tbchain_bit bit);
int fs_tbchain_get_bit(fs_tbchain *bc, fs_index_node b, fs_tbchain_bit bit);

/* number of blocks allocated internally */
unsigned int fs_tbchain_allocated_blocks(fs_tbchain *bc);
/* show structure of chain file */
void fs_tbchain_print(fs_tbchain *bc, FILE *out, int verbosity);
/* get some statistics from chain, printing results to out */
int fs_tbchain_get_stats(fs_tbchain *bc, fs_index_node chain, FILE *out);
/* run a constency check against chain, printing results to out */
int fs_tbchain_check_consistency(fs_tbchain *bc, fs_rid model, fs_index_node chain, FILE *out);
/* check for leaks, must be run after every chain has been checked for
 * consistency */
int fs_tbchain_check_leaks(fs_tbchain *bc, FILE *out);

/* iterator functions */

/* create an interator, return NULL on fail */
fs_tbchain_it *fs_tbchain_new_iterator(fs_tbchain *bc, fs_rid model, fs_index_node chain);
/* get the first/next triple from the chain, returns TRUE on OK */
int fs_tbchain_it_next(fs_tbchain_it *it, fs_rid triple[3]);
/* free the iterator, returns 0 on success */
int fs_tbchain_it_free(fs_tbchain_it *it);

#endif