/* * This file is part of libdyn.a, the C Dynamic Object library. It * contains the private header file. * * There are no restrictions on this code; however, if you make any * changes, I request that you document them so that I do not get * credit or blame for your modifications. * * Written by Barr3y Jaspan, Student Information Processing Board (SIPB) * and MIT-Project Athena, 1989. */ /* * dynP.h -- private header file included by source files for libdyn.a. */ #ifndef _DynP_h #define _DynP_h #include "dyn.h" /* * Rep invariant: * 1) el_size is the number of bytes per element in the object * 2) num_el is the number of elements currently in the object. It is * one higher than the highest index at which an element lives. * 3) size is the number of elements the object can hold without * resizing. num_el <= index. * 4) inc is a multiple of the number of elements the object grows by * each time it is reallocated. */ typedef struct _DynObject { DynPtr array; int el_size, num_el, size, inc; char debug, paranoid; } DynObjectRecP, *DynObjectP; /* Internal functions */ int _DynRealloc(); #define _DynResize(obj, req) \ ((obj)->size > (req) ? DYN_OK : \ (_DynRealloc((obj), (((req) - (obj)->size) / (obj)->inc) + 1))) #endif /* _DynP_h */ /* DON'T ADD STUFF AFTER THIS #endif */