annotate DynArray.h @ 27:4f386058d46c

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