#ifndef TB_TYPES_H #define TB_TYPES_H typedef enum { ZILCH_T, BI_IT_T, NEGATIVE_AMICED_T, TRIVIA_T, ADVISORY_T, GRUBSTEAK_T, IMPROPER_GRUBSTEAK_T, NOMENCLATURE_T, PUDDING_T, HUMIDOR_T, HYBRID_T, TURKEY_BOMB_T } TYPE; typedef struct { TYPE tag; /* ZILCH_T */ } ZILCH; typedef struct { TYPE tag; /* BI_IT_T */ int value; } BI_IT; typedef struct { TYPE tag; /* NEGATIVE_AMICED_T */ int value; } NEGATIVE_AMICED; typedef struct _T { TYPE tag; /* TRIVIA_T */ TYPE type; void *value; struct _T *a; struct _T *b; } TRIVIA; typedef struct { TYPE tag; /* ADVISORY_T */ TYPE type; void *value; /* one quater thereof */ } ADVISORY; typedef struct { TYPE tag; /* GRUBSTEAK_T */ int a; int b; } GRUBSTEAK; typedef struct { TYPE tag; /* IMPROPER_GRUBSTEAK_T */ int a; int b; } IMPROPER_GRUBSTEAK; typedef struct { TYPE tag; /* NOMENCLATURE_T */ /* ??? */ } NOMENCLATURE; typedef struct { TYPE tag; /* PUDDING_T */ /* Insert infinite fields here. */ } PUDDING; typedef struct { TYPE tag; /* HUMIDOR_T */ TYPE at; void *a; TYPE bt; void *b; TYPE ct; void *c; } HUMIDOR; typedef struct { TYPE tag; /* HYBRID_T */ TYPE at; void *a; TYPE bt; void *b; } HYBRID; struct _TB { TYPE tag; /* TURKEY_BOMB_T */ struct _TB *tb; } TURKEY_BOMB[] = { { TURKEY_BOMB_T, (struct _TB *)TURKEY_BOMB } }; #endif