diff options
author | Pavel Machek <pavel@ucw.cz> | 2000-06-01 10:43:29 +0200 |
---|---|---|
committer | Pavel Machek <pavel@ucw.cz> | 2000-06-01 10:43:29 +0200 |
commit | 5f4aee76a2e26a6947f47273d510edc524716a45 (patch) | |
tree | 9004972bd0c1fd4de12e9cfdfdfee67babb50066 /filter/filter.c | |
parent | 1877dab21715eb23addb3391afbd8dbf571f833d (diff) | |
download | bird-5f4aee76a2e26a6947f47273d510edc524716a45.tar bird-5f4aee76a2e26a6947f47273d510edc524716a45.zip |
Added && and ||.
Diffstat (limited to 'filter/filter.c')
-rw-r--r-- | filter/filter.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/filter/filter.c b/filter/filter.c index 6a4778b..232a2d2 100644 --- a/filter/filter.c +++ b/filter/filter.c @@ -290,6 +290,19 @@ interpret(struct f_inst *what) default: runtime( "Usage of unknown type" ); } break; + + case '&': + TWOARGS_C; + res.type = v1.type; + if (res.type != T_BOOL) runtime( "Can not do boolean operation on non-booleans" ); + res.val.i = v1.val.i && v2.val.i; + break; + case '|': + TWOARGS_C; + res.type = v1.type; + if (res.type != T_BOOL) runtime( "Can not do boolean operation on non-booleans" ); + res.val.i = v1.val.i || v2.val.i; + break; /* Relational operators */ @@ -665,6 +678,8 @@ i_same(struct f_inst *f1, struct f_inst *f2) case '-': case '*': case '/': + case '|': + case '&': case P('!','='): case P('=','='): case '<': |