diff PrivateQueue.c @ 27:bd38feb38c80

Added numInPrivQ
author Some Random Person <seanhalle@yahoo.com>
date Sun, 04 Mar 2012 14:25:24 -0800
parents 59781a4c9cf1
children a74011c0b78b
line diff
     1.1 --- a/PrivateQueue.c	Mon Feb 13 10:36:44 2012 -0800
     1.2 +++ b/PrivateQueue.c	Sun Mar 04 14:25:24 2012 -0800
     1.3 @@ -26,9 +26,9 @@
     1.4  PrivQueueStruc* makePrivQ()
     1.5   {
     1.6     PrivQueueStruc* retQ;
     1.7 -   retQ = (PrivQueueStruc *) VMS_int__malloc( sizeof( PrivQueueStruc ) );
     1.8 +   retQ = (PrivQueueStruc *) VMS_WL__malloc( sizeof( PrivQueueStruc ) );
     1.9  
    1.10 -   retQ->startOfData = VMS_int__malloc( 1024 * sizeof(void *) );
    1.11 +   retQ->startOfData = VMS_WL__malloc( 1024 * sizeof(void *) );
    1.12     memset( retQ->startOfData, 0, 1024 * sizeof(void *) );
    1.13     retQ->extractPos = &(retQ->startOfData[0]); //side by side == empty
    1.14     retQ->insertPos  = &(retQ->startOfData[1]); // so start pos's have to be
    1.15 @@ -46,7 +46,7 @@
    1.16     oldSize           = Q->endOfData - Q->startOfData;
    1.17     newSize           = 2 * oldSize;
    1.18     oldStartOfData = Q->startOfData;
    1.19 -   Q->startOfData = VMS_int__malloc( newSize * sizeof(void *) );
    1.20 +   Q->startOfData = VMS_WL__malloc( newSize * sizeof(void *) );
    1.21     memcpy(Q->startOfData, oldStartOfData, oldSize * sizeof(void *));
    1.22     VMS_int__free(oldStartOfData);
    1.23     
    1.24 @@ -139,3 +139,19 @@
    1.25        //Q is full
    1.26     return FALSE;
    1.27   }
    1.28 +
    1.29 +int
    1.30 +numInPrivQ( PrivQueueStruc *Q )
    1.31 + {    
    1.32 +   void **insertPos  = Q->insertPos;
    1.33 +   void **extractPos = Q->extractPos;
    1.34 +   
    1.35 +   int numInQ;
    1.36 +   
    1.37 +   if( (numInQ = insertPos - extractPos) >= 0 ) return numInQ;
    1.38 +   else 
    1.39 +    { int size = Q->endOfData - Q->startOfData;
    1.40 +      int numEmpty = extractPos - insertPos; //not efficient, but easier to read
    1.41 +      return size - numEmpty;
    1.42 +    }
    1.43 + }