Mercurial > cgi-bin > hgwebdir.cgi > VMS > C_Libraries > DynArray
diff DynArray.h @ 22:ffdffedd579e
made pure C brch
| author | Me@portablequad |
|---|---|
| date | Mon, 13 Feb 2012 10:29:40 -0800 |
| parents | |
| children |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/DynArray.h Mon Feb 13 10:29:40 2012 -0800 1.3 @@ -0,0 +1,61 @@ 1.4 +/* 1.5 + * File: Vector.h 1.6 + * Author: Me 1.7 + * 1.8 + * Created on May 14, 2010, 3:08 PM 1.9 + */ 1.10 + 1.11 +#ifndef _DYNARRAY_H 1.12 +#define _DYNARRAY_H 1.13 + 1.14 + 1.15 + //A dynamic array is same as any other array, but add a DynArrayInfo next 1.16 + // to it. Accesses and updates of array indexes are done normally, it's 1.17 + // only when add a new element into array that use the extra info. 1.18 + // An add can cause the pointer to the normal array to change.. so must 1.19 + // be protected to single VP at a time. 1.20 +typedef struct 1.21 + { 1.22 + void ***addrOfPtrToArray; //addr of array of ptrs == triple * 1.23 + int32 numInArray; 1.24 + int32 sizeOfArray; 1.25 + } 1.26 +PrivDynArrayInfo; 1.27 + 1.28 +PrivDynArrayInfo * 1.29 +makePrivDynArrayInfoFrom( void ***addrOfPtrToArray, int32 sizeOfArray ); 1.30 + 1.31 +PrivDynArrayInfo * 1.32 +makePrivDynArrayOfSize( void ***addrOfPtrToArray, int32 sizeOfArray ); 1.33 + 1.34 +PrivDynArrayInfo * 1.35 +makePrivDynArrayOfSize_Ext( void ***addrOfPtrToArray, int32 sizeOfArray ); 1.36 + 1.37 +int32 1.38 +addToDynArray( void *value, PrivDynArrayInfo *info ); 1.39 + 1.40 +void 1.41 +makeHighestDynArrayIndexBe( PrivDynArrayInfo *info, int32 highestIndex ); 1.42 + 1.43 +void 1.44 +makeHighestDynArrayIndexBeAtLeast(PrivDynArrayInfo *info,int32 highestIndex); 1.45 + 1.46 +void 1.47 +increaseSizeOfDynArrayTo( PrivDynArrayInfo *info, int32 newSize ); 1.48 + 1.49 +typedef void (*FreeFnPtr) ( void * ); //fn has to cast void * to whatever 1.50 + 1.51 +void 1.52 +freeDynArrayDeep( PrivDynArrayInfo *info, FreeFnPtr freeFnPtr ); 1.53 + 1.54 +void 1.55 +freeDynArrayFlat( PrivDynArrayInfo *info ); 1.56 + 1.57 + 1.58 +typedef void (*DynArrayFnPtr) ( void * ); //fn has to cast void * 1.59 + 1.60 +void 1.61 +forAllInDynArrayDo( PrivDynArrayInfo *info, DynArrayFnPtr fnPtr ); 1.62 + 1.63 +#endif /* _DYNARRAY_H */ 1.64 +
