Mercurial > cgi-bin > hgwebdir.cgi > VMS > C_Libraries > Queue_impl
changeset 33:501206566d16 MC_shared
fixed numInPrivQ
| author | Some Random Person <seanhalle@yahoo.com> |
|---|---|
| date | Wed, 14 Mar 2012 22:56:28 -0700 |
| parents | a74011c0b78b |
| children | 3f5e365143fd |
| files | PrivateQueue.c |
| diffstat | 1 files changed, 3 insertions(+), 19 deletions(-) [+] |
line diff
1.1 --- a/PrivateQueue.c Wed Mar 14 22:48:50 2012 -0700 1.2 +++ b/PrivateQueue.c Wed Mar 14 22:56:28 2012 -0700 1.3 @@ -194,33 +194,17 @@ 1.4 { //insert has wrapped around so numIn is: 1.5 // insertPos + size - extractPos -- Consider, is empty when 1.6 // extractPos = endOfData and insert = start -- correctly get zero 1.7 - size = Q->endOfData - Q->startOfData; 1.8 - numIn = Q->insertPos + size - Q->extractPos; 1.9 + size = Q->endOfData - Q->startOfData + 1; //sz of 10 is 0..9 1.10 + numIn = Q->insertPos - Q->extractPos + size - 1; //-1 bec insrt empty 1.11 } 1.12 else 1.13 { 1.14 - numIn = Q->insertPos - Q->extractPos -1;//-1 bec empty @ side-by-side 1.15 + numIn = Q->insertPos - Q->extractPos -1;//-1 bec insertPos empty 1.16 } 1.17 return numIn; 1.18 } 1.19 1.20 1.21 -int 1.22 -numInPrivQ( PrivQueueStruc *Q ) 1.23 - { 1.24 - void **insertPos = Q->insertPos; 1.25 - void **extractPos = Q->extractPos; 1.26 - 1.27 - int numInQ; 1.28 - 1.29 - if( (numInQ = insertPos - extractPos) >= 0 ) return numInQ; 1.30 - else 1.31 - { int size = Q->endOfData - Q->startOfData; 1.32 - int numEmpty = extractPos - insertPos; //not efficient, but easier to read 1.33 - return size - numEmpty; 1.34 - } 1.35 - } 1.36 - 1.37 /*Treats queue as a stack -- no matter contents, if read done right after 1.38 * a push, then the pushed item is what comes out. 1.39 * Expands the queue size automatically when it's full.
