1 /* 2 * This file is part of libdyn.a, the C Dynamic Object library. It 3 * contains the public header file. 4 * 5 * There are no restrictions on this code; however, if you make any 6 * changes, I request that you document them so that I do not get 7 * credit or blame for your modifications. 8 * 9 * Written by Barr3y Jaspan, Student Information Processing Board (SIPB) 10 * and MIT-Project Athena, 1989. 11 * 12 * 2002-07-17 Moved here from util/dyn; for old changes see dyn.c. 13 * Added macros to rename exposed symbols. For newer changes 14 * see ChangeLog in the current directory. 15 */ 16 17 18 /* 19 * dyn.h -- header file to be included by programs linking against 20 * libdyn.a. 21 */ 22 23 #ifndef _Dyn_h 24 #define _Dyn_h 25 26 typedef char *DynPtr; 27 typedef struct _DynObject { 28 DynPtr array; 29 int el_size, num_el, size, inc; 30 int debug, paranoid, initzero; 31 } DynObjectRec, *DynObject; 32 33 /* Function macros */ 34 #define DynHigh(obj) (DynSize(obj) - 1) 35 #define DynLow(obj) (0) 36 37 /* Return status codes */ 38 #define DYN_OK -1000 39 #define DYN_NOMEM -1001 40 #define DYN_BADINDEX -1002 41 #define DYN_BADVALUE -1003 42 43 #define DynCreate gssrpcint_DynCreate 44 #define DynDestroy gssrpcint_DynDestroy 45 #define DynRelease gssrpcint_DynRelease 46 #define DynAdd gssrpcint_DynAdd 47 #define DynPut gssrpcint_DynPut 48 #define DynInsert gssrpcint_DynInsert 49 #define DynGet gssrpcint_DynGet 50 #define DynArray gssrpcint_DynArray 51 #define DynSize gssrpcint_DynSize 52 #define DynCopy gssrpcint_DynCopy 53 #define DynDelete gssrpcint_DynDelete 54 #define DynDebug gssrpcint_DynDebug 55 #define DynParanoid gssrpcint_DynParanoid 56 #define DynInitzero gssrpcint_DynInitzero 57 #define DynCapacity gssrpcint_DynCapacity 58 #define DynAppend gssrpcint_DynAppend 59 60 /*@null@*//*@only@*/ DynObject DynCreate (int el_size, int inc); 61 /*@null@*//*@only@*/ DynObject DynCopy (DynObject obj); 62 int DynDestroy (/*@only@*/DynObject obj), DynRelease (DynObject obj); 63 int DynAdd (DynObject obj, void *el); 64 int DynPut (DynObject obj, void *el, int idx); 65 int DynInsert (DynObject obj, int idx, /*@observer@*/void *els, int num); 66 int DynDelete (DynObject obj, int idx); 67 /*@dependent@*//*@null@*/ DynPtr DynGet (DynObject obj, int num); 68 /*@observer@*/ DynPtr DynArray (DynObject obj); 69 int DynDebug (DynObject obj, int state); 70 int DynParanoid (DynObject obj, int state); 71 int DynInitzero (DynObject obj, int state); 72 int DynSize (DynObject obj); 73 int DynCapacity (DynObject obj); 74 int DynAppend (DynObject obj, DynPtr els, int num); 75 76 #undef P 77 78 #endif /* _Dyn_h */ 79 /* DO NOT ADD ANYTHING AFTER THIS #endif */ 80