comparison DynArray.h @ 22:ffdffedd579e

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