fixed inline to INLINE
[libfirm] / ir / adt / offset.h
1 /**
2  * @file   offset.h
3  * @date   31.05.2005
4  * @author Sebastian Hack
5  *
6  * Firm's own offset_of and container_of
7  *
8  * Copyright (C) 2005 Universitaet Karlsruhe
9  * Released under the GPL
10  */
11
12 #ifndef _OFFSET_H
13 #define _OFFSET_H
14
15 /**
16  * Get the offset of a member of a struct.
17  * @param type   The type of the struct member is in.
18  * @param member The name of the member.
19  * @return       The offset of member in type in bytes.
20  */
21 #define firm_offset_of(type, member)            ((char *) &((type *) 0)->member - (char *) 0)
22
23 /**
24  * Make pointer to the struct from a pointer to a member of that struct.
25  * @param ptr     The pointer to the member.
26  * @param type    The type of the struct.
27  * @param member  The name of the member.
28  * @return        A pointer to the struct member is in.
29  */
30 #define firm_container_of(ptr, type, member)            ((type *) ((char *) (ptr) - firm_offset_of(type, member)))
31
32 #endif /* _OFFSET_H */