-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinterface.h
executable file
·96 lines (65 loc) · 3.49 KB
/
interface.h
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/* General interface for using the compressed index libraries */
#ifndef uchar
#define uchar unsigned char
#endif
#ifndef uint
#define uint unsigned int
#endif
#ifndef ulong
#define ulong unsigned long
#endif
/* Error management */
/* Returns a string describing the error associated with error number
e. The string must not be freed, and it will be overwritten with
subsequent calls. */
char *error_index (int e);
/* Building the index */
/* Creates index from text[0..length-1]. Note that the index is an
opaque data type. Any build option must be passed in string
build_options, whose syntax depends on the index. The index must
always work with some default parameters if build_options is NULL.
The returned index is ready to be queried. */
int build_index (uchar *text, ulong length, char *build_options, void **index);
/* Saves index on disk by using single or multiple files, having
proper extensions. */
int save_index (void *index, char *filename);
/* Loads index from one or more file(s) named filename, possibly
adding the proper extensions. */
int load_index (char *filename, void **index);
/* Frees the memory occupied by index. */
int free_index (void *index);
/* Gives the memory occupied by index in bytes. */
int index_size(void *index, ulong *size);
/* Querying the index */
/* Writes in numocc the number of occurrences of the substring
pattern[0..length-1] found in the text indexed by index. */
int count (void *index, uchar *pattern, ulong length, ulong *numocc);
/* Writes in numocc the number of occurrences of the substring
pattern[0..length-1] in the text indexed by index. It also allocates
occ (which must be freed by the caller) and writes the locations of
the numocc occurrences in occ, in arbitrary order. */
int locate (void *index, uchar *pattern, ulong length, ulong **occ,
ulong *numocc);
/* Gives the length of the text indexed */
int get_length(void *index, ulong *length);
/* Accessing the indexed text */
/* Allocates snippet (which must be freed by the caller) and writes
the substring text[from..to] into it. Returns in snippet_length the
length of the text snippet actually extracted (that could be less
than to-from+1 if to is larger than the text size). */
int extract (void *index, ulong from, ulong to, uchar **snippet,
ulong *snippet_length);
/* Displays the text (snippet) surrounding any occurrence of the
substring pattern[0..length-1] within the text indexed by index.
The snippet must include numc characters before and after the
pattern occurrence, totalizing length+2*numc characters, or less if
the text boundaries are reached. Writes in numocc the number of
occurrences, and allocates the arrays snippet_text and
snippet_lengths (which must be freed by the caller). The first is a
character array of numocc*(length+2*numc) characters, with a new
snippet starting at every multiple of length+2*numc. The second
gives the real length of each of the numocc snippets. */
int display (void *index, uchar *pattern, ulong length, ulong numc,
ulong *numocc, uchar **snippet_text, ulong **snippet_lengths);
/* Obtains the length of the text indexed by index. */
int length (void *index, ulong *length);