Fix typos in the manual
[smenu.git] / index.h
blobbcbbd722b81ef7cf1d34e764bd499d28718e3b5d
1 /* ################################################################### */
2 /* Copyright 2015, Pierre Gentile (p.gen.progs@gmail.com)              */
3 /*                                                                     */
4 /* This Source Code Form is subject to the terms of the Mozilla Public */
5 /* License, v. 2.0. If a copy of the MPL was not distributed with this */
6 /* file, You can obtain one at https://mozilla.org/MPL/2.0/.           */
7 /* ################################################################### */
9 #ifndef INDEX_H
10 #define INDEX_H
12 /* *************************************** */
13 /* Ternary Search Tree specific structures */
14 /* *************************************** */
16 typedef struct tst_node_s tst_node_t;
17 typedef struct sub_tst_s  sub_tst_t;
19 #if 0 /* here for coherency but not used. */
20 void tst_cleanup(tst_node_t * p);
21 #endif
23 tst_node_t *
24 tst_insert(tst_node_t * p, wchar_t * w, void * data);
26 void *
27 tst_prefix_search(tst_node_t * root, wchar_t * w, int (*callback)(void *));
29 void *
30 tst_search(tst_node_t * root, wchar_t * w);
32 int
33 tst_traverse(tst_node_t * p, int (*callback)(void *), int first_call);
35 int
36 tst_substring_traverse(tst_node_t * p, int (*callback)(void *), int first_call,
37                        wchar_t w);
38 int
39 tst_fuzzy_traverse(tst_node_t * p, int (*callback)(void *), int first_call,
40                    wchar_t w);
42 sub_tst_t *
43 sub_tst_new(void);
45 void
46 insert_sorted_index(long ** array, long * size, long * filled, long value);
48 void
49 insert_sorted_ptr(tst_node_t *** array, unsigned long long * size,
50                   unsigned long long * filled, tst_node_t * ptr);
52 /* Ternary node structure */
53 /* """""""""""""""""""""" */
54 struct tst_node_s
56   wchar_t splitchar;
58   tst_node_t *lokid, *eqkid, *hikid;
59   void *      data;
62 /* Structure to contain data and metadata attached to a fuzzy/substring. */
63 /* search step.                                                          */
64 /* """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" */
65 struct sub_tst_s
67   tst_node_t **      array;
68   unsigned long long size;
69   unsigned long long count;
72 #endif