comparison DynArray.c @ 35:59eaf81a9cc7

updated headers (fixed circular includes) and PR_int__malloc into PR__malloc
author Sean Halle <seanhalle@yahoo.com>
date Tue, 23 Jul 2013 07:41:03 -0700
parents 958dcb7754ca
children 82b36ebdc648
comparison
equal deleted inserted replaced
21:d4187189eac5 22:9b6b6d554c2d
8 8
9 #include <stdio.h> 9 #include <stdio.h>
10 #include <malloc.h> 10 #include <malloc.h>
11 11
12 #include "DynArray.h" 12 #include "DynArray.h"
13 #include "PR__common_includes/Services_offered_by_PR/Memory_Handling/vmalloc__wrapper_library.h"
13 14
14 //== declarations 15 //== declarations
15 void 16 void
16 increaseSizeOfDynArrayTo_Ext( PrivDynArrayInfo *info, int32 newSize ); 17 increaseSizeOfDynArrayTo_Ext( PrivDynArrayInfo *info, int32 newSize );
17 //== 18 //==
18 19
19 PrivDynArrayInfo * 20 PrivDynArrayInfo *
20 makePrivDynArrayInfoFrom( void ***addrOfPtrToArray, int32 sizeOfArray ) 21 makePrivDynArrayInfoFrom( void ***addrOfPtrToArray, int32 sizeOfArray )
21 { PrivDynArrayInfo *info; 22 { PrivDynArrayInfo *info;
22 23
23 info = PR_int__malloc( sizeof(PrivDynArrayInfo) ); 24 info = PR__malloc( sizeof(PrivDynArrayInfo) );
24 25
25 info->addrOfPtrToArray = addrOfPtrToArray; 26 info->addrOfPtrToArray = addrOfPtrToArray;
26 info->sizeOfArray = sizeOfArray; 27 info->sizeOfArray = sizeOfArray;
27 info->numInArray = 0; 28 info->numInArray = 0;
28 return info; 29 return info;
30 31
31 PrivDynArrayInfo * 32 PrivDynArrayInfo *
32 makePrivDynArrayOfSize( void ***addrOfPtrToArray, int32 sizeOfArray ) 33 makePrivDynArrayOfSize( void ***addrOfPtrToArray, int32 sizeOfArray )
33 { PrivDynArrayInfo *info; 34 { PrivDynArrayInfo *info;
34 35
35 info = PR_int__malloc( sizeof(PrivDynArrayInfo) ); 36 info = PR__malloc( sizeof(PrivDynArrayInfo) );
36 37
37 info->addrOfPtrToArray = addrOfPtrToArray; 38 info->addrOfPtrToArray = addrOfPtrToArray;
38 39
39 *(addrOfPtrToArray) = PR_int__malloc( sizeOfArray * sizeof(void *) ); 40 *(addrOfPtrToArray) = PR__malloc( sizeOfArray * sizeof(void *) );
40 info->sizeOfArray = sizeOfArray; 41 info->sizeOfArray = sizeOfArray;
41 info->numInArray = 0; 42 info->numInArray = 0;
42 return info; 43 return info;
43 } 44 }
44 45
138 139
139 oldsizeOfArray = info->sizeOfArray; 140 oldsizeOfArray = info->sizeOfArray;
140 if( newSize <= oldsizeOfArray ) return; 141 if( newSize <= oldsizeOfArray ) return;
141 142
142 oldArray = *(info->addrOfPtrToArray); 143 oldArray = *(info->addrOfPtrToArray);
143 newArray = PR_int__malloc( newSize * sizeof(void *) ); 144 newArray = PR__malloc( newSize * sizeof(void *) );
144 145
145 for( i = 0; i < oldsizeOfArray; i++ ) 146 for( i = 0; i < oldsizeOfArray; i++ )
146 { 147 {
147 newArray[i] = oldArray[i]; 148 newArray[i] = oldArray[i];
148 } 149 }
149 *(info->addrOfPtrToArray) = newArray; //change location of array-ptr 150 *(info->addrOfPtrToArray) = newArray; //change location of array-ptr
150 info->sizeOfArray = newSize; 151 info->sizeOfArray = newSize;
151 152
152 PR_int__free( oldArray ); 153 PR__free( oldArray );
153 } 154 }
154 155
155 /*Can't mix PR_int__malloc locations with external malloc locations -- so use 156 /*Can't mix PR__malloc locations with external malloc locations -- so use
156 * this version inside PR, which will perform normal malloc in the core 157 * this version inside PR, which will perform normal malloc in the core
157 * loop -- hopefully avoiding the annoying system-stack bugs.. 158 * loop -- hopefully avoiding the annoying system-stack bugs..
158 */ 159 */
159 void 160 void
160 increaseSizeOfDynArrayTo_Ext( PrivDynArrayInfo *info, int32 newSize ) 161 increaseSizeOfDynArrayTo_Ext( PrivDynArrayInfo *info, int32 newSize )
182 */ 183 */
183 void 184 void
184 freeDynArrayDeep( PrivDynArrayInfo *info, FreeFnPtr freeFnPtr ) 185 freeDynArrayDeep( PrivDynArrayInfo *info, FreeFnPtr freeFnPtr )
185 { 186 {
186 forAllInDynArrayDo( info, freeFnPtr ); 187 forAllInDynArrayDo( info, freeFnPtr );
187 PR_int__free( *(info->addrOfPtrToArray) ); 188 PR__free( *(info->addrOfPtrToArray) );
188 PR_int__free( info ); 189 PR__free( info );
189 } 190 }
190 191
191 /* Only frees the info 192 /* Only frees the info
192 */ 193 */
193 void 194 void
194 freeDynArrayFlat( PrivDynArrayInfo *info ) 195 freeDynArrayFlat( PrivDynArrayInfo *info )
195 { 196 {
196 PR_int__free( info ); 197 PR__free( info );
197 } 198 }
198 199
199 200
200 /*The function has a fixed prototype: takes a void * returns void 201 /*The function has a fixed prototype: takes a void * returns void
201 * So, the function has to internally cast void * to whatever data struc.. 202 * So, the function has to internally cast void * to whatever data struc..