本文整理汇总了C++中AST::asDeclarator方法的典型用法代码示例。如果您正苦于以下问题:C++ AST::asDeclarator方法的具体用法?C++ AST::asDeclarator怎么用?C++ AST::asDeclarator使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AST
的用法示例。
在下文中一共展示了AST::asDeclarator方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: fineTuneASTNodePositions
//.........这里部分代码省略.........
return;
if (!functionDefinitionAST->decl_specifier_list
|| !functionDefinitionAST->decl_specifier_list->value)
return;
SimpleSpecifierAST *simpleSpecifierAST =
functionDefinitionAST->decl_specifier_list->value->asSimpleSpecifier();
if (!simpleSpecifierAST)
return;
unsigned firstBraceTokenIndex = compoundStatementAST->lbrace_token;
unsigned specifierTokenIndex = simpleSpecifierAST->firstToken();
Token firstBraceToken = m_unit->tokenAt(firstBraceTokenIndex);
Token specifierToken = m_unit->tokenAt(specifierTokenIndex);
if (debug) {
qDebug() << "firstBraceToken:" << firstBraceToken.spell();
qDebug() << "specifierToken:" << specifierToken.spell();
}
int firstBracePosEnd = getTokenStartCursorPosition(firstBraceTokenIndex, m_workingCursor);
bool isOutsideBraces =
m_initialChangeSelectionCursor.position() <= firstBracePosEnd;
if (currentASTStep() == 1 && isOutsideBraces) {
int newPosStart = getTokenStartCursorPosition(specifierTokenIndex, m_workingCursor);
if (debug)
qDebug() << "Selecting everything to the left of the function braces.";
positions.astPosStart = newPosStart;
positions.astPosEnd = firstBracePosEnd - 1;
}
} else if (DeclaratorAST *declaratorAST = ast->asDeclarator()) {
PostfixDeclaratorListAST *list = declaratorAST->postfix_declarator_list;
if (!list)
return;
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.";