101 template<
typename T, u
int32 _S>
class Pipe11 :
107 T buffer_[_S *
sizeof(T)];
109 Block(Block *prev) : next_(NULL) {
if (prev) prev->next_ =
this; }
110 ~Block() {
if (next_)
delete next_; }
128 template<
typename T, u
int32 _S>
class Pipe1N :
139 template<
typename T, u
int32 _S>
class PipeN1 :
150 template<
typename T, u
int32 _S>
class PipeNN :
168 T
pop(
bool waitForItem =
true);
171 template<
typename T, u
int32 _S,
class Pipe>
class Push1;
172 template<
typename T, u
int32 _S,
class Pipe>
class PushN;
173 template<
typename T, u
int32 _S,
class Pipe>
class Pop1;
174 template<
typename T, u
int32 _S,
class Pipe>
class PopN;
184 template<
typename T, u
int32 _S,
typename Head,
typename Tail,
class P,
template<
typename, u
int32,
class>
class Push,
template<
typename, u
int32,
class>
class Pop>
class Pipe :
186 template<
typename T, u
int32 _S,
class Pipe>
friend class Push1;
187 template<
typename T, u
int32 _S,
class Pipe>
friend class PushN;
188 template<
typename T, u
int32 _S,
class Pipe>
friend class Pop1;
189 template<
typename T, u
int32 _S,
class Pipe>
friend class PopN;
195 Block(Block *prev) : next_(NULL) {
if (prev) prev->next_ =
this; }
196 ~Block() {
if (next_)
delete next_; }
204 int32
volatile waitingList_;
206 Push<T, _S, P> *_push;
219 template<
class Pipe>
class PipeFunctor {
222 PipeFunctor(Pipe &p);
225 template<
typename T, u
int32 _S,
class Pipe>
class Push1 :
226 public PipeFunctor<Pipe> {
229 void operator ()(T &t);
232 template<
typename T, u
int32 _S,
class Pipe>
class PushN :
233 public PipeFunctor<Pipe>,
237 void operator ()(T &t);
240 template<
typename T, u
int32 _S,
class Pipe>
class Pop1 :
241 public PipeFunctor<Pipe> {
247 template<
typename T, u
int32 _S,
class Pipe>
class PopN :
248 public PipeFunctor<Pipe>,
255 template<
typename T, u
int32 S>
class Pipe11 :
256 public Pipe<T, S, int32, int32, Pipe11<T, S>, Push1, Pop1> {
262 template<
typename T, u
int32 S>
class Pipe1N :
263 public Pipe<T, S, int32, int32 volatile, Pipe1N<T, S>, Push1, PopN> {
269 template<
typename T, u
int32 S>
class PipeN1 :
270 public Pipe<T, S, int32 volatile, int32, PipeN1<T, S>, PushN, Pop1> {
276 template<
typename T, u
int32 S>
class PipeNN :
277 public Pipe<T, S, int32 volatile, int32 volatile, PipeNN<T, S>, PushN, PopN> {
286 #include "pipe.tpl.cpp"