home *** CD-ROM | disk | FTP | other *** search
- /*
- jadecl.h 4/14/89
-
- % jarray (jeneric arrays)
-
- originally written by stephen ng and Joe DeSantis.
-
- OWL 1.1
- Copyright (c) 1986-1989, by Oakland Group, Inc.
- ALL RIGHTS RESERVED.
-
- Revision History:
- -----------------
- 9/01/87 jmd added NO_PROTO option
- 6/01/88 jmd added iarray, changed char *'s to VOID *'s
- 6/01/88 jmd changed growth strategy
- 6/01/88 jmd changed some names
- 6/24/88 jmd moved to oaklib
- 10/17/88 jmd added _arg()
-
- 4/14/89 jmd combined into one new super thingy
- */
-
- #define JA_GROW 1024
-
- /* The jarray structure. */
-
- typedef struct jarray_struct {
- VOID *array;
- unsigned size;
- SIZE_T eltsize;
-
- } *jarray;
-
- /* Jarray macros. */
-
- /* ja_Get copies the data from the array into your slot */
- /* ja_GetPtr returns a pointer to the data */
-
- #define ja_GetPtr(ja, eltno) \
- (VOID *) ((char *) (ja)->array + (eltno * (ja)->eltsize))
-
- #define ja_size(ja) ((ja)->size)
-
- /* Jarray declarations. */
- extern jarray ja_Open(_arg2(unsigned int, SIZE_T));
- extern void ja_Close(_arg1(jarray));
- extern int ja_Put(_arg3(jarray, unsigned int, VOID *));
- extern VOID *ja_Get(_arg3(jarray, unsigned int, VOID *));
- extern boolean ja_Resize(_arg2(jarray, unsigned int));
-
- extern boolean ja_Ins(_arg4(jarray, unsigned int, unsigned int, unsigned int));
- extern void ja_Del(_arg3(jarray, unsigned int, unsigned int));
-
- /* Xarray macros. (for pointers) */
-
- typedef jarray xarray;
-
- #define xa_Open(start) ja_Open(start, 0)
- #define xa_Close(xa) ja_Close(xa)
-
- #define xa_Get(xa, eltno) (((eltno) >= (xa)->size) ? \
- (NULL) : ((VOID **)(xa)->array)[(eltno)])
-
- #define xa_Put(xa, eltno, elt) (((eltno) >= (xa)->size) ? \
- ja_Put(xa, eltno, (VOID *) elt) : (((VOID **)(xa)->array)[(eltno)] = (elt), TRUE))
-
- #define xa_size(xa) ja_size(xa)
-
- /* Larray macros. (for longs) */
-
- typedef jarray larray;
-
- #define la_Open(start) ja_Open(start, sizeof(long))
- #define la_Close(la) ja_Close(la)
-
- #define la_Get(la, eltno) (((eltno) >= (la)->size) ? \
- (0L) : ((long *)(la)->array)[(eltno)])
-
- #define la_Put(la, eltno, elt) (((eltno) >= (la)->size) ? \
- ja_Put(la, eltno, (VOID *) &elt) : (((long *)(la)->array)[(eltno)] = (elt), TRUE))
-
- #define la_size(la) ja_size(la)
-
- /* Iarray macros. (for ints) */
-
- typedef jarray iarray;
-
- #define ia_Open(start) ja_Open(start, sizeof(int))
- #define ia_Close(ia) ja_Close(ia)
-
- #define ia_Get(ia, eltno) (((eltno) >= (ia)->size) ? \
- (0) : ((int *)(ia)->array)[(eltno)])
-
- #define ia_Put(ia, eltno, elt) (((eltno) >= (ia)->size) ? \
- ja_Put(ia, eltno, (VOID *) &elt) : (((int *)(ia)->array)[(eltno)] = (elt), TRUE))
-
- #define ia_size(ia) ja_size(ia)
-
-