#ifndef TCL_ERROR
#define TCL_ERROR (1)
#endif
#ifndef TCL_OK
#define TCL_OK (0)
#endif
#ifndef NULL
#define NULL (0)
#endif
#define ISSPACE(c) (isspace ((unsigned char) c))
#define ROUND_ENTRY_SIZE(size) ((((size) + tclhandleEntryAlignment - 1) / \
tclhandleEntryAlignment) * tclhandleEntryAlignment)
#define NULL_IDX -1
#define ALLOCATED_IDX -2
typedef unsigned char ubyte_t;
typedef ubyte_t *ubyte_pt;
typedef struct {
int entrySize;
int tableSize;
int freeHeadIdx;
char *handleFormat;
ubyte_pt bodyPtr;
} tblHeader_t;
typedef tblHeader_t *tblHeader_pt;
typedef struct {
int freeLink;
} entryHeader_t;
typedef entryHeader_t *entryHeader_pt;
#define ENTRY_HEADER_SIZE (ROUND_ENTRY_SIZE (sizeof (entryHeader_t)))
#define TBL_INDEX(hdrPtr, idx) \
((entryHeader_pt) (hdrPtr->bodyPtr + (hdrPtr->entrySize * idx)))
#define TBL_ENTRY(hdrPtr, entryPtr) \
((unsigned long) ((entryPtr - (hdrPtr->bodyPtr)) / (hdrPtr->entrySize)))
#define USER_AREA(entryPtr) \
(void *) (((ubyte_pt) entryPtr) + ENTRY_HEADER_SIZE);
#define HEADER_AREA(entryPtr) \
(entryHeader_pt) (((ubyte_pt) entryPtr) - ENTRY_HEADER_SIZE);
void * tclhandleFreeIndex (tblHeader_pt headerPtr, unsigned long entryIdx);
void * tclhandleFree (tblHeader_pt headerPtr, char *handle);
tblHeader_pt tclhandleInit (char *prefix, int entrySize, int initEntries);
int tclhandleReset (tblHeader_pt tblHdrPtr, int initEntries);
int tclhandleDestroy (tblHeader_pt tblHdrPtr);
void * tclhandleXlateIndex (tblHeader_pt headerPtr, unsigned long entryIdx);
void * tclhandleXlate (tblHeader_pt headerPtr, char *handle);
entryHeader_pt tclhandleAlloc (tblHeader_pt tblHdrPtr, char *handle, unsigned long *entryIdxPtr);
void tclhandleString (tblHeader_pt tblHdrPtr, char *handle, unsigned long entryIdx);
int tclhandleIndex (tblHeader_pt tblHdrPtr, char *handle, unsigned long *entryIdxPtr);