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