X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libopenjpeg%2Fint.h;h=a39772b02266d40659339762443d039af5099bd9;hb=2cd3f046e54cf1b68e95be88452eb74b4c81a879;hp=a1b590dd98a65ac4819b8348acd621ba9df19703;hpb=4be829988a6423a4ca9582e0ec6948837b529a1b;p=openjpeg.git diff --git a/libopenjpeg/int.h b/libopenjpeg/int.h index a1b590dd..a39772b0 100644 --- a/libopenjpeg/int.h +++ b/libopenjpeg/int.h @@ -1,5 +1,10 @@ /* - * Copyright (c) 2001-2002, David Janssens + * 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-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 @@ -23,64 +28,123 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ - #ifndef __INT_H #define __INT_H +/** +@file int.h +@brief Implementation of operations on integers (INT) -/* - * Get the minimum of two integers. - * - * returns a if a < b else b - */ -int int_min(int a, int b); +The functions in INT.H have for goal to realize operations on integers. +*/ -/* - * Get the maximum of two integers. - * - * returns a if a > b else b - */ -int int_max(int a, int b); +/** @defgroup INT INT - Implementation of operations on integers */ +/*@{*/ -/* - * Clamp an integer inside an interval. - * - * return a if (min < a < max) - * return max if (a > max) - * return min if (a < min) - */ -int int_clamp(int a, int min, int max); +/** @name Exported functions (see also openjpeg.h) */ +/*@{*/ +/* ----------------------------------------------------------------------- */ +/** +Get the minimum of two integers +@return Returns a if a < b else b +*/ +static INLINE int int_min(int a, int b) { + return a < b ? a : b; +} -/* - * Get absolute value of integer. - */ -int int_abs(int a); +/** +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; +} -/* - * Divide an integer and round upwards. - * - * a divided by b - */ -int int_ceildiv(int a, int b); +/** +Get the maximum of two integers +@return Returns a if a > b else b +*/ +static INLINE int int_max(int a, int b) { + return (a > b) ? a : b; +} -/* - * Divide an integer by a power of 2 and round upwards. - * - * a divided by 2^b - */ -int int_ceildivpow2(int a, int 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; +} -/* - * Divide an integer by a power of 2 and round downwards. - * - * a divided by 2^b - */ -int int_floordivpow2(int a, int b); +/** +Clamp an integer inside an interval +@return + +*/ +static INLINE int int_clamp(int a, int min, int max) { + if (a < min) + return min; + if (a > max) + return max; + return a; +} +/** +@return Get absolute value of integer +*/ +static INLINE int int_abs(int a) { + return a < 0 ? -a : a; +} +/** +Divide an integer and round upwards +@return Returns a divided by 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 +*/ +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 +*/ +static INLINE int int_floordivpow2(int a, int b) { + return a >> b; +} +/** +Get logarithm of an integer and round downwards +@return Returns log2(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; +} -/* - * Get logarithm of an integer and round downwards. - * - * log2(a) - */ -int int_floorlog2(int a); +/* ----------------------------------------------------------------------- */ +/*@}*/ + +/*@}*/ #endif