home *** CD-ROM | disk | FTP | other *** search
- /* ------------------------------------------------- */
- /* ARRAY.H */
- /* Verwaltung dynamischer Arrays */
- /* (c) 1992 Thomas Lach & DMV-Verlag */
- /* ------------------------------------------------- */
-
- #ifndef _ARRAY_H
- #define _ARRAY_H
-
- #include <alloc.h>
-
- #define ARR_NOERR 0
- #define ARR_MEMERR -100 /* out of mem on malloc */
- #define ARR_LIMERR -101 /* array size > 64k */
- #define ARR_MAXERR -102 /* tried to locate
- element > ArrCount */
-
- typedef struct {
-
- unsigned ArrSize, /* current alloced amount
- of elements */
- ArrCount; /* current amount of
- elements in array */
-
- size_t ItemSize, /* size of one item in
- array */
- AllocSize; /* current alloced
- bytes */
-
- char *Arr, /* ptr to array */
- *Tmp; /* temp ptr */
-
- int ErrCode; /* error code */
-
- } _Array;
-
- #define NULLARRAY ((_Array *)0)
-
- #define ArrayGetwoErr(arr, x) \
- ((x >= ArrayElemNum(arr) ? \
- (char*)0 : \
- (char*)&(arr->Arr[((x+1)*arr->ItemSize) \
- -arr->ItemSize])))
-
- #define ArrayElemNum(arr) (arr->ArrCount)
- #define ArrayChgAlloc(arr,siz) \
- (arr->AllocSize = ((siz>0) ? siz : MinArr)))
- #define ArrayErr(arr) (arr->ErrCode)
- #define ArrayData(arr) ((char *)(arr->Arr))
-
- _Array * ArrayStart(size_t size);
- _Array * ArrayAdd(_Array *arr, char *data);
- void * ArrayChg(_Array *arr, void *data, size_t pos);
- void * ArrayGet(_Array *arr, size_t pos);
- void ArrayKill(_Array *arr);
-
- #endif
- /* ------------------------------------------------- */
- /* Ende von ARRAY.H */
-
-