clang  14.0.0git
SymbolOccurrences.cpp
Go to the documentation of this file.
1 //===--- SymbolOccurrences.cpp - Clang refactoring library ----------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
11 #include "llvm/ADT/STLExtras.h"
12 
13 using namespace clang;
14 using namespace tooling;
15 
17  ArrayRef<SourceLocation> Locations)
18  : Kind(Kind) {
19  ArrayRef<std::string> NamePieces = Name.getNamePieces();
20  assert(Locations.size() == NamePieces.size() &&
21  "mismatching number of locations and lengths");
22  assert(!Locations.empty() && "no locations");
23  if (Locations.size() == 1) {
24  new (&SingleRange) SourceRange(
25  Locations[0], Locations[0].getLocWithOffset(NamePieces[0].size()));
26  return;
27  }
28  MultipleRanges = std::make_unique<SourceRange[]>(Locations.size());
29  NumRanges = Locations.size();
30  for (const auto &Loc : llvm::enumerate(Locations)) {
31  MultipleRanges[Loc.index()] = SourceRange(
32  Loc.value(),
33  Loc.value().getLocWithOffset(NamePieces[Loc.index()].size()));
34  }
35 }
clang::SourceRange
A trivial tuple used to represent a source range.
Definition: SourceLocation.h:210
clang::tooling::SymbolOccurrence::SymbolOccurrence
SymbolOccurrence(const SymbolName &Name, OccurrenceKind Kind, ArrayRef< SourceLocation > Locations)
Definition: SymbolOccurrences.cpp:16
clang::tooling::SymbolOccurrence::OccurrenceKind
OccurrenceKind
Definition: SymbolOccurrences.h:41
llvm::ArrayRef
Definition: LLVM.h:34
clang::tooling::SymbolOccurrence::NumRanges
unsigned NumRanges
Definition: SymbolOccurrences.h:82
SymbolOccurrences.h
clang::ObjCPropertyAttribute::Kind
Kind
Definition: DeclObjCCommon.h:22
clang::tooling::SymbolName
A name of a symbol.
Definition: SymbolName.h:29
clang
Definition: CalledOnceCheck.h:17
clang::tooling::SymbolOccurrence::SingleRange
SourceRange SingleRange
Definition: SymbolOccurrences.h:81
SymbolName.h