Mercurial > cgi-bin > hgwebdir.cgi > VMS > C_Libraries > DynArray
view DynArray.h @ 22:ffdffedd579e
made pure C brch
| author | Me@portablequad |
|---|---|
| date | Mon, 13 Feb 2012 10:29:40 -0800 |
| parents | |
| children |
line source
1 /*
2 * File: Vector.h
3 * Author: Me
4 *
5 * Created on May 14, 2010, 3:08 PM
6 */
8 #ifndef _DYNARRAY_H
9 #define _DYNARRAY_H
12 //A dynamic array is same as any other array, but add a DynArrayInfo next
13 // to it. Accesses and updates of array indexes are done normally, it's
14 // only when add a new element into array that use the extra info.
15 // An add can cause the pointer to the normal array to change.. so must
16 // be protected to single VP at a time.
17 typedef struct
18 {
19 void ***addrOfPtrToArray; //addr of array of ptrs == triple *
20 int32 numInArray;
21 int32 sizeOfArray;
22 }
23 PrivDynArrayInfo;
25 PrivDynArrayInfo *
26 makePrivDynArrayInfoFrom( void ***addrOfPtrToArray, int32 sizeOfArray );
28 PrivDynArrayInfo *
29 makePrivDynArrayOfSize( void ***addrOfPtrToArray, int32 sizeOfArray );
31 PrivDynArrayInfo *
32 makePrivDynArrayOfSize_Ext( void ***addrOfPtrToArray, int32 sizeOfArray );
34 int32
35 addToDynArray( void *value, PrivDynArrayInfo *info );
37 void
38 makeHighestDynArrayIndexBe( PrivDynArrayInfo *info, int32 highestIndex );
40 void
41 makeHighestDynArrayIndexBeAtLeast(PrivDynArrayInfo *info,int32 highestIndex);
43 void
44 increaseSizeOfDynArrayTo( PrivDynArrayInfo *info, int32 newSize );
46 typedef void (*FreeFnPtr) ( void * ); //fn has to cast void * to whatever
48 void
49 freeDynArrayDeep( PrivDynArrayInfo *info, FreeFnPtr freeFnPtr );
51 void
52 freeDynArrayFlat( PrivDynArrayInfo *info );
55 typedef void (*DynArrayFnPtr) ( void * ); //fn has to cast void *
57 void
58 forAllInDynArrayDo( PrivDynArrayInfo *info, DynArrayFnPtr fnPtr );
60 #endif /* _DYNARRAY_H */
