Ejemplo n.º 1
0
void	bfrange::enqueue(int block)
{
	restore();			// both goal positions
	bfqueue.enqueue(this);
	if (block)
		bfqueue.block();
}
Ejemplo n.º 2
0
void page::cmdproc()
{
	if (stage->next())
		ERROR "more than a single command on bsqueue\n" FATAL;
	switch (stage->current()->cmdtype()) {
	case FC:	// freeze the current 2-column range and start a new one
		adddef(stage->dequeue());
		twocol->compose(FINAL);
		adddef(twocol);
		twocol = new multicol(this);
		break;
	case BP:	// force a page break
		adddef(stage->dequeue());
		squeue.block();
		break;
	case FL:	// flush out all floatables that precede this range:
			// no more stream input allowed until they're past
		if (stage->serialno() > ufqueue.serialno() ||
			stage->serialno() > bfqueue.serialno()) {
			range *r = stage->dequeue();
			r->enqueue(ANDBLOCK);
		} else
			adddef(stage->dequeue());
		break;
	default:
		stage->current()->dump();
		ERROR "unknown command\n" FATAL;
	}
}
Ejemplo n.º 3
0
void	range::enqueue(int block)
{
	squeue.enqueue(this);
	if (block)
		squeue.block();
}