pike.git / src / pike_macros.h

version» Context lines:

pike.git/src/pike_macros.h:1:   /*   || This file is part of Pike. For copyright information see COPYRIGHT.   || Pike is distributed under GPL, LGPL and MPL. See the file COPYING   || for more information. - || $Id: pike_macros.h,v 1.34 2003/01/02 15:33:43 grubba Exp $ + || $Id: pike_macros.h,v 1.35 2003/01/02 18:22:37 grubba Exp $   */      #ifndef MACROS_H   #define MACROS_H      #include <global.h>      #ifdef HAVE_SYS_PARAM_H   #include <sys/param.h>   #endif      #include "pike_memory.h"    - #define OFFSETOF(str_type, field) ((size_t)& (((struct str_type *)0)->field)) + #define OFFSETOF(str_type, field) \ +  ((size_t)(((char *)& (((struct str_type *)0)->field))-((char *)0)))   #define BASEOF(ptr, str_type, field) \ - ((struct str_type *)((char*)ptr - (size_t)& (((struct str_type *)0)->field))) +  ((struct str_type *)((char*)ptr - OFFSETOF(str_type, field))) + #define ALIGNOF(X) OFFSETOF({ char ignored_; X fooo_;}, fooo_) + /* #define ALIGNOF(X) ((size_t)(((char *)&(((struct { char ignored_ ; X fooo_; } *)0)->fooo_))-((char *)0))) */      #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))         #define is8bitalnum(X) ("0000000000000000" \    "0000000000000000" \
pike.git/src/pike_macros.h:43:    "1111111011111111" \    "1111111111111111" \    "1111111011111111"[((unsigned)(X))&0xff] == '1')      #define isidchar(X) is8bitalnum(X)      #ifndef HAVE_ISGRAPH   #define isgraph(X) (ispunct(X) || isupper(X) || islower(X) || isdigit(X))   #endif /* !HAVE_ISGRAPH */    - /* -  * #define ALIGNOF(X) __alignof__(X) -  * #define ALIGNOF(X) (sizeof(X)>ALIGN_BOUND?ALIGN_BOUND:( 1<<my_log2(sizeof(X)))) -  */ +     - #define ALIGNOF(X) ((size_t)(((char *)&(((struct { char ignored_ ; X fooo_; } *)0)->fooo_))-((char *)0))) +       #define DO_ALIGN(X,Y) (((size_t)(X)+((Y)-1)) & -(Y))   #define CONSTANT_STRLEN(X) (sizeof(X) - sizeof(""))      #define SET_NEXT_AND_FREE(p,free_item) do{ \    next=p->next; \    while(p->refs == 1 && (next=p->next)) \    { \    add_ref(next); \    free_item(p); \