1 /* 2 * include/common/tools.h 3 * Trivial macros needed everywhere. 4 * 5 * Copyright (C) 2000-2011 Willy Tarreau - w@1wt.eu 6 * 7 * This library is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU Lesser General Public 9 * License as published by the Free Software Foundation, version 2.1 10 * exclusively. 11 * 12 * This library is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * Lesser General Public License for more details. 16 * 17 * You should have received a copy of the GNU Lesser General Public 18 * License along with this library; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 */ 21 22 #ifndef _COMMON_TOOLS_H 23 #define _COMMON_TOOLS_H 24 25 #include <sys/param.h> 26 #include <common/config.h> 27 28 #ifndef MIN 29 #define MIN(a, b) (((a) < (b)) ? (a) : (b)) 30 #endif 31 32 #ifndef MAX 33 #define MAX(a, b) (((a) > (b)) ? (a) : (b)) 34 #endif 35 36 #define SWAP(a, b) do { typeof(a) t; t = a; a = b; b = t; } while(0) 37 38 /* return an integer of type <ret> with only the highest bit set. <ret> may be 39 * both a variable or a type. 40 */ 41 #define MID_RANGE(ret) ((typeof(ret))1 << (8*sizeof(ret) - 1)) 42 43 /* return the largest possible integer of type <ret>, with all bits set */ 44 #define MAX_RANGE(ret) (~(typeof(ret))0) 45 46 #endif /* _COMMON_TOOLS_H */ 47 48 /* 49 * Local variables: 50 * c-indent-level: 8 51 * c-basic-offset: 8 52 * End: 53 */ 54