home *** CD-ROM | disk | FTP | other *** search
- /* operat2.c -- more operators for bs. the ones that are all alike.
- */
-
- #include "bsdefs.h"
-
- _radd(l,p)
- int (*l[])(),p;
- {
- union value rg1,rg2,result;
-
- if((status&XMODE)==M_READ){ dtype=T_DBL; goto EXEC;}
- if((status&XMODE) == M_EXECUTE) {
- EXEC:
- rg2 = pop();
- rg1 = pop();
- result.rval = rg1.rval + rg2.rval;
- push(result);
- }
- return(p);
- }
- _rsub(l,p)
- int (*l[])(),p;
- {
- union value rg1,rg2,result;
-
- if((status&XMODE)==M_READ){ dtype=T_DBL; goto EXEC;}
- if((status&XMODE) == M_EXECUTE) {
- EXEC:
- rg2 = pop();
- rg1 = pop();
- result.rval = rg1.rval - rg2.rval;
- push(result);
- }
- return(p);
- }
- _rmult(l,p)
- int (*l[])(),p;
- {
- union value rg1,rg2,result;
-
- if((status&XMODE)==M_READ){ dtype=T_DBL; goto EXEC;}
- if((status&XMODE) == M_EXECUTE) {
- EXEC:
- rg2 = pop();
- rg1 = pop();
- result.rval = rg1.rval * rg2.rval;
- push(result);
- }
- return(p);
- }
- _rdiv(l,p)
- int (*l[])(),p;
- {
- union value rg1,rg2,result;
-
- if((status&XMODE)==M_READ){ dtype=T_DBL; goto EXEC;}
- if((status&XMODE) == M_EXECUTE) {
- EXEC:
- rg2 = pop();
- rg1 = pop();
- result.rval = rg1.rval / rg2.rval;
- push(result);
- }
- return(p);
- }
- _req(l,p)
- int (*l[])(),p;
- {
- union value rg1,rg2,result;
-
- if((status&XMODE) == M_EXECUTE) {
- rg2 = pop();
- rg1 = pop();
- result.ival = rg1.rval == rg2.rval;
- push(result);
- }
- return(p);
- }
- _seq(l,p)
- int (*l[])(),p;
- {
- union value rg1,rg2,result;
-
- if((status&XMODE) == M_EXECUTE) {
- rg2 = pop();
- rg1 = pop();
- result.sval = strcmp(rg1.sval,rg2.sval) == 0;
- push(result);
- }
- return(p);
- }
- _rneq(l,p)
- int (*l[])(),p;
- {
- union value rg1,rg2,result;
-
- if((status&XMODE) == M_EXECUTE) {
- rg2 = pop();
- rg1 = pop();
- result.ival = rg1.rval != rg2.rval;
- push(result);
- }
- return(p);
- }
- _sneq(l,p)
- int (*l[])(),p;
- {
- union value rg1,rg2,result;
-
- if((status&XMODE) == M_EXECUTE) {
- rg2 = pop();
- rg1 = pop();
- result.sval = strcmp(rg1.sval,rg2.sval) != 0;
- push(result);
- }
- return(p);
- }
- _rleq(l,p)
- int (*l[])(),p;
- {
- union value rg1,rg2,result;
-
- if((status&XMODE) == M_EXECUTE) {
- rg2 = pop();
- rg1 = pop();
- result.ival = rg1.rval <= rg2.rval;
- push(result);
- }
- return(p);
- }
- _sleq(l,p)
- int (*l[])(),p;
- {
- union value rg1,rg2,result;
-
- if((status&XMODE) == M_EXECUTE) {
- rg2 = pop();
- rg1 = pop();
- result.sval = strcmp(rg1.sval,rg2.sval) <= 0;
- push(result);
- }
- return(p);
- }
- _rlt(l,p)
- int (*l[])(),p;
- {
- union value rg1,rg2,result;
-
- if((status&XMODE) == M_EXECUTE) {
- rg2 = pop();
- rg1 = pop();
- result.ival = rg1.rval < rg2.rval;
- push(result);
- }
- return(p);
- }
- _slt(l,p)
- int (*l[])(),p;
- {
- union value rg1,rg2,result;
-
- if((status&XMODE) == M_EXECUTE) {
- rg2 = pop();
- rg1 = pop();
- result.sval = strcmp(rg1.sval,rg2.sval) < 0;
- push(result);
- }
- return(p);
- }
- _rgeq(l,p)
- int (*l[])(),p;
- {
- union value rg1,rg2,result;
-
- if((status&XMODE) == M_EXECUTE) {
- rg2 = pop();
- rg1 = pop();
- result.ival = rg1.rval >= rg2.rval;
- push(result);
- }
- return(p);
- }
- _sgeq(l,p)
- int (*l[])(),p;
- {
- union value rg1,rg2,result;
-
- if((status&XMODE) == M_EXECUTE) {
- rg2 = pop();
- rg1 = pop();
- result.sval = strcmp(rg1.sval,rg2.sval) >= 0;
- push(result);
- }
- return(p);
- }
- _rgt(l,p)
- int (*l[])(),p;
- {
- union value rg1,rg2,result;
-
- if((status&XMODE) == M_EXECUTE) {
- rg2 = pop();
- rg1 = pop();
- result.ival = rg1.rval > rg2.rval;
- push(result);
- }
- return(p);
- }
- _sgt(l,p)
- int (*l[])(),p;
- {
- union value rg1,rg2,result;
-
- if((status&XMODE) == M_EXECUTE) {
- rg2 = pop();
- rg1 = pop();
- result.sval = strcmp(rg1.sval,rg2.sval) > 0;
- push(result);
- }
- return(p);
- }
- _or(l,p)
- int (*l[])(),p;
- {
- union value rg1,rg2,result;
-
- if((status&XMODE)==M_READ){ dtype=T_INT; goto EXEC;}
- if((status&XMODE) == M_EXECUTE) {
- EXEC:
- rg2 = pop();
- rg1 = pop();
- result.ival = rg1.ival || rg2.ival;
- push(result);
- }
- return(p);
- }
- _and(l,p)
- int (*l[])(),p;
- {
- union value rg1,rg2,result;
-
- if((status&XMODE)==M_READ){ dtype=T_INT; goto EXEC;}
- if((status&XMODE) == M_EXECUTE) {
- EXEC:
- rg2 = pop();
- rg1 = pop();
- result.ival = rg1.ival && rg2.ival;
- push(result);
- }
- return(p);
- }
-