view DynArray.h @ 17:62b3a4793b6e

chgd files to VMS__malloc and correct includes
author Me@portablequad
date Sat, 11 Feb 2012 19:00:21 -0800
parents 9de0a9369134
children 3e8e1a2a10f5
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
11 #include "../../VMS_Implementations/VMS_impl/VMS_primitive_data_types.h"
12 #include "../../VMS_Implementations/VMS_impl/vmalloc.h"
15 //A dynamic array is same as any other array, but add a DynArrayInfo next
16 // to it. Accesses and updates of array indexes are done normally, it's
17 // only when add a new element into array that use the extra info.
18 // An add can cause the pointer to the normal array to change.. so must
19 // be protected to single VP at a time.
20 typedef struct
21 {
22 void ***addrOfPtrToArray; //addr of array of ptrs == triple *
23 int32 numInArray;
24 int32 sizeOfArray;
25 }
26 PrivDynArrayInfo;
28 PrivDynArrayInfo *
29 makePrivDynArrayInfoFrom( void ***addrOfPtrToArray, int32 sizeOfArray );
31 PrivDynArrayInfo *
32 makePrivDynArrayOfSize( void ***addrOfPtrToArray, int32 sizeOfArray );
34 PrivDynArrayInfo *
35 makePrivDynArrayOfSize_Ext( void ***addrOfPtrToArray, int32 sizeOfArray );
37 int32
38 addToDynArray( void *value, PrivDynArrayInfo *info );
40 void
41 makeHighestDynArrayIndexBe( PrivDynArrayInfo *info, int32 highestIndex );
43 void
44 makeHighestDynArrayIndexBeAtLeast(PrivDynArrayInfo *info,int32 highestIndex);
46 void
47 increaseSizeOfDynArrayTo( PrivDynArrayInfo *info, int32 newSize );
49 typedef void (*FreeFnPtr) ( void * ); //fn has to cast void * to whatever
51 void
52 freeDynArrayDeep( PrivDynArrayInfo *info, FreeFnPtr freeFnPtr );
54 void
55 freeDynArrayFlat( PrivDynArrayInfo *info );
58 typedef void (*DynArrayFnPtr) ( void * ); //fn has to cast void *
60 void
61 forAllInDynArrayDo( PrivDynArrayInfo *info, DynArrayFnPtr fnPtr );
63 #endif /* _DYNARRAY_H */