pike.git / src / block_alloc.h

version» Context lines:

pike.git/src/block_alloc.h:1: + #define PRE_INIT_BLOCK(X)   #define INIT_BLOCK(X)   #define EXIT_BLOCK(X)   #define BLOCK_ALLOC(DATA,BSIZE) \    \   struct PIKE_CONCAT(DATA,_block) \   { \    struct PIKE_CONCAT(DATA,_block) *next; \    struct DATA x[BSIZE]; \   }; \    \
pike.git/src/block_alloc.h:23:    { \    fprintf(stderr,"Fatal: out of memory.\n"); \    exit(17); \    } \    n->next=PIKE_CONCAT(DATA,_blocks); \    PIKE_CONCAT(DATA,_blocks)=n; \    \    for(e=0;e<BSIZE;e++) \    { \    n->x[e].next=PIKE_CONCAT3(free_,DATA,s); \ +  PRE_INIT_BLOCK( (n->x+e) ); \    PIKE_CONCAT3(free_,DATA,s)=n->x+e; \    } \    } \    \    tmp=PIKE_CONCAT3(free_,DATA,s); \    PIKE_CONCAT3(free_,DATA,s)=tmp->next; \    INIT_BLOCK(tmp); \    return tmp; \   } \    \   inline void PIKE_CONCAT(free_,DATA)(struct DATA *d) \   { \    EXIT_BLOCK(d); \    d->next=PIKE_CONCAT3(free_,DATA,s); \ -  +  PRE_INIT_BLOCK(d); \    PIKE_CONCAT3(free_,DATA,s)=d; \   } \    \   void PIKE_CONCAT3(free_all_,DATA,_blocks)(void) \   { \    struct PIKE_CONCAT(DATA,_block) *tmp; \    while((tmp=PIKE_CONCAT(DATA,_blocks))) \    { \    PIKE_CONCAT(DATA,_blocks)=tmp->next; \    free((char *)tmp); \    } \    PIKE_CONCAT(DATA,_blocks)=0; \    PIKE_CONCAT3(free_,DATA,s)=0; \   } \