bool GenericAstNode::getRangeInMainFile(std::pair<int, int> &result, clang::SourceManager const &manager, clang::ASTContext &context) { auto range = getRange(); if (range.isInvalid()) { return false; } auto start = manager.getDecomposedSpellingLoc(range.getBegin()); auto end = manager.getDecomposedSpellingLoc(clang::Lexer::getLocForEndOfToken(range.getEnd(), 0, manager, context.getLangOpts())); if (start.first != end.first || start.first != manager.getMainFileID()) { //Not in the same file, or not in the main file (probably #included) return false; } result = std::make_pair(start.second, end.second); return true; }