comparison DynArray.c @ 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 ef65bdf3ce16
comparison
equal deleted inserted replaced
10:23429072f207 12:3f10cc712ac2
7 7
8 8
9 #include <stdio.h> 9 #include <stdio.h>
10 10
11 #include "DynArray.h" 11 #include "DynArray.h"
12 #include "../vmalloc.h"
13 12
14 //== declarations 13 //== declarations
15 void 14 void
16 increaseSizeOfDynArrayTo_Ext( PrivDynArrayInfo *info, int32 newSize ); 15 increaseSizeOfDynArrayTo_Ext( PrivDynArrayInfo *info, int32 newSize );
17 //== 16 //==
18 17
19 PrivDynArrayInfo * 18 PrivDynArrayInfo *
20 makePrivDynArrayInfoFrom( void ***addrOfPtrToArray, int32 sizeOfArray ) 19 makePrivDynArrayInfoFrom( void ***addrOfPtrToArray, int32 sizeOfArray )
21 { PrivDynArrayInfo *info; 20 { PrivDynArrayInfo *info;
22 21
23 info = malloc( sizeof(PrivDynArrayInfo) ); 22 info = VMS__malloc( sizeof(PrivDynArrayInfo) );
24 23
25 info->addrOfPtrToArray = addrOfPtrToArray; 24 info->addrOfPtrToArray = addrOfPtrToArray;
26 info->sizeOfArray = sizeOfArray; 25 info->sizeOfArray = sizeOfArray;
27 info->numInArray = 0; 26 info->numInArray = 0;
28 return info; 27 return info;
30 29
31 PrivDynArrayInfo * 30 PrivDynArrayInfo *
32 makePrivDynArrayOfSize( void ***addrOfPtrToArray, int32 sizeOfArray ) 31 makePrivDynArrayOfSize( void ***addrOfPtrToArray, int32 sizeOfArray )
33 { PrivDynArrayInfo *info; 32 { PrivDynArrayInfo *info;
34 33
35 info = malloc( sizeof(PrivDynArrayInfo) ); 34 info = VMS__malloc( sizeof(PrivDynArrayInfo) );
36 35
37 info->addrOfPtrToArray = addrOfPtrToArray; 36 info->addrOfPtrToArray = addrOfPtrToArray;
38 37
39 *(addrOfPtrToArray) = malloc( sizeOfArray * sizeof(void *) ); 38 *(addrOfPtrToArray) = VMS__malloc( sizeOfArray * sizeof(void *) );
40 info->sizeOfArray = sizeOfArray; 39 info->sizeOfArray = sizeOfArray;
41 info->numInArray = 0; 40 info->numInArray = 0;
42 return info; 41 return info;
43 } 42 }
44 43
138 137
139 oldSizeOfArray = info->sizeOfArray; 138 oldSizeOfArray = info->sizeOfArray;
140 if( newSize <= oldSizeOfArray ) return; 139 if( newSize <= oldSizeOfArray ) return;
141 140
142 oldArray = *(info->addrOfPtrToArray); 141 oldArray = *(info->addrOfPtrToArray);
143 newArray = malloc( newSize * sizeof(void *) ); 142 newArray = VMS__malloc( newSize * sizeof(void *) );
144 143
145 for( i = 0; i < oldSizeOfArray; i++ ) 144 for( i = 0; i < oldSizeOfArray; i++ )
146 { 145 {
147 newArray[i] = oldArray[i]; 146 newArray[i] = oldArray[i];
148 } 147 }
149 *(info->addrOfPtrToArray) = newArray; //change location of array-ptr 148 *(info->addrOfPtrToArray) = newArray; //change location of array-ptr
150 info->sizeOfArray = newSize; 149 info->sizeOfArray = newSize;
151 150
152 free( oldArray ); 151 VMS__free( oldArray );
153 } 152 }
154 153
155 /*Can't mix malloc locations with external malloc locations -- so use 154 /*Can't mix VMS__malloc locations with external malloc locations -- so use
156 * this version inside VMS, which will perform normal malloc in the core 155 * this version inside VMS, which will perform normal malloc in the core
157 * loop -- hopefully avoiding the annoying system-stack bugs.. 156 * loop -- hopefully avoiding the annoying system-stack bugs..
158 */ 157 */
159 void 158 void
160 increaseSizeOfDynArrayTo_Ext( PrivDynArrayInfo *info, int32 newSize ) 159 increaseSizeOfDynArrayTo_Ext( PrivDynArrayInfo *info, int32 newSize )
182 */ 181 */
183 void 182 void
184 freeDynArrayDeep( PrivDynArrayInfo *info, FreeFnPtr freeFnPtr ) 183 freeDynArrayDeep( PrivDynArrayInfo *info, FreeFnPtr freeFnPtr )
185 { 184 {
186 forAllInDynArrayDo( info, freeFnPtr ); 185 forAllInDynArrayDo( info, freeFnPtr );
187 free( *(info->addrOfPtrToArray) ); 186 VMS__free( *(info->addrOfPtrToArray) );
188 free( info ); 187 VMS__free( info );
189 } 188 }
190 189
191 /* Only frees the info 190 /* Only frees the info
192 */ 191 */
193 void 192 void
194 freeDynArrayFlat( PrivDynArrayInfo *info ) 193 freeDynArrayFlat( PrivDynArrayInfo *info )
195 { 194 {
196 free( info ); 195 VMS__free( info );
197 } 196 }
198 197
199 198
200 /*The function has a fixed prototype: takes a void * returns void 199 /*The function has a fixed prototype: takes a void * returns void
201 * So, the function has to internally cast void * to whatever data struc.. 200 * So, the function has to internally cast void * to whatever data struc..