本文整理汇总了C++中Consumer::putPrecedingComment方法的典型用法代码示例。如果您正苦于以下问题:C++ Consumer::putPrecedingComment方法的具体用法?C++ Consumer::putPrecedingComment怎么用?C++ Consumer::putPrecedingComment使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Consumer
的用法示例。
在下文中一共展示了Consumer::putPrecedingComment方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
void
Decoder::decodeVariation(Consumer& consumer, util::ByteStream& data, ByteStream& text)
{
MarkSet marks;
MoveInfoSet moveInfo;
Annotation annotation;
mstl::string buf;
Comment comment;
Comment preComment;
bool hasNote(false); // satisfies the compiler
unsigned pieceNum(0); // satisfies the compiler
Move move;
Move lastMove;
while (true)
{
Byte b = m_strm.get();
if (__builtin_expect(b > token::Last, 1))
{
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);
}
m_position.doMove(move, pieceNum);
}
else
{
if (lastMove)
{
m_position.doMove(lastMove, pieceNum);
lastMove.clear();
}
if (hasNote)
{
consumer.putPrecedingComment(comment, annotation, marks);
marks.clear();
annotation.clear();
comment.clear();
hasNote = false;
}
}
pieceNum = decodeMove(b, move);
}
else
{
switch (b)
{
case token::End_Marker:
if (move)
{
if (hasNote)
{
consumer.putMove(move, annotation, preComment, comment, marks);
if (!moveInfo.isEmpty())
consumer.putMoveInfo(moveInfo);
}
else
{
consumer.putMove(move);
}
}
else if (hasNote)
{
consumer.putPrecedingComment(comment, annotation, marks);
hasNote = false;
}
switch (m_strm.get())
{
case token::Comment:
{
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;
//.........这里部分代码省略.........