| 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 */ |