61a25ec70be27fbc47523e8db46290ece0d16052
[pazpar2-moved-to-github.git] / src / reclists.h
1 #ifndef RECLISTS_H
2 #define RECLISTS_H
3
4 #include "config.h"
5
6 struct reclist
7 {
8     struct reclist_bucket **hashtable;
9     int hashtable_size;
10     int hashmask;
11
12     struct record_cluster **flatlist;
13     int flatlist_size;
14     int num_records;
15     int pointer;
16
17     NMEM nmem;
18 };
19
20 // This is a recipe for sorting. First node in list has highest priority
21 struct reclist_sortparms
22 {
23     int offset;
24     enum conf_sortkey_type type;
25     int increasing;
26     struct reclist_sortparms *next;
27 };
28
29 struct reclist *reclist_create(NMEM, int numrecs);
30 struct record_cluster *reclist_insert(struct reclist *tl, struct record  *record,
31                 char *merge_key, int *total);
32 void reclist_sort(struct reclist *l, struct reclist_sortparms *parms);
33 struct record_cluster *reclist_read_record(struct reclist *l);
34 void reclist_rewind(struct reclist *l);
35 struct reclist_sortparms *reclist_parse_sortparms(NMEM nmem, const char *parms);
36
37 #endif
38
39 /*
40  * Local variables:
41  * c-basic-offset: 4
42  * indent-tabs-mode: nil
43  * End:
44  * vim: shiftwidth=4 tabstop=8 expandtab
45  */