xref: /freebsd/crypto/krb5/src/lib/rpc/dyn.h (revision b670c9bafc0e31c7609969bf374b2e80bdc00211)
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