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

Diff of /stack/stack.c

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

revision 1.36 by teddy, Wed Feb 6 00:52:31 2002 UTC revision 1.37 by teddy, Wed Feb 6 01:51:08 2002 UTC
# Line 218  void free_val(value *val){ Line 218  void free_val(value *val){
218      switch (val->type){         /* and free the contents if necessary */      switch (val->type){         /* and free the contents if necessary */
219      case string:      case string:
220        free(val->content.ptr);        free(val->content.ptr);
221          break;
222      case list:                  /* lists needs to be freed recursively */      case list:                  /* lists needs to be freed recursively */
223        item=val->content.ptr;        item=val->content.ptr;
224        while(item != NULL) {     /* for all stack items */        while(item != NULL) {     /* for all stack items */
# Line 256  extern void nl() Line 257  extern void nl()
257    printf("\n");    printf("\n");
258  }  }
259    
260    /* Gets the type of a value */
261    extern void type(environment *env){
262      int typenum;
263    
264      if((env->head)==NULL) {
265        printerr("Too Few Arguments");
266        env->err=1;
267        return;
268      }
269      typenum=env->head->item->type;
270      toss(env);
271      switch(typenum){
272      case integer:
273        push_sym(env, "integer");
274        break;
275      case string:
276        push_sym(env, "string");
277        break;
278      case symb:
279        push_sym(env, "symbol");
280        break;
281      case func:
282        push_sym(env, "function");
283        break;
284      case list:
285        push_sym(env, "list");
286        break;
287      default:
288        push_sym(env, "unknown");
289        break;
290      }
291    }    
292    
293  /* Prints the top element of the stack. */  /* Prints the top element of the stack. */
294  void print_h(stackitem *stack_head)  void print_h(stackitem *stack_head)
295  {  {
# Line 314  void print_st(stackitem *stack_head, lon Line 348  void print_st(stackitem *stack_head, lon
348  extern void printstack(environment *env)  extern void printstack(environment *env)
349  {  {
350    if(env->head == NULL) {    if(env->head == NULL) {
     printerr("Too Few Arguments");  
     env->err=1;  
351      return;      return;
352    }    }
353    print_st(env->head, 1);    print_st(env->head, 1);
# Line 457  extern void pack(environment *env) Line 489  extern void pack(environment *env)
489  }  }
490    
491  /* Parse input. */  /* Parse input. */
492  int stack_read(environment *env, char *in_line)  void stack_read(environment *env, char *in_line)
493  {  {
494    char *temp, *rest;    char *temp, *rest;
495    int itemp;    int itemp;
# Line 518  int stack_read(environment *env, char *i Line 550  int stack_read(environment *env, char *i
550      }      }
551    } while(0);    } while(0);
552    
   
553    free(temp);    free(temp);
554    
555    if(convert<2) {    if(convert<2) {
556      free(rest);      free(rest);
557      return 0;      return;
558    }    }
559        
560    stack_read(env, rest);    stack_read(env, rest);
561        
562    free(rest);    free(rest);
   return 1;  
563  }  }
564    
565  /* Relocate elements of the list on the stack. */  /* Relocate elements of the list on the stack. */

Legend:
Removed from v.1.36  
changed lines
  Added in v.1.37

root@recompile.se
ViewVC Help
Powered by ViewVC 1.1.26