/* ** (c) COPYRIGHT MIT 1995. ** Please first read the full copyright statement in the file COPYRIGH. */This module implements a flexible array. It is a general utility module. A chunk is a structure which may be extended. These routines create and append data to chunks, automatically reallocating them as necessary. It is garanteed that the array is '\0' terminated at all times, so the terminating function, HTChunkTerminate is only necessary to adjust the size in the chunk structure (the '\0' counts as a character when counting the size of the chunk.
This module is implemented by HTChunk.c, and it is a part of the W3C Reference Library.
#ifndef HTCHUNK_H #define HTCHUNK_H
typedef struct {
int size; /* In bytes */
int growby; /* Allocation unit in bytes */
int allocated; /* Current size of *data */
char * data; /* Pointer to malloced area or 0 */
} HTChunk;
extern HTChunk * HTChunkCreate (int growby);
HTChunkCreatefrom memory
extern void HTChunkFree (HTChunk * ch);
extern void HTChunkClear (HTChunk * ch);
extern void HTChunkEnsure (HTChunk * ch, int s);
extern void HTChunkPutc (HTChunk * ch, char c);
extern void HTChunkPuts (HTChunk * ch, CONST char *str);
extern void HTChunkTerminate (HTChunk * ch);
#define HTChunkData(me) ((me) ? (me)->data : NULL)
#define HTChunkSize(me) ((me) ? (me)->size : -1)
#endifEnd of Declaration