本文整理汇总了C++中AST::asTemplateId方法的典型用法代码示例。如果您正苦于以下问题:C++ AST::asTemplateId方法的具体用法?C++ AST::asTemplateId怎么用?C++ AST::asTemplateId使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AST
的用法示例。
在下文中一共展示了AST::asTemplateId方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: fineTuneASTNodePositions
//.........这里部分代码省略.........
PostfixDeclaratorAST *postfixDeclarator = list->value;
if (!postfixDeclarator)
return;
FunctionDeclaratorAST *functionDeclarator = postfixDeclarator->asFunctionDeclarator();
if (!functionDeclarator)
return;
SpecifierListAST *cv_list = functionDeclarator->cv_qualifier_list;
if (!cv_list)
return;
SpecifierAST *first_cv = cv_list->value;
if (!first_cv)
return;
unsigned firstCVTokenIndex = first_cv->firstToken();
Token firstCVToken = m_unit->tokenAt(firstCVTokenIndex);
if (debug) {
qDebug() << "firstCVTokenIndex:" << firstCVToken.spell();
}
int cvPosStart = getTokenStartCursorPosition(firstCVTokenIndex, m_workingCursor);
bool isBeforeCVList = m_initialChangeSelectionCursor.position() < cvPosStart;
if (currentASTStep() == 1 && isBeforeCVList) {
if (debug)
qDebug() << "Selecting function declarator without CV qualifiers.";
int newPosEnd = cvPosStart;
positions.astPosEnd = newPosEnd - 1;
}
} else if (TemplateIdAST *templateIdAST = ast->asTemplateId()) {
unsigned identifierTokenIndex = templateIdAST->identifier_token;
Token identifierToken = m_unit->tokenAt(identifierTokenIndex);
if (debug) {
qDebug() << "identifierTokenIndex:" << identifierToken.spell();
}
int newPosStart = getTokenStartCursorPosition(identifierTokenIndex, m_workingCursor);
int newPosEnd = getTokenEndCursorPosition(identifierTokenIndex, m_workingCursor);
bool isInsideIdentifier = m_initialChangeSelectionCursor.anchor() >= newPosStart &&
m_initialChangeSelectionCursor.position() <= newPosEnd;
if (currentASTStep() == 1 && isInsideIdentifier) {
if (debug)
qDebug() << "Selecting just identifier before selecting template id.";
positions.astPosStart = newPosStart;
positions.astPosEnd = newPosEnd;
}
} else if (TemplateDeclarationAST *templateDeclarationAST = ast->asTemplateDeclaration()) {
unsigned templateKeywordTokenIndex = templateDeclarationAST->template_token;
unsigned greaterTokenIndex = templateDeclarationAST->greater_token;
Token templateKeywordToken = m_unit->tokenAt(templateKeywordTokenIndex);
Token greaterToken = m_unit->tokenAt(greaterTokenIndex);
if (debug) {
qDebug() << "templateKeywordTokenIndex:" << templateKeywordToken.spell();
qDebug() << "greaterTokenIndex:" << greaterToken.spell();
}
int templateKeywordPosStart = getTokenStartCursorPosition(templateKeywordTokenIndex,
m_workingCursor);
int templateKeywordPosEnd = getTokenEndCursorPosition(templateKeywordTokenIndex,
m_workingCursor);