X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libopenjpeg%2Fint.h;h=a39772b02266d40659339762443d039af5099bd9;hb=2cd3f046e54cf1b68e95be88452eb74b4c81a879;hp=9d738685dd1154c72a2f6448c290675467d21764;hpb=8d7b0c9c0564514d7edd36e8cc260a267c7d4213;p=openjpeg.git diff --git a/libopenjpeg/int.h b/libopenjpeg/int.h index 9d738685..a39772b0 100644 --- a/libopenjpeg/int.h +++ b/libopenjpeg/int.h @@ -1,9 +1,10 @@ /* + * Copyright (c) 2002-2007, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium + * Copyright (c) 2002-2007, Professor Benoit Macq * Copyright (c) 2001-2003, David Janssens * Copyright (c) 2002-2003, Yannick Verschueren - * Copyright (c) 2003-2005, Francois Devaux and Antonin Descampe - * Copyright (c) 2005, Hervé Drolon, FreeImage Team - * Copyright (c) 2002-2005, Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium + * Copyright (c) 2003-2007, Francois-Olivier Devaux and Antonin Descampe + * Copyright (c) 2005, Herve Drolon, FreeImage Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -46,16 +47,34 @@ The functions in INT.H have for goal to realize operations on integers. Get the minimum of two integers @return Returns a if a < b else b */ -INLINE int int_min(int a, int b) { +static INLINE int int_min(int a, int b) { return a < b ? a : b; } + +/** +Get the minimum of two integers +@return Returns a if a < b else b +*/ +static INLINE OPJ_UINT32 uint_min(OPJ_UINT32 a, OPJ_UINT32 b) { + return a < b ? a : b; +} + /** Get the maximum of two integers @return Returns a if a > b else b */ -INLINE int int_max(int a, int b) { +static INLINE int int_max(int a, int b) { return (a > b) ? a : b; } + +/** +Get the maximum of two integers +@return Returns a if a > b else b +*/ +static INLINE OPJ_UINT32 uint_max(OPJ_UINT32 a, OPJ_UINT32 b) { + return (a > b) ? a : b; +} + /** Clamp an integer inside an interval @return @@ -65,7 +84,7 @@ Clamp an integer inside an interval
  • Returns min if (a < min) */ -INLINE int int_clamp(int a, int min, int max) { +static INLINE int int_clamp(int a, int min, int max) { if (a < min) return min; if (a > max) @@ -75,41 +94,54 @@ INLINE int int_clamp(int a, int min, int max) { /** @return Get absolute value of integer */ -INLINE int int_abs(int a) { +static INLINE int int_abs(int a) { return a < 0 ? -a : a; } /** Divide an integer and round upwards @return Returns a divided by b */ -INLINE int int_ceildiv(int a, int b) { +static INLINE int int_ceildiv(int a, int b) { return (a + b - 1) / b; } /** Divide an integer by a power of 2 and round upwards @return Returns a divided by 2^b */ -INLINE int int_ceildivpow2(int a, int b) { +static INLINE int int_ceildivpow2(int a, int b) { return (a + (1 << b) - 1) >> b; } /** Divide an integer by a power of 2 and round downwards @return Returns a divided by 2^b */ -INLINE int int_floordivpow2(int a, int b) { +static INLINE int int_floordivpow2(int a, int b) { return a >> b; } /** Get logarithm of an integer and round downwards @return Returns log2(a) */ -INLINE int int_floorlog2(int a) { +static INLINE int int_floorlog2(int a) { int l; for (l = 0; a > 1; l++) { a >>= 1; } return l; } +/** +Get logarithm of an integer and round downwards +@return Returns log2(a) +*/ +static INLINE OPJ_UINT32 uint_floorlog2(OPJ_UINT32 a) { + OPJ_UINT32 l; + for (l = 0; a > 1; ++l) + { + a >>= 1; + } + return l; +} + /* ----------------------------------------------------------------------- */ /*@}*/