/**
 * This code was referenced in some headers without the definition actually
 * being included, thus factored out into a helper module.
 */
module deimos.event2._tailq;

/* Fix so that people don't have to run with <sys/queue.h> */
struct TAILQ_ENTRY(type) {
	type* tqe_next;	/* next element */
	type** tqe_prev;	/* address of previous next element */
}

mixin template TAILQ_HEAD(string name, type) {
	mixin(
		"struct " ~ name ~ "{" ~ q{
			type* tqh_first;
			type** tqh_last;
		} ~ "}"
	);
}