/* * 2iota.h * Global variables and macros for 2Iota. * $Id: 2iota.h 518 2010-04-28 17:48:38Z cpressey $ */ #ifndef __2IOTA_H #define __2IOTA_H #ifdef DETECT_LEAKS #include #endif #include /*#include */ #define errx(err, msg) { \ fprintf(stderr, "%s\n", msg); \ exit(err); \ } #ifdef TRACK_ALLOCATION #define TRACK_MALLOC(pointer, structdesc) \ fprintf(stderr, "***** MALLOC'ed " structdesc \ " %08lx\n", pointer); #define TRACK_FREE(pointer, structdesc) \ fprintf(stderr, "***** FREE'ed " structdesc \ " %08lx\n", pointer); #else #define TRACK_MALLOC(pointer, structdesc) #define TRACK_FREE(pointer, structdesc) #endif #define MALLOC(pointer, structure, structdesc) \ { \ if ((pointer = (struct structure *) \ malloc(sizeof(struct structure))) == NULL) \ errx(1, "Can't allocate " structdesc); \ TRACK_MALLOC(pointer, structdesc); \ } #define FREE(pointer, structdesc) \ { \ free(pointer); \ TRACK_FREE(pointer, structdesc); \ } extern struct symbol_table *gstab; /* general symbol table */ extern struct symbol_table *astab; /* symbol table for alphabets */ extern struct event_table *event_table; /* global table of events */ extern struct equeue *event_queue; /* global event queue */ extern struct ehist *event_hist; /* global event history log */ #endif /* !__2IOTA_H */