git @ Cat's Eye Technologies beta-Juliet / master src / 2iota.h
master

Tree @master (Download .tar.gz)

2iota.h @masterraw · history · blame

/*
 * 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 <leak_detector.h>
#endif

#include <stdio.h>
/*#include <err.h>*/

#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 */