pike.git / src / pike_macros.h

version» Context lines:

pike.git/src/pike_macros.h:11:   #include "global.h"      #ifdef HAVE_SYS_PARAM_H   #include <sys/param.h>   #endif      #include "pike_memory.h"      #define PTR_TO_INT(PTR) ((size_t) ((char *) (PTR) - (char *) NULL))    - #define OFFSETOF(str_type, field) \ -  PTR_TO_INT(& (((struct str_type *)NULL)->field)) - #define BASEOF(ptr, str_type, field) \ -  ((struct str_type *)((char*)ptr - OFFSETOF(str_type, field))) - #ifdef __cplusplus - extern "C++" { -  template<typename T> static inline int low_alignof_(T *ignored) -  { -  struct { char x; T y;} *bar = NULL; -  return PTR_TO_INT(&bar->y); -  } - } - #define ALIGNOF(X) low_alignof_((X*)NULL) + #if __GNUC__ >= 4 + # define OFFSETOF(T,X) __builtin_offsetof(struct T,X) + # define ALIGNOF(X) __alignof__(X)   #else - #define ALIGNOF(X) OFFSETOF({ char ignored_; X fooo_;}, fooo_) + # define OFFSETOF(T, X) PTR_TO_INT(& (((struct T *)NULL)->X)) + # define ALIGNOF(X) OFFSETOF({ char ignored_; X fooo_;}, fooo_)   #endif - /* #define ALIGNOF(X) PTR_TO_INT(&(((struct { char ignored_ ; X fooo_; } *)NULL)->fooo_)) */ +     -  + #define BASEOF(ptr, str_type, field) \ +  ((struct str_type *)((char*)ptr - OFFSETOF(str_type, field))) +    #define NELEM(a) (sizeof (a) / sizeof ((a)[0]))   #define ALLOC_STRUCT(X) ( (struct X *)xalloc(sizeof(struct X)) )      #define MINIMUM(X,Y) ((X)<(Y)?(X):(Y))   #define MAXIMUM(X,Y) ((X)>(Y)?(X):(Y))         PMOD_EXPORT extern const char Pike_is8bitalnum_vector[];   #define is8bitalnum(X) (Pike_is8bitalnum_vector[((unsigned)(X))&0xff] == '1')   
pike.git/src/pike_macros.h:122:      #define PIKE_XCONCAT(X,Y) PIKE_CONCAT(X,Y)   #define PIKE_XCONCAT3(X,Y,Z) PIKE_CONCAT(X,Y,Z)   #define PIKE_XCONCAT4(X,Y,Z,Q) PIKE_CONCAT(X,Y,Z,Q)      /* Useful to get a literal comma in an argument to a macro. */   #define COMMA ,      /* Necessary to pass an empty argument to a macro for some preprocessors. */   #define NOTHING -  - /* Needed for fsort_template.h */ - PMOD_EXPORT int my_log2(size_t x); -  +    #endif