{
*tmp = *expr->data.operand.left;
tmp->data.constant.value = v;
- if (ex->disc->convertf(ex, tmp, type, expr->data.operand.right
- ? expr->data.operand.right->data.variable.symbol
- : NULL, 0, ex->disc)) {
+ if (ex->disc->convertf(tmp, type, 0)) {
exerror("%s: cannot convert %s value to %s",
expr->data.operand.left->data.variable.symbol->name,
extypename(ex, expr->data.operand.left->type), extypename(ex, type));
{
tmp.data.constant.value.string = exprintf(ex->ve, "%g", v.floating);
}
- else if (ex->disc->convertf(ex, &tmp, STRING, expr->data.operand.right
- ? expr->data.operand.right->data.variable.symbol
- : NULL, 0, ex->disc)) {
+ else if (ex->disc->convertf(&tmp, STRING, 0)) {
tmp.data.constant.value.string = exprintf(ex->ve, "%g", v.floating);
}
tmp.type = STRING;
case F2X:
tmp = *expr->data.operand.left;
tmp.data.constant.value = v;
- if (ex->disc->convertf(ex, &tmp, expr->type, expr->data.operand.right
- ? expr->data.operand.right->data.variable.symbol
- : NULL, 0, ex->disc))
+ if (ex->disc->convertf(&tmp, expr->type, 0))
exerror("%s: cannot convert floating value to external", tmp.data.variable.symbol->name);
tmp.type = expr->type;
return tmp.data.constant.value;
str = exprintf(ex->ve, "%lld", (long long)v.integer);
tmp.data.constant.value.string = str;
}
- else if (ex->disc->convertf(ex, &tmp, STRING, expr->data.operand.right
- ? expr->data.operand.right->data.variable.symbol
- : NULL, 0, ex->disc)) {
+ else if (ex->disc->convertf(&tmp, STRING, 0)) {
char *str = NULL;
if (expr->data.operand.left->type == UNSIGNED)
str = exprintf(ex->ve, "%llu", (unsigned long long)v.integer);
case I2X:
tmp = *expr->data.operand.left;
tmp.data.constant.value = v;
- if (ex->disc->convertf(ex, &tmp, expr->type, expr->data.operand.right
- ? expr->data.operand.right->data.variable.symbol
- : NULL, 0, ex->disc))
+ if (ex->disc->convertf(&tmp, expr->type, 0))
exerror("%s: cannot convert integer value to external", tmp.data.variable.symbol->name);
tmp.type = expr->type;
return tmp.data.constant.value;
case S2F:
tmp = *expr->data.operand.left;
tmp.data.constant.value = v;
- if (ex->disc->convertf(ex, &tmp, FLOATING, expr->data.operand.right
- ? expr->data.operand.right->data.variable.symbol
- : NULL, 0, ex->disc))
+ if (ex->disc->convertf(&tmp, FLOATING, 0))
{
tmp.data.constant.value.floating = strtod(v.string, &e);
if (*e)
case S2I:
tmp = *expr->data.operand.left;
tmp.data.constant.value = v;
- if (ex->disc->convertf(ex, &tmp, INTEGER, expr->data.operand.right
- ? expr->data.operand.right->data.variable.symbol
- : NULL, 0, ex->disc))
+ if (ex->disc->convertf(&tmp, INTEGER, 0))
{
if (v.string) {
tmp.data.constant.value.integer = strtoll(v.string, &e, 0);
case S2X:
tmp = *expr->data.operand.left;
tmp.data.constant.value = v;
- if (ex->disc->convertf(ex, &tmp, expr->type, expr->data.operand.right
- ? expr->data.operand.right->data.variable.symbol
- : NULL, 0, ex->disc))
+ if (ex->disc->convertf(&tmp, expr->type, 0))
exerror("%s: cannot convert string value to external", tmp.data.variable.symbol->name);
tmp.type = expr->type;
return tmp.data.constant.value;
Exid_t *sym = (xref ? xref->data.variable.symbol : NULL);
if (EXTERNAL(t2t)) {
int a = (arg ? arg : 1);
- if ((*p->disc->convertf) (p, x, type, sym, a, p->disc) < 0) {
+ if ((*p->disc->convertf) (x, type, a) < 0) {
if (xref) {
if ((sym->lex == FUNCTION) && arg)
exerror ("%s: cannot use value of type %s as argument %d in function %s",
case X2X:
if (xref && xref->op == ID)
{
- if ((*p->disc->convertf)(p, x, type, xref->data.variable.symbol, arg, p->disc) < 0)
+ if ((*p->disc->convertf)(x, type, arg) < 0)
exerror("%s: cannot cast constant %s to %s", xref->data.variable.symbol->name, extypename(p, x->type), extypename(p, type));
}
- else if ((*p->disc->convertf)(p, x, type, NULL, arg, p->disc) < 0)
+ else if ((*p->disc->convertf)(x, type, arg) < 0)
exerror("cannot cast constant %s to %s", extypename(p, x->type), extypename(p, type));
break;
case F2I:
{
if (x->arg->op == CONSTANT && x->arg->data.constant.reference && expr.program->disc->convertf)
{
- if ((*expr.program->disc->convertf)(expr.program, x->arg, STRING, x->arg->data.constant.reference, 0, expr.program->disc) < 0)
+ if ((*expr.program->disc->convertf)(x->arg, STRING, 0) < 0)
exerror("cannot convert string format argument");
else x->arg->data.constant.value.string = vmstrdup(expr.program->vm, x->arg->data.constant.value.string);
}