changeset 7:4506c08ed60d VMS__malloc_brch

added external, and "AtLeast"
author Me
date Sat, 20 Nov 2010 08:21:49 +0100
parents f4b108f21041
children bc91986481e1
files DynArray.c DynArray.h
diffstat 2 files changed, 32 insertions(+), 6 deletions(-) [+]
line diff
     1.1 --- a/DynArray.c	Tue Nov 02 16:44:42 2010 -0700
     1.2 +++ b/DynArray.c	Sat Nov 20 08:21:49 2010 +0100
     1.3 @@ -30,12 +30,25 @@
     1.4     info = VMS__malloc( sizeof(PrivDynArrayInfo) );
     1.5  
     1.6     info->addrOfPtrToArray = addrOfPtrToArray;
     1.7 -   
     1.8 +
     1.9     *(addrOfPtrToArray)    = VMS__malloc( sizeOfArray * sizeof(void *) );
    1.10     info->sizeOfArray      = sizeOfArray;
    1.11     info->numInArray       = 0;
    1.12   }
    1.13  
    1.14 +PrivDynArrayInfo *
    1.15 +makePrivDynArrayOfSize_Ext( void ***addrOfPtrToArray, int32 sizeOfArray )
    1.16 + { PrivDynArrayInfo *info;
    1.17 +
    1.18 +   info = malloc( sizeof(PrivDynArrayInfo) );
    1.19 +
    1.20 +   info->addrOfPtrToArray = addrOfPtrToArray;
    1.21 +
    1.22 +   *(addrOfPtrToArray)    = malloc( sizeOfArray * sizeof(void *) );
    1.23 +   info->sizeOfArray      = sizeOfArray;
    1.24 +   info->numInArray       = 0;
    1.25 + }
    1.26 +
    1.27  
    1.28  /*A dynamic array is same as any other array, but add a DynArrayInfo next
    1.29   * to it.  Accesses and updates of array indexes are done normally, it's
    1.30 @@ -65,7 +78,7 @@
    1.31     return numInArray; //pre-incr value is the index put value into
    1.32   }
    1.33  int32
    1.34 -VMS_ext__addToDynArray( void *value, PrivDynArrayInfo *info )
    1.35 +addToDynArray_Ext( void *value, PrivDynArrayInfo *info )
    1.36   { int32 numInArray, sizeOfArray;
    1.37     void **array;
    1.38  
    1.39 @@ -74,7 +87,7 @@
    1.40  
    1.41     if( numInArray >= sizeOfArray )
    1.42      {
    1.43 -      VMS_ext__increaseSizeOfDynArrayTo( info, sizeOfArray * 2 );
    1.44 +      increaseSizeOfDynArrayTo_Ext( info, sizeOfArray * 2 );
    1.45      }
    1.46  
    1.47     array = *(info->addrOfPtrToArray);
    1.48 @@ -102,6 +115,13 @@
    1.49     info->numInArray = highestIndex + 1;
    1.50   }
    1.51  
    1.52 +void
    1.53 +makeHighestDynArrayIndexBeAtLeast(PrivDynArrayInfo *info, int32 index)
    1.54 + {
    1.55 +   if( index < info->numInArray ) return;
    1.56 +   else makeHighestDynArrayIndexBe( info, index );
    1.57 + }
    1.58 +
    1.59  
    1.60  /*Only use this if certain new size is bigger than current size
    1.61   */
    1.62 @@ -131,7 +151,7 @@
    1.63   * loop -- hopefully avoiding the annoying system-stack bugs..
    1.64   */
    1.65  void
    1.66 -VMS_ext__increaseSizeOfDynArrayTo( PrivDynArrayInfo *info, int32 newSize )
    1.67 +increaseSizeOfDynArrayTo_Ext( PrivDynArrayInfo *info, int32 newSize )
    1.68   { int32 oldSizeOfArray, i;
    1.69     void **newArray, **oldArray;
    1.70  
    1.71 @@ -139,7 +159,7 @@
    1.72     if( newSize <= oldSizeOfArray ) return;
    1.73  
    1.74     oldArray         = *(info->addrOfPtrToArray);
    1.75 -   newArray         = VMS__malloc_in_ext( newSize * sizeof(void *) );
    1.76 +   newArray         = malloc( newSize * sizeof(void *) );
    1.77  
    1.78     for( i = 0; i < oldSizeOfArray; i++ )
    1.79      {
    1.80 @@ -148,7 +168,7 @@
    1.81     *(info->addrOfPtrToArray) = newArray; //change location of array-ptr
    1.82     info->sizeOfArray = newSize;
    1.83  
    1.84 -   VMS__free( oldArray );
    1.85 +   free( oldArray );
    1.86   }
    1.87  
    1.88  
     2.1 --- a/DynArray.h	Tue Nov 02 16:44:42 2010 -0700
     2.2 +++ b/DynArray.h	Sat Nov 20 08:21:49 2010 +0100
     2.3 @@ -30,6 +30,9 @@
     2.4  PrivDynArrayInfo *
     2.5  makePrivDynArrayOfSize( void ***addrOfPtrToArray, int32 sizeOfArray );
     2.6  
     2.7 +PrivDynArrayInfo *
     2.8 +makePrivDynArrayOfSize_Ext( void ***addrOfPtrToArray, int32 sizeOfArray );
     2.9 +
    2.10  int32
    2.11  addToDynArray( void *value, PrivDynArrayInfo *info );
    2.12  
    2.13 @@ -37,6 +40,9 @@
    2.14  makeHighestDynArrayIndexBe( PrivDynArrayInfo *info, int32 highestIndex );
    2.15  
    2.16  void
    2.17 +makeHighestDynArrayIndexBeAtLeast(PrivDynArrayInfo *info,int32 highestIndex);
    2.18 +
    2.19 +void
    2.20  increaseSizeOfDynArrayTo( PrivDynArrayInfo *info, int32 newSize );
    2.21  
    2.22  typedef void  (*FreeFnPtr)  ( void * ); //fn has to cast void * to whatever