dyn.h revision 2
2N/A/*
2N/A * This file is part of libdyn.a, the C Dynamic Object library. It
2N/A * contains the public header file.
2N/A *
2N/A * There are no restrictions on this code; however, if you make any
2N/A * changes, I request that you document them so that I do not get
2N/A * credit or blame for your modifications.
2N/A *
2N/A * Written by Barr3y Jaspan, Student Information Processing Board (SIPB)
2N/A * and MIT-Project Athena, 1989.
2N/A *
2N/A * 2002-07-17 Moved here from util/dyn; for old changes see dyn.c.
2N/A * Added macros to rename exposed symbols. For newer changes
2N/A * see ChangeLog in the current directory.
2N/A */
2N/A
2N/A
2N/A/*
2N/A * dyn.h -- header file to be included by programs linking against
2N/A * libdyn.a.
2N/A */
2N/A
2N/A#ifndef _Dyn_h
2N/A#define _Dyn_h
2N/A
2N/Atypedef char *DynPtr;
2N/Atypedef struct _DynObject {
2N/A DynPtr array;
2N/A int el_size, num_el, size, inc;
2N/A int debug, paranoid, initzero;
2N/A} DynObjectRec, *DynObject;
2N/A
2N/A/* Function macros */
2N/A#define DynHigh(obj) (DynSize(obj) - 1)
2N/A#define DynLow(obj) (0)
2N/A
2N/A/* Return status codes */
2N/A#define DYN_OK -1000
2N/A#define DYN_NOMEM -1001
2N/A#define DYN_BADINDEX -1002
2N/A#define DYN_BADVALUE -1003
2N/A
2N/A#define DynCreate gssrpcint_DynCreate
2N/A#define DynDestroy gssrpcint_DynDestroy
2N/A#define DynRelease gssrpcint_DynRelease
2N/A#define DynAdd gssrpcint_DynAdd
2N/A#define DynPut gssrpcint_DynPut
2N/A#define DynInsert gssrpcint_DynInsert
2N/A#define DynGet gssrpcint_DynGet
2N/A#define DynArray gssrpcint_DynArray
2N/A#define DynSize gssrpcint_DynSize
2N/A#define DynCopy gssrpcint_DynCopy
2N/A#define DynDelete gssrpcint_DynDelete
2N/A#define DynDebug gssrpcint_DynDebug
2N/A#define DynParanoid gssrpcint_DynParanoid
2N/A#define DynInitzero gssrpcint_DynInitzero
2N/A#define DynCapacity gssrpcint_DynCapacity
2N/A#define DynAppend gssrpcint_DynAppend
2N/A
2N/A/*@null@*//*@only@*/ DynObject DynCreate (int el_size, int inc);
2N/A/*@null@*//*@only@*/ DynObject DynCopy (DynObject obj);
2N/Aint DynDestroy (/*@only@*/DynObject obj), DynRelease (DynObject obj);
2N/Aint DynAdd (DynObject obj, void *el);
2N/Aint DynPut (DynObject obj, void *el, int idx);
2N/Aint DynInsert (DynObject obj, int idx, /*@observer@*/void *els, int num);
2N/Aint DynDelete (DynObject obj, int idx);
2N/A/*@dependent@*//*@null@*/ DynPtr DynGet (DynObject obj, int num);
2N/A/*@observer@*/ DynPtr DynArray (DynObject obj);
2N/Aint DynDebug (DynObject obj, int state);
2N/Aint DynParanoid (DynObject obj, int state);
2N/Aint DynInitzero (DynObject obj, int state);
2N/Aint DynSize (DynObject obj);
2N/Aint DynCapacity (DynObject obj);
2N/Aint DynAppend (DynObject obj, DynPtr els, int num);
2N/A
2N/A#undef P
2N/A
2N/A#endif /* _Dyn_h */
2N/A/* DO NOT ADD ANYTHING AFTER THIS #endif */