1 /* 2 * Copyright (c) 2004-2010 Alex Pankratov. All rights reserved. 3 * 4 * Hierarchical memory allocator, 1.2.1 5 * http://swapped.cc/halloc 6 */ 7 8 /* 9 * The program is distributed under terms of BSD license. 10 * You can obtain the copy of the license by visiting: 11 * 12 * http://www.opensource.org/licenses/bsd-license.php 13 */ 14 15 #ifndef _LIBP_MACROS_H_ 16 #define _LIBP_MACROS_H_ 17 18 #include <stddef.h> /* offsetof */ 19 20 /* 21 restore pointer to the structure by a pointer to its field 22 */ 23 #define structof(p,t,f) ((t*)(- offsetof(t,f) + (char*)(p))) 24 25 /* 26 * redefine for the target compiler 27 */ 28 #ifdef _WIN32 29 #define static_inline static __inline 30 #else 31 #define static_inline static __inline__ 32 #endif 33 34 35 #endif 36 37