38 namespace Gecode {
namespace Support {
45 template<
class T,
class A>
69 bool empty(
void)
const;
77 void push(
const T&
x);
80 static void*
operator new(
size_t s)
throw() { (void) s;
return NULL; }
82 static void operator delete(
void*
p) { (void)
p; };
90 template<
class T,
class A>
93 i = (i+1) & (limit - 1);
96 template<
class T,
class A>
98 DynamicQueue<T,A>::resize(
void) {
100 T* nq =
a.template alloc<T>(limit << 1);
102 for (
int i = fst; i<limit; i++)
104 for (
int i = 0; i<lst; i++)
106 a.template free<T>(q,limit);
113 template<
class T,
class A>
116 :
a(a0), limit(8), fst(0), lst(0), q(
a.template alloc<T>(limit)) {}
118 template<
class T,
class A>
124 template<
class T,
class A>
130 template<
class T,
class A>
136 template<
class T,
class A>
145 template<
class T,
class A>
~DynamicQueue(void)
Release memory.
void reset(void)
Reset queue to be empty.
int p
Number of positive literals for node type.
Gecode::IntArgs i(4, 1, 2, 3, 4)
DynamicQueue(A &a)
Initialize queue.
Queue with arbitrary number of elements.
Node * x
Pointer to corresponding Boolean expression node.
void push(const T &x)
Push element x to queue.
T pop(void)
Pop element added first from queue and return it.
Gecode toplevel namespace
bool empty(void) const
Test whether queue is empty.
struct Gecode::@518::NNF::@57::@59 a
For atomic nodes.