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

Diff of /stack/stack.c

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

revision 1.59 by teddy, Fri Feb 8 04:58:23 2002 UTC revision 1.62 by teddy, Fri Feb 8 06:23:19 2002 UTC
# Line 955  extern void sx_2b(environment *env) { Line 955  extern void sx_2b(environment *env) {
955    a=env->head->item->content.val;    a=env->head->item->content.val;
956    toss(env);    toss(env);
957    if(env->err) return;    if(env->err) return;
958    b=env->head->item->content.val;    if(env->head->item->refcount == 1)
959        env->head->item->content.val += a;
960      else {
961        b=env->head->item->content.val;
962        toss(env);
963        if(env->err) return;
964        push_int(&(env->head), a+b);
965      }
966    }
967    
968    /* - */
969    extern void sx_2d(environment *env) {
970      int a, b;
971    
972      if((env->head)==NULL || env->head->next==NULL) {
973        printerr("Too Few Arguments");
974        env->err=1;
975        return;
976      }
977      
978      if(env->head->item->type!=integer
979         || env->head->next->item->type!=integer) {
980        printerr("Bad Argument Type");
981        env->err=2;
982        return;
983      }
984      a=env->head->item->content.val;
985      toss(env);
986      if(env->err) return;
987      if(env->head->item->refcount == 1)
988        env->head->item->content.val -= a;
989      else {
990        b=env->head->item->content.val;
991        toss(env);
992        if(env->err) return;
993        push_int(&(env->head), b-a);
994      }
995    }
996    
997    /* > */
998    extern void sx_3e(environment *env) {
999      int a, b;
1000    
1001      if((env->head)==NULL || env->head->next==NULL) {
1002        printerr("Too Few Arguments");
1003        env->err=1;
1004        return;
1005      }
1006      
1007      if(env->head->item->type!=integer
1008         || env->head->next->item->type!=integer) {
1009        printerr("Bad Argument Type");
1010        env->err=2;
1011        return;
1012      }
1013      a=env->head->item->content.val;
1014    toss(env);    toss(env);
1015    if(env->err) return;    if(env->err) return;
1016    push_int(&(env->head), a+b);    if(env->head->item->refcount == 1)
1017        env->head->item->content.val = (env->head->item->content.val > a);
1018      else {
1019        b=env->head->item->content.val;
1020        toss(env);
1021        if(env->err) return;
1022        push_int(&(env->head), b>a);
1023      }
1024  }  }
1025    
1026  /* Return copy of a value */  /* Return copy of a value */

Legend:
Removed from v.1.59  
changed lines
  Added in v.1.62

root@recompile.se
ViewVC Help
Powered by ViewVC 1.1.26