X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Ftypes%2Fnum_exp.h;h=7ec62e1c02cffe5679853e05c457a2cac6704546;hb=370510d04a5e22140e1e7f90f5d1f0002e6dbee6;hp=6e122bb867d665aacdc1f507a7fae7148e15aa3b;hpb=6509a2053456d0e63b6f383b757289d3016ed1a5;p=m6w6%2Fext-psi diff --git a/src/types/num_exp.h b/src/types/num_exp.h index 6e122bb..7ec62e1 100644 --- a/src/types/num_exp.h +++ b/src/types/num_exp.h @@ -46,17 +46,31 @@ struct psi_num_exp { struct psi_num_exp *lhs; struct psi_num_exp *rhs; } b; + struct { + struct psi_decl_type *typ; + struct psi_num_exp *num; + } c; + struct { + struct psi_num_exp *cond; + struct psi_num_exp *truthy; + struct psi_num_exp *falsy; + } t; struct psi_num_exp *u; struct psi_number *n; } data; token_t (*calc)(token_t t1, impl_val *v1, token_t t2, impl_val *v2, impl_val *res); }; +struct psi_num_exp *psi_num_exp_init_ternary(token_t op, + struct psi_num_exp *cond, struct psi_num_exp *truthy, + struct psi_num_exp *falsy); struct psi_num_exp *psi_num_exp_init_binary(token_t op, struct psi_num_exp *lhs, struct psi_num_exp *rhs); struct psi_num_exp *psi_num_exp_init_unary(token_t op, struct psi_num_exp *u); struct psi_num_exp *psi_num_exp_init_num(struct psi_number *n); +struct psi_num_exp *psi_num_exp_init_cast(struct psi_decl_type *typ, + struct psi_num_exp *num); void psi_num_exp_free(struct psi_num_exp **c_ptr); struct psi_num_exp *psi_num_exp_copy(struct psi_num_exp *exp);