-------------------------------------------------------------------------*/
#include <stdio.h>
-#if defined(__APPLE__) && defined(__MACH__)
-#include <sys/malloc.h>
-#else
-#include <malloc.h>
-#endif
#include "newalloc.h"
#include <assert.h>
#include "SDCCset.h"
/* newSet - will allocate & return a new set entry */
/*-----------------------------------------------------------------*/
set *
-newSet ()
+newSet (void)
{
set *lp;
- lp = Safe_calloc (1, sizeof (set));
+ lp = Safe_alloc ( sizeof (set));
// if (lp == 0) {
// fprintf(stderr, "out of virtual memory: %s\n", __FILE__);
// exit(1);
return count;
}
+/*-----------------------------------------------------------------*/
+/* reverseSet - reverse the order of the items of a set */
+/*-----------------------------------------------------------------*/
+
+set *
+reverseSet(set * s)
+{
+ set *t = NULL;
+ set *u = NULL;
+
+ while(s->next) {
+ t = s->next;
+ s->next = u;
+ u = s;
+ s = t;
+ }
+ s->next = u;
+ return s;
+}
+
/*-----------------------------------------------------------------*/
/* subtractFromSet - take away from set1 elements of set2 */
/*-----------------------------------------------------------------*/
if (!*item)
return;
- free (*item);
+ Safe_free (*item);
*item = NULL;
}
+
+/*-----------------------------------------------------------------*/
+/* deleteSet - will throw away the entire list */
+/* note - setToNull doesn't actually throw away the whole list. */
+/* Instead it only throws away the first item. */
+/*-----------------------------------------------------------------*/
+void deleteSet(set **s)
+{
+ set *curr;
+ set *next;
+
+ if(!s || !*s)
+ return;
+
+ curr = *s;
+ next = curr->next;
+ while (next) {
+ Safe_free (curr);
+ curr = next;
+ next = next->next;
+ }
+
+ Safe_free (curr);
+
+ *s = NULL;
+}
+