Mercurial > cgi-bin > hgwebdir.cgi > VMS > C_Libraries > DynArray
comparison DynArray.c @ 18:ef65bdf3ce16
updated for VMS name chgs from VMS__malloc to VMS_int__malloc
| author | Me@portablequad |
|---|---|
| date | Sun, 12 Feb 2012 01:46:42 -0800 |
| parents | 62b3a4793b6e |
| children | 3e8e1a2a10f5 |
comparison
equal
deleted
inserted
replaced
| 12:3f10cc712ac2 | 13:1f61714b7b72 |
|---|---|
| 17 | 17 |
| 18 PrivDynArrayInfo * | 18 PrivDynArrayInfo * |
| 19 makePrivDynArrayInfoFrom( void ***addrOfPtrToArray, int32 sizeOfArray ) | 19 makePrivDynArrayInfoFrom( void ***addrOfPtrToArray, int32 sizeOfArray ) |
| 20 { PrivDynArrayInfo *info; | 20 { PrivDynArrayInfo *info; |
| 21 | 21 |
| 22 info = VMS__malloc( sizeof(PrivDynArrayInfo) ); | 22 info = VMS_int__malloc( sizeof(PrivDynArrayInfo) ); |
| 23 | 23 |
| 24 info->addrOfPtrToArray = addrOfPtrToArray; | 24 info->addrOfPtrToArray = addrOfPtrToArray; |
| 25 info->sizeOfArray = sizeOfArray; | 25 info->sizeOfArray = sizeOfArray; |
| 26 info->numInArray = 0; | 26 info->numInArray = 0; |
| 27 return info; | 27 return info; |
| 29 | 29 |
| 30 PrivDynArrayInfo * | 30 PrivDynArrayInfo * |
| 31 makePrivDynArrayOfSize( void ***addrOfPtrToArray, int32 sizeOfArray ) | 31 makePrivDynArrayOfSize( void ***addrOfPtrToArray, int32 sizeOfArray ) |
| 32 { PrivDynArrayInfo *info; | 32 { PrivDynArrayInfo *info; |
| 33 | 33 |
| 34 info = VMS__malloc( sizeof(PrivDynArrayInfo) ); | 34 info = VMS_int__malloc( sizeof(PrivDynArrayInfo) ); |
| 35 | 35 |
| 36 info->addrOfPtrToArray = addrOfPtrToArray; | 36 info->addrOfPtrToArray = addrOfPtrToArray; |
| 37 | 37 |
| 38 *(addrOfPtrToArray) = VMS__malloc( sizeOfArray * sizeof(void *) ); | 38 *(addrOfPtrToArray) = VMS_int__malloc( sizeOfArray * sizeof(void *) ); |
| 39 info->sizeOfArray = sizeOfArray; | 39 info->sizeOfArray = sizeOfArray; |
| 40 info->numInArray = 0; | 40 info->numInArray = 0; |
| 41 return info; | 41 return info; |
| 42 } | 42 } |
| 43 | 43 |
| 137 | 137 |
| 138 oldSizeOfArray = info->sizeOfArray; | 138 oldSizeOfArray = info->sizeOfArray; |
| 139 if( newSize <= oldSizeOfArray ) return; | 139 if( newSize <= oldSizeOfArray ) return; |
| 140 | 140 |
| 141 oldArray = *(info->addrOfPtrToArray); | 141 oldArray = *(info->addrOfPtrToArray); |
| 142 newArray = VMS__malloc( newSize * sizeof(void *) ); | 142 newArray = VMS_int__malloc( newSize * sizeof(void *) ); |
| 143 | 143 |
| 144 for( i = 0; i < oldSizeOfArray; i++ ) | 144 for( i = 0; i < oldSizeOfArray; i++ ) |
| 145 { | 145 { |
| 146 newArray[i] = oldArray[i]; | 146 newArray[i] = oldArray[i]; |
| 147 } | 147 } |
| 148 *(info->addrOfPtrToArray) = newArray; //change location of array-ptr | 148 *(info->addrOfPtrToArray) = newArray; //change location of array-ptr |
| 149 info->sizeOfArray = newSize; | 149 info->sizeOfArray = newSize; |
| 150 | 150 |
| 151 VMS__free( oldArray ); | 151 VMS_int__free( oldArray ); |
| 152 } | 152 } |
| 153 | 153 |
| 154 /*Can't mix VMS__malloc locations with external malloc locations -- so use | 154 /*Can't mix VMS__malloc locations with external malloc locations -- so use |
| 155 * 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 |
| 156 * loop -- hopefully avoiding the annoying system-stack bugs.. | 156 * loop -- hopefully avoiding the annoying system-stack bugs.. |
| 181 */ | 181 */ |
| 182 void | 182 void |
| 183 freeDynArrayDeep( PrivDynArrayInfo *info, FreeFnPtr freeFnPtr ) | 183 freeDynArrayDeep( PrivDynArrayInfo *info, FreeFnPtr freeFnPtr ) |
| 184 { | 184 { |
| 185 forAllInDynArrayDo( info, freeFnPtr ); | 185 forAllInDynArrayDo( info, freeFnPtr ); |
| 186 VMS__free( *(info->addrOfPtrToArray) ); | 186 VMS_int__free( *(info->addrOfPtrToArray) ); |
| 187 VMS__free( info ); | 187 VMS_int__free( info ); |
| 188 } | 188 } |
| 189 | 189 |
| 190 /* Only frees the info | 190 /* Only frees the info |
| 191 */ | 191 */ |
| 192 void | 192 void |
| 193 freeDynArrayFlat( PrivDynArrayInfo *info ) | 193 freeDynArrayFlat( PrivDynArrayInfo *info ) |
| 194 { | 194 { |
| 195 VMS__free( info ); | 195 VMS_int__free( info ); |
| 196 } | 196 } |
| 197 | 197 |
| 198 | 198 |
| 199 /*The function has a fixed prototype: takes a void * returns void | 199 /*The function has a fixed prototype: takes a void * returns void |
| 200 * 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.. |
