Mercurial > cgi-bin > hgwebdir.cgi > VMS > C_Libraries > Queue_impl
comparison PrivateQueue.c @ 20:b5ae7fbb1f01
Created MC_shared brch
| author | Me@portablequad |
|---|---|
| date | Sat, 11 Feb 2012 20:37:52 -0800 |
| parents | 1ed562d601d9 |
| children | 59781a4c9cf1 |
comparison
equal
deleted
inserted
replaced
| 13:d6e6de89698a | 14:af2165870e32 |
|---|---|
| 24 */ | 24 */ |
| 25 | 25 |
| 26 PrivQueueStruc* makePrivQ() | 26 PrivQueueStruc* makePrivQ() |
| 27 { | 27 { |
| 28 PrivQueueStruc* retQ; | 28 PrivQueueStruc* retQ; |
| 29 retQ = (PrivQueueStruc *) malloc( sizeof( PrivQueueStruc ) ); | 29 retQ = (PrivQueueStruc *) VMS__malloc( sizeof( PrivQueueStruc ) ); |
| 30 | 30 |
| 31 retQ->startOfData = malloc( 1024 * sizeof(void *) ); | 31 retQ->startOfData = VMS__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 = malloc( newSize * sizeof(void *) ); | 49 Q->startOfData = VMS__malloc( newSize * sizeof(void *) ); |
| 50 memcpy(Q->startOfData, oldStartOfData, oldSize * sizeof(void *)); | 50 memcpy(Q->startOfData, oldStartOfData, oldSize * sizeof(void *)); |
| 51 free(oldStartOfData); | 51 VMS__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 |
| 55 Q->endOfData = &(Q->startOfData[newSize - 1]); | 55 Q->endOfData = &(Q->startOfData[newSize - 1]); |
| 56 } | 56 } |
