diff options
Diffstat (limited to 'gnu/usr.bin/lynx/WWW/Library/Implementation/HTChunk.h')
-rw-r--r-- | gnu/usr.bin/lynx/WWW/Library/Implementation/HTChunk.h | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/gnu/usr.bin/lynx/WWW/Library/Implementation/HTChunk.h b/gnu/usr.bin/lynx/WWW/Library/Implementation/HTChunk.h new file mode 100644 index 00000000000..37ef890c95f --- /dev/null +++ b/gnu/usr.bin/lynx/WWW/Library/Implementation/HTChunk.h @@ -0,0 +1,171 @@ +/* HTChunk: Flexible array handling for libwww + CHUNK HANDLING: + FLEXIBLE ARRAYS + + 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. + + */ +#include "UCMap.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; + + +#ifdef SHORT_NAMES +#define HTChunkClear HTChClea +#define HTChunkPutc HTChPutc +#define HTChunkPuts HTChPuts +#define HTChunkCreate HTChCrea +#define HTChunkTerminate HTChTerm +#define HTChunkEnsure HtChEnsu +#endif + + +/* + +Create new chunk + + ON ENTRY, + + growby The number of bytes to allocate at a time when the chunk is + later extended. Arbitrary but normally a trade-off time vs. + memory + + ON EXIT, + + returns A chunk pointer to the new chunk, + + */ + +extern HTChunk * HTChunkCreate PARAMS((int growby)); + +/* + * Like HTChunkCreate but with initial allocation - kw + * + */ +extern HTChunk * HTChunkCreate2 PARAMS((int growby, size_t needed)); + + +/* + +Free a chunk + + ON ENTRY, + + ch A valid chunk pointer made by HTChunkCreate() + + ON EXIT, + + ch is invalid and may not be used. + + */ + +extern void HTChunkFree PARAMS((HTChunk * ch)); + + +/* + +Clear a chunk + + ON ENTRY, + + ch A valid chunk pointer made by HTChunkCreate() + + ON EXIT, + + *ch The size of the chunk is zero. + + */ + +extern void HTChunkClear PARAMS((HTChunk * ch)); + + +/* + +Ensure a chunk has a certain space in + + ON ENTRY, + + ch A valid chunk pointer made by HTChunkCreate() + + s The size required + + ON EXIT, + + *ch Has size at least s + + */ + +extern void HTChunkEnsure PARAMS((HTChunk * ch, int s)); + + +/* + +Append a character to a chunk + + ON ENTRY, + + ch A valid chunk pointer made by HTChunkCreate() + + c The character to be appended + + ON EXIT, + + *ch Is one character bigger + + */ +extern void HTChunkPutc PARAMS((HTChunk * ch, char c)); + +extern void HTChunkPutb PARAMS((HTChunk * ch, CONST char *b, int l)); + +extern void HTChunkPutUtf8Char PARAMS((HTChunk * ch, UCode_t code)); + +/* +Append a string to a chunk + + ON ENTRY, + + ch A valid chunk pointer made by HTChunkCreate() + + str Tpoints to a zero-terminated string to be appended + + ON EXIT, + + *ch Is bigger by strlen(str) + + */ + + +extern void HTChunkPuts PARAMS((HTChunk * ch, const char *str)); + + +/* + +Append a zero character to a chunk + + */ + +/* + + ON ENTRY, + + ch A valid chunk pointer made by HTChunkCreate() + + ON EXIT, + + *ch Is one character bigger + + */ + + +extern void HTChunkTerminate PARAMS((HTChunk * ch)); + +/* + + end */ |