changes for generating evaluation numbers.
[IRC.git] / Robust / src / Runtime / oooJava / Queue_RCR.c
1 #include "Queue_RCR.h"
2 #include "stdlib.h"
3 #include "stdio.h"
4
5 __thread struct RCRQueue myRCRQueue;
6
7 void resetRCRQueue() {
8   myRCRQueue.head = 0;
9   myRCRQueue.tail = 0;
10 }
11
12 //0 would mean success
13 //1 would mean fail
14 int enqueueRCRQueue(void * ptr, int traverserState) {
15   unsigned int oldhead=myRCRQueue.head;
16   unsigned int head=oldhead+1;
17   if (head&SIZE)
18     head=0;
19
20   if (head==myRCRQueue.tail)
21     return 1;
22
23   myRCRQueue.elements[oldhead].object = ptr;
24   myRCRQueue.elements[oldhead].traverserState = traverserState;
25   myRCRQueue.head=head;
26
27   return 0;
28 }
29
30 RCRQueueEntry * dequeueRCRQueue() {
31   unsigned int tail=myRCRQueue.tail;
32   if(myRCRQueue.head==tail)
33     return NULL;
34   RCRQueueEntry * ptr = &myRCRQueue.elements[tail];
35   tail++;
36   if (tail & SIZE)
37     tail=0;
38   myRCRQueue.tail=tail;
39   return ptr;
40 }
41
42 int isEmptyRCRQueue() {
43   return myRCRQueue.head==myRCRQueue.tail;
44 }
45
46