/[cvs]/stack/stack.c
ViewVC logotype

Diff of /stack/stack.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.7 by masse, Tue Jan 8 13:46:05 2002 UTC revision 1.8 by masse, Tue Jan 8 14:17:33 2002 UTC
# Line 160  extern void toss(stackitem** stack_head) Line 160  extern void toss(stackitem** stack_head)
160    free(temp);    free(temp);
161  }  }
162    
163    extern void nl()
164    {
165      printf("\n");
166    }
167    
168  /* print_stack(stack); */  void prin(stackitem** stack_head)
169  void print_st(stackitem* stack_head, long counter)  {
170  {    if((*stack_head)==NULL)
171    if(stack_head->next != NULL)      return;
     print_st(stack_head->next, counter+1);  
172    
173    switch(stack_head->type){    switch((*stack_head)->type) {
174    case value:    case value:
175      printf("%ld: %d\n", counter, (int)stack_head->content.val);      printf("%d", (*stack_head)->content.val);
176      break;      break;
177    case string:    case string:
178      printf("%ld: \"%s\"\n", counter, (char*)stack_head->content.ptr);      printf("%s", (char*)(*stack_head)->content.ptr);
179      break;      break;
180    case ref:    case ref:
181      printf("%ld: %s\n", counter, ((stackitem*)stack_head->content.ptr)->id);      printf("%s", ((stackitem*)(*stack_head)->content.ptr)->id);
182      break;      break;
   case func:  
183    case symbol:    case symbol:
184    default:    default:
185      printf("%ld: %p\n", counter, stack_head->content.ptr);      printf("%p", (*stack_head)->content.ptr);
186      break;      break;
187    }    }
188  }  }
189    
190    extern void print(stackitem** stack_head)
191    {
192      prin(stack_head);
193      toss(stack_head);
194    }
195    
196    /* print_stack(stack); */
197    void print_st(stackitem* stack_head, long counter)
198    {
199      if(stack_head->next != NULL)
200        print_st(stack_head->next, counter+1);
201    
202      printf("%ld: ", counter);
203      prin(&stack_head);
204      nl();
205    }
206    
207  extern void printstack(stackitem** stack_head)  extern void printstack(stackitem** stack_head)
208  {  {
209    if(*stack_head != NULL) {    if(*stack_head != NULL) {
# Line 242  int stack_read(stackitem** stack_head, h Line 261  int stack_read(stackitem** stack_head, h
261    return 1;    return 1;
262  }  }
263    
 extern void print(stackitem** stack_head)  
 {  
   if((*stack_head)==NULL)  
     return;  
   
   switch((*stack_head)->type){  
   case value:  
     printf("%d", (*stack_head)->content.val);  
     break;  
   case string:  
     printf("%s", (char*)(*stack_head)->content.ptr);  
     break;  
   case ref:  
     printf("%s", ((stackitem*)(*stack_head)->content.ptr)->id);  
     break;  
   case symbol:  
   default:  
     printf("%p", (*stack_head)->content.ptr);  
     break;  
   }  
   
   toss(stack_head);  
 }  
   
264  extern void pack(stackitem** stack_head)  extern void pack(stackitem** stack_head)
265  {  {
266    void* delimiter;    void* delimiter;
# Line 295  extern void pack(stackitem** stack_head) Line 290  extern void pack(stackitem** stack_head)
290    
291    push(stack_head, pack);    push(stack_head, pack);
292  }  }
     
293    
294  extern void nl()  extern void expand(stackitem** stack_head)
295  {  {
296    printf("\n");    stackitem *temp, *new_head;
297    
298      if((*stack_head)==NULL || (*stack_head)->type!=list)
299        return;
300    
301      new_head= temp= (*stack_head)->content.ptr;
302      toss(stack_head);
303    
304      while(temp->next!=NULL)
305        temp= temp->next;
306    
307      temp->next= *stack_head;
308      *stack_head= new_head;
309  }  }
310    
311  extern void quit()  extern void quit()

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8

root@recompile.se
ViewVC Help
Powered by ViewVC 1.1.26