First stab at a marc map as a fast alternat to XSLT
[pazpar2-moved-to-github.git] / src / marchash.h
diff --git a/src/marchash.h b/src/marchash.h
new file mode 100644 (file)
index 0000000..74b7bbd
--- /dev/null
@@ -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