X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmarchash.h;fp=src%2Fmarchash.h;h=74b7bbd81ced27830dcc8994debe49460f610b56;hb=2c07c3edbd2fb4c6f72b6527632fab264b6ab66b;hp=0000000000000000000000000000000000000000;hpb=d0fef3a0b9afaee590e748341c073594f62d01b8;p=pazpar2-moved-to-github.git diff --git a/src/marchash.h b/src/marchash.h new file mode 100644 index 0000000..74b7bbd --- /dev/null +++ b/src/marchash.h @@ -0,0 +1,33 @@ +#ifndef MARCHASH_H +#define MARCHASH_H + +#define MARCHASH_MASK 127 + +struct marchash +{ + struct marcfield *table[MARCHASH_MASK + 1]; + NMEM nmem; +}; + +struct marcfield +{ + char key[4]; + char *val; + struct marcsubfield *subfields; + struct marcfield *next; +}; + +struct marcsubfield +{ + char key; + char *val; + struct marcsubfield *next; +}; + +struct marchash *marchash_create (NMEM nmem); +int marchash_ingest_marcxml (struct marchash *marchash, xmlNodePtr rec_node); +struct marcfield *marchash_add_field (struct marchash *marchash, char *key, char *value); +struct marcsubfield *marchash_add_subfield (struct marchash *marchash, struct marcfield *field, char key, char *value); +struct marcfield *marchash_get_field (struct marchash *marchash, char *key, struct marcfield *last); +struct marcsubfield *marchash_get_subfield (char key, struct marcfield *field, struct marcsubfield *last); +#endif