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

Diff of /stack/stack.c

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

revision 1.64 by teddy, Fri Feb 8 16:33:14 2002 UTC revision 1.66 by masse, Sat Feb 9 00:40:45 2002 UTC
# Line 1192  extern void sx_7768696c65(environment *e Line 1192  extern void sx_7768696c65(environment *e
1192    free_val(test);    free_val(test);
1193    free_val(loop);    free_val(loop);
1194  }  }
1195    
1196    /* For-loop */
1197    extern void sx_666f72(environment *env) {
1198      
1199      value *loop, *foo;
1200      stackitem *iterator;
1201      
1202      if((env->head)==NULL || env->head->next==NULL) {
1203        printerr("Too Few Arguments");
1204        env->err=1;
1205        return;
1206      }
1207    
1208      if(env->head->next->item->type != list) {
1209        printerr("Bad Argument Type");
1210        env->err=2;
1211        return;
1212      }
1213    
1214      loop= env->head->item;
1215      loop->refcount++;
1216      toss(env); if(env->err) return;
1217    
1218      foo= env->head->item;
1219      foo->refcount++;
1220      toss(env); if(env->err) return;
1221    
1222      iterator= foo->content.ptr;
1223    
1224      while(iterator!=NULL) {
1225        push_val(&(env->head), iterator->item);
1226        push_val(&(env->head), loop);
1227        eval(env); if(env->err) return;
1228        iterator= iterator->next;
1229      }
1230    
1231      free_val(loop);
1232      free_val(foo);
1233    }
1234    
1235    /* 'to' */
1236    extern void to(environment *env) {
1237      int i, start, ending;
1238      
1239      if((env->head)==NULL || env->head->next==NULL) {
1240        printerr("Too Few Arguments");
1241        env->err=1;
1242        return;
1243      }
1244    
1245      if(env->head->item->type!=integer
1246         || env->head->next->item->type!=integer) {
1247        printerr("Bad Argument Type");
1248        env->err=2;
1249        return;
1250      }
1251    
1252      ending= env->head->item->content.val;
1253      toss(env); if(env->err) return;
1254      start= env->head->item->content.val;
1255      toss(env); if(env->err) return;
1256    
1257      push_sym(env, "[");
1258    
1259      for(i= start; i<= ending; i++)
1260        push_int(&(env->head), i);
1261    
1262      push_sym(env, "[");
1263      pack(env); if(env->err) return;
1264    }

Legend:
Removed from v.1.64  
changed lines
  Added in v.1.66

root@recompile.se
ViewVC Help
Powered by ViewVC 1.1.26