diff DynArray.c @ 7:4506c08ed60d

added external, and "AtLeast"
author Me
date Sat, 20 Nov 2010 08:21:49 +0100
parents f4b108f21041
children bc91986481e1
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