Home | History | Annotate | Download | only in libiptc
      1 #ifndef _LINUX_STDDEF_H
      2 #define _LINUX_STDDEF_H
      3 
      4 #undef NULL
      5 #if defined(__cplusplus)
      6 #define NULL 0
      7 #else
      8 #define NULL ((void *)0)
      9 #endif
     10 
     11 #undef offsetof
     12 #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
     13 
     14 
     15 /**
     16  * container_of - cast a member of a structure out to the containing structure
     17  *
     18  * @ptr:	the pointer to the member.
     19  * @type:	the type of the container struct this is embedded in.
     20  * @member:	the name of the member within the struct.
     21  *
     22  */
     23 #define container_of(ptr, type, member) ({			\
     24         const typeof( ((type *)0)->member ) *__mptr = (ptr);	\
     25         (type *)( (char *)__mptr - offsetof(type,member) );})
     26 
     27 /*
     28  * Check at compile time that something is of a particular type.
     29  * Always evaluates to 1 so you may use it easily in comparisons.
     30  */
     31 #define typecheck(type,x) \
     32 ({	type __dummy; \
     33 	typeof(x) __dummy2; \
     34 	(void)(&__dummy == &__dummy2); \
     35 	1; \
     36 })
     37 
     38 
     39 #endif
     40