コード例 #1
0
ファイル: typeconv-bc.c プロジェクト: siam/jato
static int convert_conversion(struct parse_context *ctx, enum vm_type to_type)
{
    struct expression *from_expression, *conversion_expression;
    enum vm_type from_type;

    from_expression = stack_pop(ctx->bb->mimic_stack);
    from_type = from_expression->vm_type;

    if (from_type == J_DOUBLE && to_type == J_FLOAT)
        conversion_expression = conversion_double_to_float_expr(from_expression);
    else if (from_type == J_FLOAT && to_type == J_DOUBLE)
        conversion_expression = conversion_float_to_double_expr(from_expression);
    else if (to_type == J_FLOAT)
        conversion_expression = conversion_to_float_expr(to_type, from_expression);
    else if (from_type == J_FLOAT)
        conversion_expression = conversion_from_float_expr(to_type, from_expression);
    else if (to_type == J_DOUBLE)
        conversion_expression = conversion_to_double_expr(to_type, from_expression);
    else if (from_type == J_DOUBLE)
        conversion_expression = conversion_from_double_expr(to_type, from_expression);
    else
        conversion_expression = conversion_expr(to_type, from_expression);

    if (!conversion_expression)
        return warn("out of memory"), -ENOMEM;

    convert_expression(ctx, conversion_expression);
    return 0;
}
コード例 #2
0
ファイル: typeconv-bc.c プロジェクト: vegard/jato
static int convert_conversion(struct parse_context *ctx, enum vm_type to_type)
{
	struct expression *from_expression, *conversion_expression;

	from_expression = stack_pop(ctx->bb->mimic_stack);

	if (to_type == J_FLOAT)
		conversion_expression = conversion_to_float_expr(to_type, from_expression);
	else if (from_expression->vm_type == J_FLOAT)
		conversion_expression = conversion_from_float_expr(to_type, from_expression);
	else
		conversion_expression = conversion_expr(to_type, from_expression);

	if (!conversion_expression)
		return -ENOMEM;

	convert_expression(ctx, conversion_expression);
	return 0;
}