From 44b15998f0b17d98b4714e77a89fc90b2a2dc29e Mon Sep 17 00:00:00 2001 From: ken Date: Thu, 19 Jan 2017 21:48:33 -0800 Subject: [PATCH] fixed tree printing for real --- src/ir.c | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/src/ir.c b/src/ir.c index 0e95d7f..ab97305 100644 --- a/src/ir.c +++ b/src/ir.c @@ -101,7 +101,7 @@ struct ir_class_t uint8_t* name; }; struct ir_set_t -{ struct ir_set_t* nextchild, * nextsib; +{ struct ir_set_t* nextchild, * nextsib, * p; uint32_t ref; uint8_t* name; struct ir_framebox_t* frameboxes; @@ -672,8 +672,7 @@ void ir_test(void) static void crawl_class ( struct ir_class_t* class ) -{ struct ir_class_t* iter; - wprintf("%U/\n", class->name); +{ wprintf("%U/\n", class->name); if(chdir((char*)class->name)) eprintf("CHDIR %U from %s\n",class->name,getcwd(NULL,255)); if (class->nextchild != NULL) @@ -683,12 +682,11 @@ void crawl_class if (class->nextsib != NULL) { if (chdir("..")) eprintf("CHDIR ..\n"); - for (iter = class->nextsib; iter != NULL; iter = iter->nextsib) - crawl_class(iter); + crawl_class(class->nextsib); if(chdir((char*)class->name)) eprintf("CHDIR %U from %s\n",class->name,getcwd(NULL,255)); } - uprintf("\n%U\\\n",class->name); + uprintf("%U\\\n",class->name); if (chdir("..")) eprintf("CHDIR ..\n"); } @@ -698,18 +696,21 @@ void crawl_set ( struct ir_set_t* set, int depth ) -{ struct ir_set_t* iter; +{ struct ir_set_t* iter, * last; int i; - pspace(depth * 10); - i = 0; - for(iter = set; iter != NULL; iter = iter->nextchild, ++i) - uprintf("[%8U]", iter->name); - if (i) - putchar('\n'); - i = 0; - for(iter = set->nextchild; iter != NULL; iter = iter->nextchild) + pspace(depth * 12); + last = NULL; + i = depth; + for(iter = set; iter != NULL; iter = iter->nextchild) + { uprintf("[%10U]", iter->name); + if (last != NULL) + iter->p = last; + last = iter; + i++; + } + --i; + putchar('\n'); + for(iter = last; iter != NULL; iter = iter->p, --i) if (iter->nextsib != NULL) - crawl_set(iter->nextsib, ++i); - for(iter = set->nextsib; iter != NULL; iter = iter->nextsib) - crawl_set(iter, depth); + crawl_set(iter->nextsib,i); } -- 2.18.0