+/*@only@*/ constraintList constraintList_undump (FILE *f)
+{
+ constraintList ret;
+ char *s;
+ char *os;
+
+ ret = constraintList_makeNew();
+
+ os = mstring_create (MAX_DUMP_LINE_LENGTH);
+ s = fgets (os, MAX_DUMP_LINE_LENGTH, f);
+
+ while (s != NULL && *s != ';')
+ {
+ constraint temp;
+ char * c;
+
+ c = reader_getWord(&s);
+
+ if (strcmp (c, "C") != 0)
+ {
+ llfatalbug(message("Error reading library. File may be corrupted"));
+ }
+
+ temp = constraint_undump (f);
+ ret = constraintList_add (ret, temp);
+ s = fgets (os, MAX_DUMP_LINE_LENGTH, f);
+ free(c);
+ }
+ free(s);
+
+ return ret;
+}
+
+
+void constraintList_dump (/*@observer@*/ constraintList c, FILE *f)
+{
+ constraintList_elements (c, el)
+ {
+ fprintf(f, "C\n");
+ constraint_dump (el, f);
+ }
+ end_constraintList_elements; ;
+}
+
+
+constraintList constraintList_sort (/*@returned@*/ constraintList ret)
+{
+ qsort (ret->elements, (size_t) ret->nelements,
+ (sizeof (*ret->elements)),
+ (int (*)(const void *, const void *)) constraint_compare);
+
+ DPRINTF((message("onstraint_sort returning") ));
+ return ret;
+}
+