diff ueda/libueda/mclacc.c @ 0:cd92449fdb51

initial import of ueda and ifctf-part-lib from ifctfvax CVS
author Space Falcon <falcon@ivan.Harhan.ORG>
date Mon, 20 Jul 2015 00:24:37 +0000
parents
children c91e7a30fab3
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ueda/libueda/mclacc.c	Mon Jul 20 00:24:37 2015 +0000
@@ -0,0 +1,60 @@
+/*
+ * These are the libueda routines for accessing the parsed MCL.
+ */
+
+#include <stdio.h>
+#include <strings.h>
+#include "mcl.h"
+
+extern struct component components[], partdefs[];
+extern int ncomponents, npartdefs;
+
+struct component *
+find_partdef_by_name(partname)
+	register char *partname;
+{
+	register struct component *part;
+	register int i;
+
+	for (part = partdefs, i = 0; i < npartdefs; part++, i++)
+		if (!strcmp(part->name, partname))
+			return(part);
+	return(NULL);
+}
+
+char *
+get_comp_attr(comp, attrname)
+	struct component *comp;
+	char *attrname;
+{
+	register struct attrib *attr;
+	register int i;
+
+	for (; comp; comp = comp->partdef) {
+		attr = comp->attrs;
+		for (i = 0; i < comp->nattrs; attr++, i++)
+			if (!strcmp(attr->name, attrname))
+				return(attr->value);
+		if (comp->partdef == comp)
+			break;
+	}
+	return(NULL);
+}
+
+char *
+get_comp_multiattr(comp, attrname, cntp)
+	struct component *comp;
+	char *attrname;
+	int *cntp;
+{
+	register struct attrib *attrs;
+	register int i;
+
+	attrs = comp->attrs;
+	for (i = *cntp; i < comp->nattrs; i++)
+		if (!strcmp(attrs[i].name, attrname)) {
+			*cntp = i + 1;
+			return(attrs[i].value);
+		}
+	return(NULL);
+}