On Sun, Nov 01, 2015 at 12:19:47PM -0500, Ganesh Ajjanagadde wrote: > This is of use for defining comparator callbacks. Common approaches like > return x-y are not safe due to the risks of overflow. > Furthermore, the (x > y) - (x < y) trick is optimized to branchless > code. > This also documents this macro accordingly. > > Signed-off-by: Ganesh Ajjanagadde <gajjanaga...@gmail.com> > --- > libavutil/common.h | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/libavutil/common.h b/libavutil/common.h > index 6594f7d..6f0f582 100644 > --- a/libavutil/common.h > +++ b/libavutil/common.h > @@ -76,6 +76,17 @@ > */ > #define FFNABS(a) ((a) <= 0 ? (a) : (-(a))) > > +/** > + * Comparator. > + * For two numerical expressions x and y, gives 1 if x > y, -1 if x < y, and > 0 > + * if x == y. This is useful for instance in a qsort comparator callback. > + * Furthermore, compilers are able to optimize this to branchless code, and > + * there is no risk of overflow with signed types. > + * As with many macros, this evaluates its argument multiple times, it thus > + * must not have a side-effect. > + */ > +#define FFDIFFSIGN(x,y) (((x)>(y)) - ((x)<(y)))
LGTM (maybe wait a bit before pushing so others can comment too, people may find the text too verbose or something else) [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB It is dangerous to be right in matters on which the established authorities are wrong. -- Voltaire
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel