Added handling of qualifiers. Not finished yet.
[egate.git] / ccl / cclqual.c
diff --git a/ccl/cclqual.c b/ccl/cclqual.c
new file mode 100644 (file)
index 0000000..4dff9cb
--- /dev/null
@@ -0,0 +1,72 @@
+/* CCL qualifiers
+ * Europagate, 1995
+ *
+ * $Log: cclqual.c,v $
+ * Revision 1.1  1995/02/13 15:15:07  adam
+ * Added handling of qualifiers. Not finished yet.
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <string.h>
+
+#include "cclp.h"
+
+struct ccl_qualifiers {
+    struct ccl_qualifier *list;
+};
+
+void ccl_qual_add (CCL_bibset b,
+                   const char *name, int nuse, int *use, int relation,
+                   int position, int structure, int truncation,
+                   int completeness)
+{
+    struct ccl_qualifier *new_qual;
+
+    assert (b);
+    new_qual = malloc (sizeof(*new_qual));
+    assert (new_qual);
+
+    new_qual->next = b->list;
+    b->list = new_qual;
+
+    new_qual->name = malloc (strlen(name)+1);
+    assert (new_qual->name);
+    strcpy (new_qual->name, name);
+    new_qual->nuse = nuse;
+    new_qual->use = malloc (sizeof(int)*nuse);
+    assert (new_qual->use);
+    memcpy (new_qual->use, use, sizeof(int)*nuse);
+    new_qual->relation = relation;
+    new_qual->position = position;
+    new_qual->structure = structure;
+    new_qual->truncation = truncation;
+    new_qual->completeness = completeness;
+}
+
+CCL_bibset ccl_qual_mk (void)
+{
+    CCL_bibset b = malloc (sizeof(*b));
+    assert (b);
+    b->list = NULL;     
+    return b;
+}
+
+void ccl_qual_rm (CCL_bibset *b)
+{
+    assert (*b);
+    *b = NULL;
+}
+
+struct ccl_qualifier *ccl_qual_search (CCL_bibset b, const char *name)
+{
+    struct ccl_qualifier *q;
+
+    assert (b);
+    for (q = b->list; q; q = q->next)
+        if (strcmp (name, q->name))
+            return q;
+    return NULL;
+}