simplify setcrawl
[henge/apc.git] / src / ir.c
index d0abf1f..6355654 100644 (file)
--- a/src/ir.c
+++ b/src/ir.c
@@ -666,9 +666,10 @@ static void crawl_set(struct ir_set_t*,int);
 void     ir_test(void)\r
 { uprintf("IR From Directory: %s\n",getcwd(NULL,255));\r
   crawl_class(&root_class);\r
+  if (root_class.root_set != NULL)\r
+    crawl_set(root_class.root_set, 0);\r
 }\r
 \r
-#define pspace(num) for (i = 0; i < (num); i++) putchar('.')\r
 static\r
 void crawl_class\r
 ( struct ir_class_t* class )\r
@@ -686,24 +687,26 @@ void crawl_class
     }\r
 }\r
 \r
+#define push_setp(setp) (*(struct ir_set_t**)stack_alloc(sizeof(struct ir_set_t*)) = setp)\r
+#define pop_setp()      (*(struct ir_set_t**)pagelist_pop(&datapages, sizeof(struct ir_set_t*)))\r
 static\r
 void crawl_set\r
 ( struct ir_set_t* set,\r
   int depth\r
 )\r
-{ struct ir_set_t* setlist[64], ** slp, * iter;\r
+{ struct ir_set_t* iter;\r
   int i;\r
-  pspace(depth * 12);\r
+  i = depth * 12;\r
+  while (i--)\r
+    putchar('.');\r
   i = depth;\r
-  slp = setlist;\r
   for(iter = set; iter != NULL; iter = iter->nextchild)\r
     { uprintf("[%10U]", iter->name);\r
-      *slp++ = iter;\r
+      push_setp(iter);\r
       i++;\r
     }\r
-  --i;\r
   putchar('\n');\r
-  for(iter = *--slp; slp >= setlist; iter = *--slp, --i)\r
-    if (iter->nextsib != NULL)\r
+  while (--i >= depth)\r
+    if (((iter = pop_setp())->nextsib) != NULL)\r
       crawl_set(iter->nextsib,i);\r
 }\r