void bfrange::enqueue(int block) { restore(); // both goal positions bfqueue.enqueue(this); if (block) bfqueue.block(); }
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; } }
void range::enqueue(int block) { squeue.enqueue(this); if (block) squeue.block(); }