本文整理汇总了C++中Consumer::startVariation方法的典型用法代码示例。如果您正苦于以下问题:C++ Consumer::startVariation方法的具体用法?C++ Consumer::startVariation怎么用?C++ Consumer::startVariation使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Consumer
的用法示例。
在下文中一共展示了Consumer::startVariation方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
//.........这里部分代码省略.........
{
uint8_t flag = data.get();
buf.clear();
text.get(buf);
comment.swap(buf, bool(flag & comm::Ante_Eng), bool(flag & comm::Ante_Oth));
consumer.putTrailingComment(comment);
break;
}
case token::End_Marker: break;
default: return; //IO_RAISE(Game, Corrupted, "unexpected token");
}
return;
case token::Start_Marker:
if (move)
{
if (hasNote)
{
consumer.putMove(move, annotation, preComment, comment, marks);
if (!moveInfo.isEmpty())
{
consumer.putMoveInfo(moveInfo);
moveInfo.clear();
}
marks.clear();
annotation.clear();
comment.clear();
preComment.clear();
hasNote = false;
}
else
{
consumer.putMove(move);
}
lastMove = move;
move.clear();
}
//M_ASSERT(!hasNote);
m_position.push();
m_position.board().undoMove(lastMove);
consumer.startVariation();
decodeVariation(consumer, data, text);
consumer.finishVariation();
m_position.pop();
break;
case token::Nag:
{
nag::ID nag = nag::ID(m_strm.get());
if (nag == 0)
{
move.setLegalMove(false);
}
else
{
annotation.add(nag);
hasNote = true;
}
}
break;
case token::Mark:
if (data.peek() & 0x80)
moveInfo.add().decode(data);
else
marks.add().decode(data);
hasNote = true;
break;
case token::Comment:
{
uint8_t flag = data.get();
if (flag & comm::Ante)
{
buf.clear();
text.get(buf);
preComment.swap(buf, bool(flag & comm::Ante_Eng), bool(flag & comm::Ante_Oth));
}
if (flag & comm::Post)
{
buf.clear();
text.get(buf);
comment.swap(buf, bool(flag & comm::Post_Eng), bool(flag & comm::Post_Oth));
}
hasNote = true;
}
break;
}
}
}
}