1//===--- Lookup.h - Framework for clang refactoring tools --*- C++ -*------===//
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//
9// This file defines helper methods for clang tools performing name lookup.
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef LLVM_CLANG_TOOLING_REFACTORING_LOOKUP_H
14#define LLVM_CLANG_TOOLING_REFACTORING_LOOKUP_H
15
16#include "clang/Basic/LLVM.h"
17#include "clang/Basic/SourceLocation.h"
18#include <string>
19
20namespace clang {
21
22class DeclContext;
23class NamedDecl;
24class NestedNameSpecifier;
25
26namespace tooling {
27
28/// Emulate a lookup to replace one nested name specifier with another using as
29/// few additional namespace qualifications as possible.
30///
31/// This does not perform a full C++ lookup so ADL will not work.
32///
33/// \param Use The nested name to be replaced.
34/// \param UseLoc The location of name to be replaced.
35/// \param UseContext The context in which the nested name is contained. This
36/// will be used to minimize namespace qualifications.
37/// \param FromDecl The declaration to which the nested name points.
38/// \param ReplacementString The replacement nested name. Must be fully
39/// qualified including a leading "::".
40/// \returns The new name to be inserted in place of the current nested name.
41std::string replaceNestedName(const NestedNameSpecifier *Use,
42 SourceLocation UseLoc,
43 const DeclContext *UseContext,
44 const NamedDecl *FromDecl,
45 StringRef ReplacementString);
46
47} // end namespace tooling
48} // end namespace clang
49
50#endif // LLVM_CLANG_TOOLING_REFACTORING_LOOKUP_H
51

source code of clang/include/clang/Tooling/Refactoring/Lookup.h