SYNOPSIS

  • #include <allegro5/allegro.h>
    
    al_fixed al_fixadd(al_fixed x, al_fixed y);
    
    

DESCRIPTION

Although fixed point numbers can be added with the normal + integer operator, that doesn\[aq]t provide any protection against overflow. If overflow is a problem, you should use this function instead. It is slower than using integer operators, but if an overflow occurs it will set Allegro\[aq]s errno and clamp the result, rather than just letting it wrap.

Example:

  •     al_fixed result;
    
        /* This will put 5035 into `result\[aq]. */
        result = al_fixadd(al_itofix(5000), al_itofix(35));
    
        /* Sets errno and puts -32768 into `result\[aq]. */
        result = al_fixadd(al_itofix(-31000), al_itofix(-3000));
        assert(!al_get_errno()); /* This will fail. */
    
    

RETURN VALUE

Returns the clamped result of adding x to y, setting Allegro\[aq]s errno to ERANGE if there was an overflow.

RELATED TO al_fixadd…

al_fixsub(3alleg5), al_fixmul(3alleg5), al_fixdiv(3alleg5).