Mercurial > cgi-bin > hgwebdir.cgi > VMS > C_Libraries > Queue_impl
diff PrivateQueue.c @ 6:174a7c2ca340
Works with sequential version -- not sure changes, but works
| author | Me |
|---|---|
| date | Wed, 28 Jul 2010 13:13:01 -0700 |
| parents | f4d50d8a1a38 |
| children | 93bf3ffcc1fb |
line diff
1.1 --- a/PrivateQueue.c Wed Jun 30 14:35:04 2010 -0700 1.2 +++ b/PrivateQueue.c Wed Jul 28 13:13:01 2010 -0700 1.3 @@ -45,6 +45,7 @@ 1.4 1.5 oldSize = Q->endOfData - Q->startOfData; 1.6 newSize = 2 * oldSize; 1.7 + oldStartOfData = Q->startOfData; 1.8 Q->startOfData = malloc( newSize * sizeof(void *) ); 1.9 memcpy(Q->startOfData, oldStartOfData, oldSize * sizeof(void *)); 1.10 free(oldStartOfData); 1.11 @@ -65,7 +66,7 @@ 1.12 void **insertPos = Q->insertPos; 1.13 void **extractPos = Q->extractPos; 1.14 1.15 - //if not empty -- extract just below insert when empty 1.16 + //if not empty -- (extract is just below insert when empty) 1.17 if( insertPos - extractPos != 1 && 1.18 !(extractPos == endOfData && insertPos == startOfData)) 1.19 { //move before read 1.20 @@ -86,7 +87,7 @@ 1.21 /*Expands the queue size automatically when it's full 1.22 */ 1.23 void 1.24 -writeAndEnlargePrivQ( void * in, PrivQueueStruc* Q ) 1.25 +writePrivQ( void * in, PrivQueueStruc* Q ) 1.26 { 1.27 void **startOfData = Q->startOfData; 1.28 void **endOfData = Q->endOfData; 1.29 @@ -95,6 +96,7 @@ 1.30 void **extractPos = Q->extractPos; 1.31 1.32 tryAgain: 1.33 + //Full? (insert is just below extract when full) 1.34 if( extractPos - insertPos != 1 && 1.35 !(insertPos == endOfData && extractPos == startOfData)) 1.36 { *(Q->insertPos) = in; //insert before move 1.37 @@ -115,7 +117,7 @@ 1.38 /*Returns false when the queue was full. 1.39 * have option of calling make_larger_PrivQ to make more room, then try again 1.40 */ 1.41 -int writeAndFailPrivQ( void * in, PrivQueueStruc* Q ) 1.42 +int writeIfSpacePrivQ( void * in, PrivQueueStruc* Q ) 1.43 { 1.44 void **startOfData = Q->startOfData; 1.45 void **endOfData = Q->endOfData;
