2009-11-18 02:42:52 +03:00
/*-*- Mode: C; c-basic-offset: 8 -*-*/
# ifndef foomacrohfoo
# define foomacrohfoo
2010-02-03 15:03:47 +03:00
/***
This file is part of systemd .
Copyright 2010 Lennart Poettering
systemd is free software ; you can redistribute it and / or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation ; either version 2 of the License , or
( at your option ) any later version .
systemd is distributed in the hope that it will be useful , but
WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
General Public License for more details .
You should have received a copy of the GNU General Public License
along with systemd ; If not , see < http : //www.gnu.org/licenses/>.
* * */
2009-11-18 02:42:52 +03:00
# include <assert.h>
# include <sys/types.h>
2010-02-03 16:25:37 +03:00
# define _printf_attr(a,b) __attribute__ ((format (printf, a, b)))
# define _sentinel __attribute__ ((sentinel))
# define _noreturn __attribute__((noreturn))
# define _unused __attribute__ ((unused))
# define _destructor __attribute__ ((destructor))
# define _pure __attribute__ ((pure))
# define _const __attribute__ ((const))
# define _deprecated __attribute__ ((deprecated))
# define _packed __attribute__ ((packed))
# define _malloc __attribute__ ((malloc))
2009-11-18 02:42:52 +03:00
/* Rounds up */
static inline size_t ALIGN ( size_t l ) {
return ( ( l + sizeof ( void * ) - 1 ) & ~ ( sizeof ( void * ) - 1 ) ) ;
}
# define ELEMENTSOF(x) (sizeof(x) / sizeof((x)[0]))
# define MAX(a,b) \
__extension__ ( { \
typeof ( a ) _a = ( a ) ; \
typeof ( b ) _b = ( b ) ; \
_a > _b ? _a : _b ; \
} )
# define MIN(a,b) \
__extension__ ( { \
typeof ( a ) _a = ( a ) ; \
typeof ( b ) _b = ( b ) ; \
_a < _b ? _a : _b ; \
} )
# define CLAMP(x, low, high) \
__extension__ ( { \
typeof ( x ) _x = ( x ) ; \
typeof ( low ) _low = ( low ) ; \
typeof ( high ) _high = ( high ) ; \
( ( _x > _high ) ? _high : ( ( _x < _low ) ? _low : _x ) ) ; \
} )
# define assert_not_reached(t) assert(!(t))
# define assert_se(x) assert(x)
# define assert_cc(expr) \
do { \
switch ( 0 ) { \
case 0 : \
case ! ! ( expr ) : \
; \
} \
} while ( false )
# define PTR_TO_UINT(p) ((unsigned int) ((uintptr_t) (p)))
# define UINT_TO_PTR(u) ((void*) ((uintptr_t) (u)))
# define PTR_TO_UINT32(p) ((uint32_t) ((uintptr_t) (p)))
# define UINT32_TO_PTR(u) ((void*) ((uintptr_t) (u)))
# define PTR_TO_INT(p) ((int) ((intptr_t) (p)))
# define INT_TO_PTR(u) ((void*) ((intptr_t) (u)))
# define TO_INT32(p) ((int32_t) ((intptr_t) (p)))
# define INT32_TO_PTR(u) ((void*) ((intptr_t) (u)))
2010-01-24 02:38:51 +03:00
# define memzero(x,l) (memset((x), 0, (l)))
# define zero(x) (memzero(&(x), sizeof(x)))
2010-01-26 06:18:44 +03:00
# define char_array_0(x) x[sizeof(x)-1] = 0;
2009-11-18 02:42:52 +03:00
# endif