shared_ptr<CallingRange> RepositoryXL::getCallingRange() { string callerName = FunctionCall::instance().callerName(); if (callerName == "VBA") { // Called from VBA - check whether the corresponding calling range // object exists and create it if not. RangeMap::const_iterator i = callingRanges_.find(callerName); if (i == callingRanges_.end()) { shared_ptr<CallingRange> callingRange(new CallingRange); callingRanges_[callingRange->key()] = callingRange; return callingRange; } else { return i->second; } // Called from a worksheet formula } else if (callerName.empty()) { // Calling range not yet named - create a new CallingRange object shared_ptr<CallingRange> callingRange(new CallingRange); callingRanges_[callingRange->key()] = callingRange; return callingRange; } else { // Calling range already named - return associated CallingRange object RangeMap::const_iterator i = callingRanges_.find(callerName); OH_REQUIRE(i != callingRanges_.end(), "No calling range named " << callerName); return i->second; } }
bool rangeBasedShouldSuppress(int beginLine, clang::ASTContext &context, oclint::RuleBase *rule) { std::string filePath = getMainFilePath(context); auto commentRangesIt = rangeMapping.find(filePath); RangeSet commentRanges; if (commentRangesIt == rangeMapping.end()) { DeclAnnotationRangeCollector annotationCollector; commentRanges = annotationCollector.collect(context, rule); rangeMapping[filePath] = commentRanges; } else { commentRanges = commentRangesIt->second; } for (const auto& range : commentRanges) { if (beginLine >= range.first && beginLine <= range.second) { return true; } } return false; }