本文整理汇总了C++中RelayRace::passBaton方法的典型用法代码示例。如果您正苦于以下问题:C++ RelayRace::passBaton方法的具体用法?C++ RelayRace::passBaton怎么用?C++ RelayRace::passBaton使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类RelayRace
的用法示例。
在下文中一共展示了RelayRace::passBaton方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: runLeg
/**
* Interpret successive calls.
*/
void
runLeg(trace::Call *call) {
/* Consume successive calls for this thread. */
do {
assert(call);
assert(call->thread_id == leg);
retraceCall(call);
delete call;
call = parser->parse_call();
} while (call && call->thread_id == leg);
if (call) {
/* Pass the baton */
assert(call->thread_id != leg);
flushRendering();
race->passBaton(call);
} else {
/* Reached the finish line */
if (0) std::cerr << "finished on leg " << leg << "\n";
if (leg) {
/* Notify the fore runner */
race->finishLine();
} else {
/* We are the fore runner */
finished = true;
}
}
}
示例2: runLeg
/**
* Interpret successive calls.
*/
void
runLeg(trace::Call *call) {
/* Consume successive calls for this thread. */
do {
bool callEndsFrame = false;
static trace::ParseBookmark frameStart;
assert(call);
assert(call->thread_id == leg);
if (loopCount && call->flags & trace::CALL_FLAG_END_FRAME) {
callEndsFrame = true;
parser.getBookmark(frameStart);
}
retraceCall(call);
delete call;
call = parser.parse_call();
/* Restart last frame if looping is requested. */
if (loopCount) {
if (!call) {
parser.setBookmark(lastFrameStart);
call = parser.parse_call();
if (loopCount > 0) {
--loopCount;
}
} else if (callEndsFrame) {
lastFrameStart = frameStart;
}
}
} while (call && call->thread_id == leg);
if (call) {
/* Pass the baton */
assert(call->thread_id != leg);
flushRendering();
race->passBaton(call);
} else {
/* Reached the finish line */
if (0) std::cerr << "finished on leg " << leg << "\n";
if (leg) {
/* Notify the fore runner */
race->finishLine();
} else {
/* We are the fore runner */
finished = true;
}
}
}