comparison PrivateQueue.c @ 29:7d35d7f42cd5

added casts to fix warnings
author Some Random Person <seanhalle@yahoo.com>
date Mon, 12 Mar 2012 05:39:45 -0700
parents 59781a4c9cf1
children a74011c0b78b
comparison
equal deleted inserted replaced
15:0ad3a21206a8 17:88cbfcc3f46e
24 */ 24 */
25 25
26 PrivQueueStruc* makePrivQ() 26 PrivQueueStruc* makePrivQ()
27 { 27 {
28 PrivQueueStruc* retQ; 28 PrivQueueStruc* retQ;
29 retQ = (PrivQueueStruc *) VMS_int__malloc( sizeof( PrivQueueStruc ) ); 29 retQ = (PrivQueueStruc *) VMS_WL__malloc( sizeof( PrivQueueStruc ) );
30 30
31 retQ->startOfData = VMS_int__malloc( 1024 * sizeof(void *) ); 31 retQ->startOfData = VMS_WL__malloc( 1024 * sizeof(void *) );
32 memset( retQ->startOfData, 0, 1024 * sizeof(void *) ); 32 memset( retQ->startOfData, 0, 1024 * sizeof(void *) );
33 retQ->extractPos = &(retQ->startOfData[0]); //side by side == empty 33 retQ->extractPos = &(retQ->startOfData[0]); //side by side == empty
34 retQ->insertPos = &(retQ->startOfData[1]); // so start pos's have to be 34 retQ->insertPos = &(retQ->startOfData[1]); // so start pos's have to be
35 retQ->endOfData = &(retQ->startOfData[1023]); 35 retQ->endOfData = &(retQ->startOfData[1023]);
36 36
44 void **oldStartOfData; 44 void **oldStartOfData;
45 45
46 oldSize = Q->endOfData - Q->startOfData; 46 oldSize = Q->endOfData - Q->startOfData;
47 newSize = 2 * oldSize; 47 newSize = 2 * oldSize;
48 oldStartOfData = Q->startOfData; 48 oldStartOfData = Q->startOfData;
49 Q->startOfData = VMS_int__malloc( newSize * sizeof(void *) ); 49 Q->startOfData = VMS_WL__malloc( newSize * sizeof(void *) );
50 memcpy(Q->startOfData, oldStartOfData, oldSize * sizeof(void *)); 50 memcpy(Q->startOfData, oldStartOfData, oldSize * sizeof(void *));
51 VMS_int__free(oldStartOfData); 51 VMS_int__free(oldStartOfData);
52 52
53 Q->extractPos = &(Q->startOfData[0]); //side by side == empty 53 Q->extractPos = &(Q->startOfData[0]); //side by side == empty
54 Q->insertPos = &(Q->startOfData[1]); // so start pos's have to be 54 Q->insertPos = &(Q->startOfData[1]); // so start pos's have to be
137 return TRUE; 137 return TRUE;
138 } 138 }
139 //Q is full 139 //Q is full
140 return FALSE; 140 return FALSE;
141 } 141 }
142
143 int
144 numInPrivQ( PrivQueueStruc *Q )
145 {
146 void **insertPos = Q->insertPos;
147 void **extractPos = Q->extractPos;
148
149 int numInQ;
150
151 if( (numInQ = insertPos - extractPos) >= 0 ) return numInQ;
152 else
153 { int size = Q->endOfData - Q->startOfData;
154 int numEmpty = extractPos - insertPos; //not efficient, but easier to read
155 return size - numEmpty;
156 }
157 }