First stab at a marc map as a fast alternat to XSLT
[pazpar2-moved-to-github.git] / src / marchash.h
1 #ifndef MARCHASH_H
2 #define MARCHASH_H
3
4 #define MARCHASH_MASK 127
5
6 struct marchash
7 {
8     struct marcfield *table[MARCHASH_MASK + 1];
9     NMEM nmem;
10 };
11
12 struct marcfield
13 {
14    char key[4];
15    char *val;
16    struct marcsubfield *subfields;
17    struct marcfield *next;
18 };
19
20 struct marcsubfield
21 {
22    char key;
23    char *val;
24    struct marcsubfield *next;
25 };
26
27 struct marchash *marchash_create (NMEM nmem);
28 int marchash_ingest_marcxml (struct marchash *marchash, xmlNodePtr rec_node);
29 struct marcfield *marchash_add_field (struct marchash *marchash, char *key, char *value);
30 struct marcsubfield *marchash_add_subfield (struct marchash *marchash, struct marcfield *field, char key, char *value);
31 struct marcfield *marchash_get_field (struct marchash *marchash, char *key, struct marcfield *last);
32 struct marcsubfield *marchash_get_subfield (char key, struct marcfield *field, struct marcsubfield *last);
33 #endif