- val->ival.zend.bval = val->type == PSI_T_TRUE ? 1 : 0;
- return true;
- break;
-
- /* macros */
- case PSI_T_NUMBER:
- if (val->type == PSI_T_NUMBER) {
- token_t typ = psi_num_exp_exec(val->data.num, &val->ival, NULL, scope->cpp);
-
- switch (typ) {
- case PSI_T_FLOAT:
- val->ival.dval = val->ival.fval;
- /* no break */
- case PSI_T_DOUBLE:
- val->type = PSI_T_FLOAT;
- type->type = PSI_T_FLOAT;
- zend_string_release(type->name);
- type->name = zend_string_init_interned(ZEND_STRL("float"), 1);
- break;
- case PSI_T_UINT64:
- if (val->ival.u64 > ZEND_LONG_MAX) {
- data->error(data, val->token, PSI_WARNING,
- "Integer too big for signed representation: '%" PRIu64 "'",
- val->ival.u64);
- }
- default:
- /* FIXME big integers */
- val->type = PSI_T_INT;
- type->type = PSI_T_INT;
- zend_string_release(type->name);
- type->name = zend_string_init_interned(ZEND_STRL("int"), 1);
- break;
- }
- psi_num_exp_free(&val->data.num);
- return true;
- }