Mercurial > cgi-bin > hgwebdir.cgi > VMS > C_Libraries > DynArray
view DynArray.h @ 26:6d4e6529335e
fixed includes or refactored VMS directory structure
| author | Some Random Person <seanhalle@yahoo.com> |
|---|---|
| date | Mon, 14 May 2012 16:26:16 -0700 |
| parents | 7adf81960d10 |
| 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
11 #include "VMS_impl/VMS_primitive_data_types.h"
12 #include "VMS_impl/Services_Offered_by_VMS/Memory_Handling/vmalloc.h"
16 //A dynamic array is same as any other array, but add a DynArrayInfo next
17 // to it. Accesses and updates of array indexes are done normally, it's
18 // only when add a new element into array that use the extra info.
19 // An add can cause the pointer to the normal array to change.. so must
20 // be protected to single VP at a time.
21 typedef struct
22 {
23 void ***addrOfPtrToArray; //addr of array of ptrs == triple *
24 int32 numInArray;
25 int32 sizeOfArray;
26 }
27 PrivDynArrayInfo;
29 PrivDynArrayInfo *
30 makePrivDynArrayInfoFrom( void ***addrOfPtrToArray, int32 sizeOfArray );
32 PrivDynArrayInfo *
33 makePrivDynArrayOfSize( void ***addrOfPtrToArray, int32 sizeOfArray );
35 PrivDynArrayInfo *
36 makePrivDynArrayOfSize_Ext( void ***addrOfPtrToArray, int32 sizeOfArray );
38 int32
39 addToDynArray( void *value, PrivDynArrayInfo *info );
41 void
42 makeHighestDynArrayIndexBe( PrivDynArrayInfo *info, int32 highestIndex );
44 void
45 makeHighestDynArrayIndexBeAtLeast(PrivDynArrayInfo *info,int32 highestIndex);
47 void
48 increaseSizeOfDynArrayTo( PrivDynArrayInfo *info, int32 newSize );
50 typedef void (*FreeFnPtr) ( void * ); //fn has to cast void * to whatever
52 void
53 freeDynArrayDeep( PrivDynArrayInfo *info, FreeFnPtr freeFnPtr );
55 void
56 freeDynArrayFlat( PrivDynArrayInfo *info );
59 typedef void (*DynArrayFnPtr) ( void * ); //fn has to cast void *
61 void
62 forAllInDynArrayDo( PrivDynArrayInfo *info, DynArrayFnPtr fnPtr );
64 #endif /* _DYNARRAY_H */
