ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
Gluco2::bqueue< T > Class Template Reference

#include <BoundedQueue.h>

Public Member Functions

 bqueue (void)
 
void initSize (int size)
 
void push (T x)
 
peek ()
 
void pop ()
 
uint64_t getsum () const
 
unsigned int getavg () const
 
int maxSize () const
 
double getavgDouble () const
 
int isvalid () const
 
void growTo (int size)
 
double getAvgExp ()
 
void fastclear ()
 
int size (void)
 
void clear (bool dealloc=false)
 

Detailed Description

template<class T>
class Gluco2::bqueue< T >

Definition at line 35 of file BoundedQueue.h.

Constructor & Destructor Documentation

◆ bqueue()

template<class T>
Gluco2::bqueue< T >::bqueue ( void )
inline

Definition at line 45 of file BoundedQueue.h.

45: first(0), last(0), sumofqueue(0), maxsize(0), queuesize(0),expComputed(false) { }

Member Function Documentation

◆ clear()

template<class T>
void Gluco2::bqueue< T >::clear ( bool dealloc = false)
inline

Definition at line 105 of file BoundedQueue.h.

105{ elems.clear(dealloc); first = 0; maxsize=0; queuesize=0;sumofqueue=0;}

◆ fastclear()

template<class T>
void Gluco2::bqueue< T >::fastclear ( )
inline

Definition at line 101 of file BoundedQueue.h.

101{first = 0; last = 0; queuesize=0; sumofqueue=0;} // to be called after restarts... Discard the queue

◆ getavg()

template<class T>
unsigned int Gluco2::bqueue< T >::getavg ( ) const
inline

Definition at line 66 of file BoundedQueue.h.

66{return (unsigned int)(sumofqueue/((uint64_t)queuesize));}

◆ getavgDouble()

template<class T>
double Gluco2::bqueue< T >::getavgDouble ( ) const
inline

Definition at line 68 of file BoundedQueue.h.

68 {
69 double tmp = 0;
70 for(int i=0;i<elems.size();i++) {
71 tmp+=elems[i];
72 }
73 return tmp/elems.size();
74 }

◆ getAvgExp()

template<class T>
double Gluco2::bqueue< T >::getAvgExp ( )
inline

Definition at line 83 of file BoundedQueue.h.

83 {
84 if(expComputed) return value;
85 double a=exp;
86 value = elems[first];
87 for(int i = first;i<maxsize;i++) {
88 value+=a*((double)elems[i]);
89 a=a*exp;
90 }
91 for(int i = 0;i<last;i++) {
92 value+=a*((double)elems[i]);
93 a=a*exp;
94 }
95 value = value*(1-exp)/(1-a);
96 expComputed = true;
97 return value;
98
99
100 }

◆ getsum()

template<class T>
uint64_t Gluco2::bqueue< T >::getsum ( ) const
inline

Definition at line 65 of file BoundedQueue.h.

65{return sumofqueue;}

◆ growTo()

template<class T>
void Gluco2::bqueue< T >::growTo ( int size)
inline

Definition at line 77 of file BoundedQueue.h.

77 {
78 elems.growTo(size);
79 first=0; maxsize=size; queuesize = 0;last = 0;
80 for(int i=0;i<size;i++) elems[i]=0;
81 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ initSize()

template<class T>
void Gluco2::bqueue< T >::initSize ( int size)
inline

Definition at line 47 of file BoundedQueue.h.

47{growTo(size);exp = 2.0/(size+1);} // Init size of bounded size queue
void growTo(int size)
Here is the call graph for this function:

◆ isvalid()

template<class T>
int Gluco2::bqueue< T >::isvalid ( ) const
inline

Definition at line 75 of file BoundedQueue.h.

75{return (queuesize==maxsize);}

◆ maxSize()

template<class T>
int Gluco2::bqueue< T >::maxSize ( ) const
inline

Definition at line 67 of file BoundedQueue.h.

67{return maxsize;}

◆ peek()

template<class T>
T Gluco2::bqueue< T >::peek ( )
inline

Definition at line 62 of file BoundedQueue.h.

62{ assert(queuesize>0); return elems[last]; }
#define assert(ex)
Definition util_old.h:213

◆ pop()

template<class T>
void Gluco2::bqueue< T >::pop ( )
inline

Definition at line 63 of file BoundedQueue.h.

63{sumofqueue-=elems[last]; queuesize--; if ((++last) == maxsize) last = 0;}

◆ push()

template<class T>
void Gluco2::bqueue< T >::push ( T x)
inline

Definition at line 49 of file BoundedQueue.h.

49 {
50 expComputed = false;
51 if (queuesize==maxsize) {
52 assert(last==first); // The queue is full, next value to enter will replace oldest one
53 sumofqueue -= elems[last];
54 if ((++last) == maxsize) last = 0;
55 } else
56 queuesize++;
57 sumofqueue += x;
58 elems[first] = x;
59 if ((++first) == maxsize) {first = 0;last = 0;}
60 }

◆ size()

template<class T>
int Gluco2::bqueue< T >::size ( void )
inline

Definition at line 103 of file BoundedQueue.h.

103{ return queuesize; }
Here is the caller graph for this function:

The documentation for this class was generated from the following file: