/* $Id: inc.c,v 1.1 2003/09/28 09:03:00 jmuelmen Exp $ */ /* increment, decrement */ #include #include #include "act.h" #include "parse.h" void inc_pre (value_t *ret, value_t **argv, int argc) { value_t *args[2]; value_t one; one.val_type = val_int; one.value.v_int = 1; args[0] = argv[0]; args[1] = &one; add_assign(ret, args, 2); } int typecheck_inc_pre (value_t *ret, value_t **argv, int argc) { return (ret->val_type = argv[0]->val_type) == val_string; } void dec_pre (value_t *ret, value_t **argv, int argc) { value_t *args[2]; value_t one; one.val_type = val_int; one.value.v_int = 1; args[0] = argv[0]; args[1] = &one; sub_assign(ret, args, 2); } int typecheck_dec_pre (value_t *ret, value_t **argv, int argc) { return typecheck_inc_pre(ret, argv, argc); } void inc_post (value_t *ret, value_t **argv, int argc) { value_t *args[2]; value_t one; value_t dummy; value_copy(ret, argv[0]); one.val_type = val_int; one.value.v_int = 1; args[0] = argv[0]; args[1] = &one; add_assign(&dummy, args, 2); } int typecheck_inc_post (value_t *ret, value_t **argv, int argc) { return typecheck_inc_pre(ret, argv, argc); } void dec_post (value_t *ret, value_t **argv, int argc) { value_t *args[2]; value_t one; value_t dummy; value_copy(ret, argv[0]); one.val_type = val_int; one.value.v_int = 1; args[0] = argv[0]; args[1] = &one; sub_assign(&dummy, args, 2); } int typecheck_dec_post (value_t *ret, value_t **argv, int argc) { return typecheck_inc_pre(ret, argv, argc); }