clang 8.0.0

Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
clang::tooling Namespace Reference

## Namespaces
| fixit
| internal
| traits

## Classes
class | AllTUsToolExecutor
| Executes given frontend actions on all files/TUs in the compilation database. More...
class | AllTUsToolExecutorPlugin
struct | ApplyChangesSpec
class | ArgumentsAdjustingCompilations
class | ASTMatchRefactorer
| Adaptor between `ast_matchers::MatchFinder` and `tooling::RefactoringTool`. More...
class | ASTSelectionRequirement
| An AST selection requirement is satisfied when any portion of the AST overlaps with the selection range. More...
class | AtomicChange
| An atomic change is used to create and group a set of source edits, e.g. More...
class | ClangTool
| Utility to run a FrontendAction over a set of files. More...
class | CodeRangeASTSelection
| An AST selection value that corresponds to a selection of a set of statements that belong to one body of code (like one function). More...
class | CodeRangeASTSelectionRequirement
| A selection requirement that is satisfied when the selection range overlaps with a number of neighbouring statements in the AST. More...
class | CommonOptionsParser
| A parser for options common to all command-line Clang tools. More...
class | CompilationDatabase
| Interface for compilation databases. More...
class | CompilationDatabasePlugin
| Interface for compilation database plugins. More...
struct | CompileCommand
| Specifies the working directory and command of a compilation. More...
struct | Diagnostic
| Represents the diagnostic with the level of severity and possible fixes to be applied. More...
struct | DiagnosticMessage
| Represents the diagnostic message with the error message associated and the information on the location of the problem. More...
class | ExecutionContext
| The context of an execution, including the information about compilation and results. More...
class | ExtractFunction
| An "Extract Function" refactoring moves code into a new function that's then called from the place where the original code was. More...
class | ExtractionSemicolonPolicy
| Determines which semicolons should be inserted during extraction. More...
class | FileMatchTrie
| A trie to efficiently match against the entries of the compilation database in order of matching suffix length. More...
class | FileMatchTrieNode
| A node of the `FileMatchTrie`. More...
class | FindSymbolOccurrencesRefactoringRule
| A type of refactoring action rule that finds a set of symbol occurrences that reference a particular symbol. More...
class | FixedCompilationDatabase
| A compilation database that returns a single compile command line. More...
class | FrontendActionFactory
| Interface to generate clang::FrontendActions. More...
class | HeaderIncludes
| Generates replacements for inserting or deleting #include directives in a file. More...
class | IncludeCategoryManager
| This class manages priorities of C++ #include categories and calculates priorities for headers. More...
struct | IncludeStyle
| Style for sorting and grouping C++ #include directives. More...
class | InMemoryToolResults
| Stores the key-value results in memory. More...
class | JSONCompilationDatabase
class | NamedDeclFindingConsumer
class | OptionalRefactoringOption
| A refactoring option that stores a value of type `T`. More...
class | OptionRequirement
| A requirement that evaluates to the value of the given `OptionType` when the `OptionType` is a required option. More...
struct | PathComparator
class | QualifiedRenameRule
class | QualifiedRenamingAction
| Rename all symbols identified by the given USRs. More...
class | Range
| A source range independent of the `SourceManager`. More...
class | RecursiveSymbolVisitor
| Traverses the AST and visits the occurrence of each named symbol in the given nodes. More...
class | RefactoringAction
| A refactoring action is a class that defines a set of related refactoring action rules. More...
class | RefactoringActionRule
| A refactoring action rule is a wrapper class around a specific refactoring action rule (SourceChangeRefactoringRule, etc) that, in addition to invoking the action, describes the requirements that determine when the action can be initiated. More...
class | RefactoringActionRuleBase
| A common refactoring action rule interface that defines the 'invoke' function that performs the refactoring operation (either fully or partially). More...
class | RefactoringActionRuleRequirement
| A refactoring action rule requirement determines when a refactoring action rule can be invoked. More...
class | RefactoringASTConsumer
class | RefactoringCallback
| Base class for RefactoringCallbacks. More...
struct | RefactoringDescriptor
class | RefactoringOption
| A refactoring option is an interface that describes a value that has an impact on the outcome of a refactoring. More...
class | RefactoringOptionsRequirement
| A base class for any requirement that requires some refactoring options. More...
class | RefactoringOptionVisitor
| An interface that declares functions that handle different refactoring option types. More...
class | RefactoringResultConsumer
| An abstract interface that consumes the various refactoring results that can be produced by refactoring actions. More...
class | RefactoringRuleContext
| The refactoring rule context stores all of the inputs that might be needed by a refactoring action rule. More...
class | RefactoringTool
| A tool to run refactorings. More...
class | RenameOccurrences
class | RenamingAction
class | RenamingASTConsumer
class | ReplaceIfStmtWithItsBody
| Replace an if-statement bound to `Id` with the outdented text of its body, choosing the consequent or the alternative based on whether `PickTrueBranch` is true. More...
class | Replacement
| A text replacement. More...
class | ReplacementError
| Carries extra error information in replacement-related llvm::Error, e.g. More...
class | Replacements
| Maintains a set of replacements that are conflict-free. More...
class | ReplaceNodeWithTemplate
| Replace the text of an AST node bound to `FromId` with the result of evaluating the template in `ToTemplate`. More...
class | ReplaceStmtWithStmt
| Replace the text of the statement bound to `FromId` with the text of the statement bound to `ToId`. More...
class | ReplaceStmtWithText
| Replace the text of the statement bound to `FromId` with the text in `ToText`. More...
class | RequiredRefactoringOption
| A required refactoring option that stores a value of type `T`. More...
struct | SelectedASTNode
| Represents a selected AST node. More...
class | SourceChangeRefactoringRule
| A type of refactoring action rule that produces source replacements in the form of atomic changes. More...
class | SourceFileCallbacks
| Callbacks called before and after each source file processed by a FrontendAction created by the FrontedActionFactory returned by `newFrontendActionFactory`. More...
class | SourceRangeSelectionRequirement
| A selection requirement that is satisfied when any portion of the source text is selected. More...
class | SourceSelectionRequirement
| A base class for any requirement that expects some part of the source to be selected in an editor (or the refactoring tool with the -selection option). More...
class | StandaloneToolExecutor
| A standalone executor that runs FrontendActions on a given set of TUs in sequence. More...
class | StandaloneToolExecutorPlugin
class | SymbolName
| A name of a symbol. More...
class | SymbolOccurrence
| An occurrence of a symbol in the source. More...
class | ToolAction
| Interface to process a clang::CompilerInvocation. More...
class | ToolExecutor
| Interface for executing clang frontend actions. More...
class | ToolExecutorPlugin
| Interface for factories that create specific executors. More...
class | ToolInvocation
| Utility to run a FrontendAction in a single clang invocation. More...
class | ToolResults
| An abstraction for the result of a tool execution. More...
struct | TranslationUnitDiagnostics
| Collection of Diagnostics generated from a single translation unit. More...
struct | TranslationUnitReplacements
| Collection of Replacements generated from a single translation unit. More...
struct | USRFindingAction
class | USRSymbolRenamer

## Typedefs
using | CommandLineArguments = std::vector< std::string >
| A sequence of command line arguments. More...
using | ArgumentsAdjuster = std::function< CommandLineArguments(const CommandLineArguments &, StringRef Filename)>
| A prototype of a command line adjuster. More...
using | CompilationDatabasePluginRegistry = llvm::Registry< CompilationDatabasePlugin >
using | AtomicChanges = std::vector< AtomicChange >
using | RefactoringActionRules = std::vector< std::unique_ptr< RefactoringActionRule > >
| A set of refactoring action rules that should have unique initiation requirements. More...
using | SymbolOccurrences = std::vector< SymbolOccurrence >
using | ToolExecutorPluginRegistry = llvm::Registry< ToolExecutorPlugin >
using | FileContentMappings = std::vector< std::pair< std::string, std::string > >
| The first part of the pair is the filename, the second part the file-content. More...

## Enumerations
enum | ArgumentInsertPosition { ArgumentInsertPosition::BEGIN, ArgumentInsertPosition::END }
enum | replacement_error { replacement_error::fail_to_apply = 0, replacement_error::wrong_file_path, replacement_error::overlap_conflict, replacement_error::insert_conflict }
enum | JSONCommandLineSyntax { JSONCommandLineSyntax::Windows, JSONCommandLineSyntax::Gnu, JSONCommandLineSyntax::AutoDetect }
| A JSON based compilation database. More...
enum | SourceSelectionKind { SourceSelectionKind::None, SourceSelectionKind::ContainsSelection, SourceSelectionKind::ContainsSelectionStart, SourceSelectionKind::ContainsSelectionEnd, SourceSelectionKind::InsideSelection }

## Functions
ArgumentsAdjuster | getClangSyntaxOnlyAdjuster ()
| Gets an argument adjuster that converts input command line arguments to the "syntax check only" variant. More...
ArgumentsAdjuster | getClangStripOutputAdjuster ()
| Gets an argument adjuster which removes output-related command line arguments. More...
ArgumentsAdjuster | getClangStripDependencyFileAdjuster ()
| Gets an argument adjuster which removes dependency-file related command line arguments. More...
ArgumentsAdjuster | getInsertArgumentAdjuster (const CommandLineArguments &Extra, ArgumentInsertPosition Pos)
| Gets an argument adjuster which inserts `Extra` arguments in the specified position. More...
ArgumentsAdjuster | getInsertArgumentAdjuster (const char *Extra, ArgumentInsertPosition Pos=ArgumentInsertPosition::END)
| Gets an argument adjuster which inserts an `Extra` argument in the specified position. More...
ArgumentsAdjuster | getStripPluginsAdjuster ()
| Gets an argument adjuster which strips plugin related command line arguments. More...
ArgumentsAdjuster | combineAdjusters (ArgumentsAdjuster First, ArgumentsAdjuster Second)
| Gets an argument adjuster which adjusts the arguments in sequence with the `First` adjuster and then with the `Second` one. More...
std::unique_ptr< CompilationDatabase > | inferMissingCompileCommands (std::unique_ptr< CompilationDatabase >)
| Returns a wrapped CompilationDatabase that defers to the provided one, but getCompileCommands() will infer commands for unknown files. More...
std::string | replaceNestedName (const NestedNameSpecifier *Use, const DeclContext *UseContext, const NamedDecl *FromDecl, StringRef ReplacementString)
| Emulate a lookup to replace one nested name specifier with another using as few additional namespace qualifications as possible. More...
bool | operator< (const Replacement &LHS, const Replacement &RHS)
| Less-than operator between two Replacements. More...
bool | operator== (const Replacement &LHS, const Replacement &RHS)
| Equal-to operator between two Replacements. More...
bool | applyAllReplacements (const Replacements &Replaces, Rewriter &Rewrite)
| Apply all replacements in `Replaces` to the Rewriter `Rewrite`. More...
llvm::Expected< std::string > | applyAllReplacements (StringRef Code, const Replacements &Replaces)
| Applies all replacements in `Replaces` to `Code`. More...
std::vector< Range > | calculateRangesAfterReplacements (const Replacements &Replaces, const std::vector< Range > &Ranges)
| Calculates the new ranges after `Replaces` are applied. More...
std::map< std::string, Replacements > | groupReplacementsByFile (FileManager &FileMgr, const std::map< std::string, Replacements > &FileToReplaces)
| If there are multiple <File, Replacements> pairs with the same file entry, we only keep one pair and discard the rest. More...
llvm::Expected< std::unique_ptr< ToolExecutor > > | createExecutorFromCommandLineArgs (int &argc, const char **argv, llvm::cl::OptionCategory &Category, const char *Overview=nullptr)
| This creates a ToolExecutor that is in the global registry based on commandline arguments. More...
Optional< SelectedASTNode > | findSelectedASTNodes (const ASTContext &Context, SourceRange SelectionRange)
| Traverses the given ASTContext and creates a tree of selected AST nodes. More...
llvm::Expected< std::string > | applyAtomicChanges (llvm::StringRef FilePath, llvm::StringRef Code, llvm::ArrayRef< AtomicChange > Changes, const ApplyChangesSpec &Spec)
| Applies all AtomicChanges in `Changes` to the `Code`. More...
std::vector< std::unique_ptr< RefactoringAction > > | createRefactoringActions ()
| Returns the list of all the available refactoring actions. More...
template<typename RuleType , typename... RequirementTypes>
std::unique_ptr< RefactoringActionRule > | createRefactoringActionRule (const RequirementTypes &... Requirements)
| Creates a new refactoring action rule that constructs and invokes the `RuleType` rule when all of the requirements are satisfied. More...
template<typename OptionType >
std::shared_ptr< OptionType > | createRefactoringOption ()
| Constructs a refactoring option of the given type. More...
llvm::Expected< std::vector< AtomicChange > > | createRenameReplacements (const SymbolOccurrences &Occurrences, const SourceManager &SM, const SymbolName &NewName)
| Returns source replacements that correspond to the rename of the given symbol occurrences. More...
const NamedDecl * | getNamedDeclAt (const ASTContext &Context, const SourceLocation Point)
const NamedDecl * | getNamedDeclFor (const ASTContext &Context, const std::string &Name)
std::string | getUSRForDecl (const Decl *Decl)
const NamedDecl * | getCanonicalSymbolDeclaration (const NamedDecl *FoundDecl)
| Returns the canonical declaration that best represents a symbol that can be renamed. More...
std::vector< std::string > | getUSRsForDeclaration (const NamedDecl *ND, ASTContext &Context)
| Returns the set of USRs that correspond to the given declaration. More...
std::vector< tooling::AtomicChange > | createRenameAtomicChanges (llvm::ArrayRef< std::string > USRs, llvm::StringRef NewName, Decl *TranslationUnitDecl)
| Create atomic changes for renaming all symbol references which are identified by the USRs set to a given new name. More...
SymbolOccurrences | getOccurrencesOfUSRs (ArrayRef< std::string > USRs, StringRef PrevName, Decl *Decl)
| Finds the symbol occurrences for the symbol that's identified by the given USR set. More...
bool | formatAndApplyAllReplacements (const std::map< std::string, Replacements > &FileToReplaces, Rewriter &Rewrite, StringRef Style="file")
| Groups `Replaces` by the file path and applies each group of Replacements on the related file in `Rewriter`. More...
template<typename T >
std::unique_ptr< FrontendActionFactory > | newFrontendActionFactory ()
| Returns a new FrontendActionFactory for a given type. More...
template<typename FactoryT >
std::unique_ptr< FrontendActionFactory > | newFrontendActionFactory (FactoryT *ConsumerFactory, SourceFileCallbacks *Callbacks=nullptr)
| Returns a new FrontendActionFactory for any type that provides an implementation of newASTConsumer(). More...
bool | runToolOnCode (FrontendAction *ToolAction, const Twine &Code, const Twine &FileName="input.cc", std::shared_ptr< PCHContainerOperations > PCHContainerOps=std::make_shared< PCHContainerOperations >())
| Runs (and deletes) the tool on 'Code' with the -fsyntax-only flag. More...
bool | runToolOnCodeWithArgs (FrontendAction *ToolAction, const Twine &Code, const std::vector< std::string > &Args, const Twine &FileName="input.cc", const Twine &ToolName="clang-tool", std::shared_ptr< PCHContainerOperations > PCHContainerOps=std::make_shared< PCHContainerOperations >(), const FileContentMappings &VirtualMappedFiles=FileContentMappings())
| Runs (and deletes) the tool on 'Code' with the -fsyntax-only flag and with additional other flags. More...
bool | runToolOnCodeWithArgs (FrontendAction *ToolAction, const Twine &Code, llvm::IntrusiveRefCntPtr< llvm::vfs::FileSystem > VFS, const std::vector< std::string > &Args, const Twine &FileName="input.cc", const Twine &ToolName="clang-tool", std::shared_ptr< PCHContainerOperations > PCHContainerOps=std::make_shared< PCHContainerOperations >())
std::unique_ptr< ASTUnit > | buildASTFromCode (StringRef Code, StringRef FileName="input.cc", std::shared_ptr< PCHContainerOperations > PCHContainerOps=std::make_shared< PCHContainerOperations >())
| Builds an AST for 'Code'. More...
std::unique_ptr< ASTUnit > | buildASTFromCodeWithArgs (StringRef Code, const std::vector< std::string > &Args, StringRef FileName="input.cc", StringRef ToolName="clang-tool", std::shared_ptr< PCHContainerOperations > PCHContainerOps=std::make_shared< PCHContainerOperations >(), ArgumentsAdjuster Adjuster=getClangStripDependencyFileAdjuster())
| Builds an AST for 'Code' with additional flags. More...
std::string | getAbsolutePath (StringRef File)
| Returns the absolute path of `File`, by prepending it with the current directory if `File` is not absolute. More...
llvm::Expected< std::string > | getAbsolutePath (llvm::vfs::FileSystem &FS, StringRef File)
| An overload of getAbsolutePath that works over the provided `FS`. More...
void | addTargetAndModeForProgramName (std::vector< std::string > &CommandLine, StringRef InvokedAs)
| Changes CommandLine to contain implicit flags that would have been defined had the compiler driver been invoked through the path InvokedAs. More...
CompilerInvocation * | newInvocation (DiagnosticsEngine *Diagnostics, const llvm::opt::ArgStringList &CC1Args)
| Creates a `CompilerInvocation`. More...
llvm::cl::opt< std::string > | Filter ("filter", llvm::cl::desc("Only process files that match this filter. " "This flag only applies to all-TUs."), llvm::cl::init(".*"))
static llvm::cl::opt< unsigned > | ExecutorConcurrency ("execute-concurrency", llvm::cl::desc("The number of threads used to process all files in " "parallel. Set to 0 for hardware concurrency. " "This flag only applies to all-TUs."), llvm::cl::init(0))
static ToolExecutorPluginRegistry::Add< AllTUsToolExecutorPlugin > | X ("all-TUs", "Runs FrontendActions on all TUs in the compilation database. " "Tool results are stored in memory.")
llvm::cl::opt< std::string > | ExecutorName ("executor", llvm::cl::desc("The name of the executor to use."), llvm::cl::init("standalone"))
static void | convertChangesToFileReplacements (ArrayRef< AtomicChange > AtomicChanges, std::map< std::string, tooling::Replacements > *FileToReplaces)
| Takes each atomic change and inserts its replacements into the set of replacements that belong to the appropriate file. More...
static Replacement | replaceStmtWithText (SourceManager &Sources, const Stmt &From, StringRef Text)
static Replacement | replaceStmtWithStmt (SourceManager &Sources, const Stmt &From, const Stmt &To)
static llvm::Error | make_string_error (const llvm::Twine &Message)
static ArgumentsAdjuster | getDefaultArgumentsAdjusters ()
static ToolExecutorPluginRegistry::Add< StandaloneToolExecutorPlugin > | X ("standalone", "Runs FrontendActions on a set of files provided " "via positional arguments.")

## Variables
llvm::cl::opt< std::string > | Filter
llvm::cl::opt< std::string > | ExecutorName
volatile int | AllTUsToolExecutorAnchorSource = 0
volatile int | JSONAnchorSource = 0
static int LLVM_ATTRIBUTE_UNUSED | JSONAnchorDest = JSONAnchorSource
volatile int | StandaloneToolExecutorAnchorSource = 0
static int LLVM_ATTRIBUTE_UNUSED | StandaloneToolExecutorAnchorDest
static int LLVM_ATTRIBUTE_UNUSED | AllTUsToolExecutorAnchorDest

## Typedef Documentation

## ◆ ArgumentsAdjuster

using clang::tooling::ArgumentsAdjuster = typedef std::function<CommandLineArguments( const CommandLineArguments &, StringRef Filename)>

A prototype of a command line adjuster.

Command line argument adjuster is responsible for command line arguments modification before the arguments are used to run a frontend action.

Definition at line 37 of file ArgumentsAdjusters.h.

## ◆ AtomicChanges

using clang::tooling::AtomicChanges = typedef std::vector<AtomicChange>

Definition at line 141 of file AtomicChange.h.

## ◆ CommandLineArguments

using clang::tooling::CommandLineArguments = typedef std::vector<std::string>

A sequence of command line arguments.

Definition at line 30 of file ArgumentsAdjusters.h.

## ◆ CompilationDatabasePluginRegistry

using clang::tooling::CompilationDatabasePluginRegistry = typedef llvm::Registry<CompilationDatabasePlugin>

Definition at line 41 of file CompilationDatabasePluginRegistry.h.

## ◆ FileContentMappings

using clang::tooling::FileContentMappings = typedef std::vector<std::pair<std::string, std::string> >

The first part of the pair is the filename, the second part the file-content.

Definition at line 167 of file Tooling.h.

## ◆ RefactoringActionRules

using clang::tooling::RefactoringActionRules = typedef std::vector<std::unique_ptr<RefactoringActionRule> >

A set of refactoring action rules that should have unique initiation requirements.

Definition at line 46 of file RefactoringActionRules.h.

## ◆ SymbolOccurrences

using clang::tooling::SymbolOccurrences = typedef std::vector<SymbolOccurrence>

Definition at line 86 of file SymbolOccurrences.h.

## ◆ ToolExecutorPluginRegistry

using clang::tooling::ToolExecutorPluginRegistry = typedef llvm::Registry<ToolExecutorPlugin>

Definition at line 19 of file ToolExecutorPluginRegistry.h.

## Enumeration Type Documentation

## ◆ ArgumentInsertPosition

enum clang::tooling::ArgumentInsertPosition
| strong

Enumerator
BEGIN |
END |

Definition at line 51 of file ArgumentsAdjusters.h.

## ◆ JSONCommandLineSyntax

enum clang::tooling::JSONCommandLineSyntax
| strong

A JSON based compilation database.

JSON compilation database files must contain a list of JSON objects which provide the command lines in the attributes 'directory', 'command', 'arguments' and 'file': [ { "directory": "<working directory of the compile>", "command": "<compile command line>", "file": "<path to source file>" }, { "directory": "<working directory of the compile>", "arguments": ["<raw>", "<command>" "<line>" "<parameters>"], "file": "<path to source file>" }, ... ] Each object entry defines one compile action. The specified file is considered to be the main source file for the translation unit.

'command' is a full command line that will be unescaped.

'arguments' is a list of command line arguments that will not be unescaped.

JSON compilation databases can for example be generated in CMake projects by setting the flag -DCMAKE_EXPORT_COMPILE_COMMANDS.

Enumerator
Windows |
Gnu |
AutoDetect |

Definition at line 61 of file JSONCompilationDatabase.h.

## ◆ replacement_error

enum clang::tooling::replacement_error
| strong

Enumerator
fail_to_apply |
wrong_file_path |
overlap_conflict |
insert_conflict |

Definition at line 146 of file Replacement.h.

## ◆ SourceSelectionKind

enum clang::tooling::SourceSelectionKind
| strong

Enumerator
None | A node that's not selected.
ContainsSelection | A node that's considered to be selected because the whole selection range is inside of its source range.
ContainsSelectionStart | A node that's considered to be selected because the start of the selection range is inside its source range.
ContainsSelectionEnd | A node that's considered to be selected because the end of the selection range is inside its source range.
InsideSelection | A node that's considered to be selected because the node is entirely in the selection range.

Definition at line 24 of file ASTSelection.h.

## Function Documentation

## ◆ addTargetAndModeForProgramName()

void clang::tooling::addTargetAndModeForProgramName | ( | std::vector< std::string > & | CommandLine,
|  | StringRef | InvokedAs
| ) |  |

Changes CommandLine to contain implicit flags that would have been defined had the compiler driver been invoked through the path InvokedAs.

For example, when called with `InvokedAs` set to `i686-linux-android-g++`, the arguments '-target', 'i686-linux-android`,`–driver-mode=g++` will be inserted after the first argument in `CommandLine`.

This function will not add new `-target` or `--driver-mode` flags if they are already present in `CommandLine` (even if they have different settings than would have been inserted).

Precondition
  `llvm::InitializeAllTargets()` has been called.

Parameters

  CommandLine | the command line used to invoke the compiler driver or Clang tool, including the path to the executable as `CommandLine`[0].
  InvokedAs | the path to the driver used to infer implicit flags.

Note
  This will not set `CommandLine`[0] to `InvokedAs`. The tooling infrastructure expects that CommandLine[0] is a tool path relative to which the builtin headers can be found.

Definition at line 221 of file Tooling.cpp.

Referenced by newFrontendActionFactory().

## ◆ applyAllReplacements() [1/2]

bool clang::tooling::applyAllReplacements | ( | const Replacements & | Replaces,
|  | Rewriter & | Rewrite
| ) |  |

Apply all replacements in `Replaces` to the Rewriter `Rewrite`.

Replacement applications happen independently of the success of other applications.

Returns
  true if all replacements apply. false otherwise.

Definition at line 569 of file Replacement.cpp.

References clang::tooling::Replacements::rbegin(), and clang::tooling::Replacements::rend().

Referenced by clang::tooling::RefactoringTool::applyAllReplacements(), applyAtomicChanges(), clang::tooling::Replacements::operator==(), and clang::format::processReplacements().

## ◆ applyAllReplacements() [2/2]

llvm::Expected< std::string > clang::tooling::applyAllReplacements | ( | StringRef | Code,
|  | const Replacements & | Replaces
| ) |  |

Applies all replacements in `Replaces` to `Code`.

This completely ignores the path stored in each replacement. If all replacements are applied successfully, this returns the code with replacements applied; otherwise, an llvm::Error carrying llvm::StringError is returned (the Error message can be converted to string using `llvm::toString()` and 'std::error_code<tt>in theError` should be ignored).

Definition at line 581 of file Replacement.cpp.

References clang::SrcMgr::C_User, clang::SourceManager::createFileID(), clang::tooling::Replacements::empty(), fail_to_apply, clang::Rewriter::getEditBuffer(), clang::FileManager::getFile(), clang::tooling::Replacements::rbegin(), clang::tooling::Replacements::rend(), and clang::RewriteBuffer::write().

## ◆ applyAtomicChanges()

llvm::Expected< std::string > clang::tooling::applyAtomicChanges | ( | llvm::StringRef | FilePath,
|  | llvm::StringRef | Code,
|  | llvm::ArrayRef< AtomicChange > | Changes,
|  | const ApplyChangesSpec & | Spec
| ) |  |

Applies all AtomicChanges in `Changes` to the `Code`.

This completely ignores the file path in each change and replaces them with `FilePath`, i.e. callers are responsible for ensuring all changes are for the same file.

Returns
  The changed code if all changes are applied successfully; otherwise, an llvm::Error carrying llvm::StringError is returned (the Error message can be converted to string with `llvm::toString()` and the error_code should be ignored).

Definition at line 296 of file AtomicChange.cpp.

References clang::tooling::Replacements::add(), applyAllReplacements(), clang::tooling::ApplyChangesSpec::Cleanup, clang::format::cleanupAroundReplacements(), clang::format::FormatStyle::ColumnLimit, clang::tooling::ApplyChangesSpec::Format, clang::tooling::Replacements::getAffectedRanges(), clang::format::make_string_error(), clang::tooling::Replacements::merge(), clang::format::reformat(), clang::format::sortIncludes(), clang::tooling::ApplyChangesSpec::Style, and toString().

## ◆ buildASTFromCode()

std::unique_ptr< ASTUnit > clang::tooling::buildASTFromCode | ( | StringRef | Code,
|  | StringRef | FileName = `"input.cc"`,
|  | std::shared_ptr< PCHContainerOperations > | PCHContainerOps = `std::make_shared<PCHContainerOperations>()`
| ) |  |

Builds an AST for 'Code'.

Parameters

  Code | C++ code.
  FileName | The file name which 'Code' will be mapped as.
  PCHContainerOps | The PCHContainerOperations for loading and creating clang modules.

Returns
  The resulting AST or null if an error occurred.

Definition at line 577 of file Tooling.cpp.

References buildASTFromCodeWithArgs().

## ◆ buildASTFromCodeWithArgs()

std::unique_ptr< ASTUnit > clang::tooling::buildASTFromCodeWithArgs | ( | StringRef | Code,
|  | const std::vector< std::string > & | Args,
|  | StringRef | FileName = `"input.cc"`,
|  | StringRef | ToolName = `"clang-tool"`,
|  | std::shared_ptr< PCHContainerOperations > | PCHContainerOps = `std::make_shared<PCHContainerOperations>()`,
|  | ArgumentsAdjuster | Adjuster = `getClangStripDependencyFileAdjuster()`
| ) |  |

Builds an AST for 'Code' with additional flags.

Parameters

  Code | C++ code.
  Args | Additional flags to pass on.
  FileName | The file name which 'Code' will be mapped as.
  ToolName | The name of the binary running the tool. Standard library header paths will be resolved relative to this.
  PCHContainerOps | The PCHContainerOperations for loading and creating clang modules.
  Adjuster | A function to filter the command line arguments as specified.

Returns
  The resulting AST or null if an error occurred.

Definition at line 583 of file Tooling.cpp.

References getSyntaxOnlyToolArgs().

Referenced by buildASTFromCode().

## ◆ calculateRangesAfterReplacements()

std::vector< Range > clang::tooling::calculateRangesAfterReplacements | ( | const Replacements & | Replaces,
|  | const std::vector< Range > & | Ranges
| ) |  |

Calculates the new ranges after `Replaces` are applied.

These include both the original `Ranges` and the affected ranges of `Replaces` in the new code.

Precondition
  Replacements must be for the same file.

Returns
  The new ranges after `Replaces` are applied. The new ranges will be sorted and non-overlapping.

Definition at line 511 of file Replacement.cpp.

References clang::tooling::Replacements::add(), clang::tooling::Replacements::begin(), combineAndSortRanges(), clang::tooling::Replacements::empty(), clang::tooling::Replacements::getAffectedRanges(), clang::tooling::Replacement::getLength(), clang::tooling::Replacement::getOffset(), clang::tooling::Replacements::merge(), and clang::tooling::Replacement::Replacement().

## ◆ combineAdjusters()

ArgumentsAdjuster clang::tooling::combineAdjusters | ( | ArgumentsAdjuster | First,
|  | ArgumentsAdjuster | Second
| ) |  |

Gets an argument adjuster which adjusts the arguments in sequence with the `First` adjuster and then with the `Second` one.

Definition at line 100 of file ArgumentsAdjusters.cpp.

Referenced by clang::tooling::ClangTool::appendArgumentsAdjuster(), clang::tooling::ArgumentsAdjustingCompilations::getAllCompileCommands(), and getDefaultArgumentsAdjusters().

## ◆ convertChangesToFileReplacements()

static void clang::tooling::convertChangesToFileReplacements | ( | ArrayRef< AtomicChange > | AtomicChanges,
|  | std::map< std::string, tooling::Replacements > * | FileToReplaces
| ) |  |
| static

Takes each atomic change and inserts its replacements into the set of replacements that belong to the appropriate file.

Definition at line 167 of file RenamingAction.cpp.

References clang::tooling::AtomicChange::getReplacements(), and toString().

Referenced by clang::tooling::USRSymbolRenamer::HandleTranslationUnit().

## ◆ createExecutorFromCommandLineArgs()

llvm::Expected< std::unique_ptr< ToolExecutor > > clang::tooling::createExecutorFromCommandLineArgs | ( | int & | argc,
|  | const char ** | argv,
|  | llvm::cl::OptionCategory & | Category,
|  | const char * | Overview = `nullptr`
| ) |  |

This creates a ToolExecutor that is in the global registry based on commandline arguments.

This picks the right executor based on the `--executor` option. This parses the commandline arguments with `CommonOptionsParser`, so caller does not need to parse again.

By default, this creates a `StandaloneToolExecutor` ("standalone") if `--executor` is not provided.

Definition at line 91 of file Execution.cpp.

References AllTUsToolExecutorAnchorSource, clang::tooling::internal::createExecutorFromCommandLineArgsImpl(), and StandaloneToolExecutorAnchorSource.

Referenced by clang::tooling::ToolExecutorPlugin::~ToolExecutorPlugin().

## ◆ createRefactoringActionRule()

template<typename RuleType , typename... RequirementTypes>

std::unique_ptr< RefactoringActionRule > clang::tooling::createRefactoringActionRule | ( | const RequirementTypes &... | Requirements | ) |

Creates a new refactoring action rule that constructs and invokes the `RuleType` rule when all of the requirements are satisfied.

This function takes in a list of values whose type derives from `RefactoringActionRuleRequirement`. These values describe the initiation requirements that have to be satisfied by the refactoring engine before the provided action rule can be constructed and invoked. The engine verifies that the requirements are satisfied by evaluating them (using the 'evaluate' member function) and checking that the results don't contain any errors. Once all requirements are satisfied, the provided refactoring rule is constructed by passing in the values returned by the requirements' evaluate functions as arguments to the constructor. The rule is then invoked immediately after construction.

The separation of requirements, their evaluation and the invocation of the refactoring action rule allows the refactoring clients to:

- Disable refactoring action rules whose requirements are not supported.
- Gather the set of options and define a command-line / visual interface that allows users to input these options without ever invoking the action.

Definition at line 119 of file RefactoringActionRulesInternal.h.

## ◆ createRefactoringActions()

std::vector< std::unique_ptr< RefactoringAction > > clang::tooling::createRefactoringActions | ( |  | ) |

Returns the list of all the available refactoring actions.

Definition at line 99 of file RefactoringActions.cpp.

Referenced by clang::tooling::RefactoringAction::~RefactoringAction().

## ◆ createRefactoringOption()

template<typename OptionType >

std::shared_ptr<OptionType> clang::tooling::createRefactoringOption | ( |  | ) |

Constructs a refactoring option of the given type.

The ownership of options is shared among requirements that use it because one option can be used by multiple rules in a refactoring action.

Definition at line 55 of file RefactoringOption.h.

## ◆ createRenameAtomicChanges()

std::vector< tooling::AtomicChange > clang::tooling::createRenameAtomicChanges | ( | llvm::ArrayRef< std::string > | USRs,
|  | llvm::StringRef | NewName,
|  | Decl * | TranslationUnitDecl
| ) |  |

Create atomic changes for renaming all symbol references which are identified by the USRs set to a given new name.

Parameters

  USRs | The set containing USRs of a particular old symbol.
  NewName | The new name to replace old symbol name.
  TranslationUnitDecl | The translation unit declaration.

Returns
  Atomic changes for renaming.

Definition at line 512 of file USRLocFinder.cpp.

Referenced by clang::tooling::QualifiedRenameRule::describe(), and clang::tooling::USRSymbolRenamer::HandleTranslationUnit().

## ◆ createRenameReplacements()

Expected< std::vector< AtomicChange > > clang::tooling::createRenameReplacements | ( | const SymbolOccurrences & | Occurrences,
|  | const SourceManager & | SM,
|  | const SymbolName & | NewName
| ) |  |

Returns source replacements that correspond to the rename of the given symbol occurrences.

Definition at line 144 of file RenamingAction.cpp.

## ◆ ExecutorConcurrency()

static llvm::cl::opt<unsigned> clang::tooling::ExecutorConcurrency | ( | "execute-concurrency" | ,
|  | llvm::cl::desc("The number of threads used to process all files in " "parallel. Set to 0 for hardware concurrency. " "This flag only applies to all-TUs.") | ,
|  | llvm::cl::init(0) |
| ) |  |
| static

Referenced by clang::tooling::AllTUsToolExecutorPlugin::create(), and clang::tooling::AllTUsToolExecutor::execute().

## ◆ ExecutorName()

llvm::cl::opt<std::string> clang::tooling::ExecutorName | ( | "executor" | ,
|  | llvm::cl::desc("The name of the executor to use.") | ,
|  | llvm::cl::init("standalone") |
| ) |  |

## ◆ Filter()

llvm::cl::opt<std::string> clang::tooling::Filter | ( | "filter" | ,
|  | llvm::cl::desc("Only process files that match this filter. " "This flag only applies to all-TUs.") | ,
|  | llvm::cl::init(".*") |
| ) |  |

## ◆ findSelectedASTNodes()

Optional< SelectedASTNode > clang::tooling::findSelectedASTNodes | ( | const ASTContext & | Context,
|  | SourceRange | SelectionRange
| ) |  |

Traverses the given ASTContext and creates a tree of selected AST nodes.

Returns
  None if no nodes are selected in the AST, or a selected AST node that corresponds to the TranslationUnitDecl otherwise.

Definition at line 184 of file ASTSelection.cpp.

References clang::SourceRange::getBegin(), clang::SourceRange::getEnd(), clang::SourceManager::getFileID(), clang::ASTContext::getSourceManager(), clang::ASTContext::getTranslationUnitDecl(), clang::SourceLocation::isPairOfFileLocations(), and clang::SourceRange::isValid().

## ◆ formatAndApplyAllReplacements()

bool clang::tooling::formatAndApplyAllReplacements | ( | const std::map< std::string, Replacements > & | FileToReplaces,
|  | Rewriter & | Rewrite,
|  | StringRef | Style = `"file"`
| ) |  |

Groups `Replaces` by the file path and applies each group of Replacements on the related file in `Rewriter`.

In addition to applying given Replacements, this function also formats the changed code.

Precondition
  Replacements must be conflict-free.

FileToReplaces will be deduplicated with `groupReplacementsByFile` before application.

Replacement applications happen independently of the success of other applications.

Parameters

  [in] | FileToReplaces | Replacements (grouped by files) to apply.
  [in] | Rewrite | The `Rewritter` to apply replacements on.
  [in] | Style | The style name used for reformatting. See `getStyle` in "include/clang/Format/Format.h" for all possible style forms.

Returns
  true if all replacements applied and formatted. false otherwise.

Definition at line 70 of file Refactoring.cpp.

References clang::tooling::RefactoringTool::applyAllReplacements(), clang::SrcMgr::C_User, clang::format::formatReplacements(), clang::SourceManager::getBufferData(), clang::FileManager::getFile(), clang::SourceManager::getFileManager(), clang::SourceManager::getOrCreateFileID(), clang::Rewriter::getSourceMgr(), clang::format::getStyle(), groupReplacementsByFile(), SM, and toString().

## ◆ getAbsolutePath() [1/2]

std::string clang::tooling::getAbsolutePath | ( | StringRef | File | ) |

Returns the absolute path of `File`, by prepending it with the current directory if `File` is not absolute.

Otherwise returns `File`. If 'File' starts with "./", the returned path will not contain the "./". Otherwise, the returned path will contain the literal path-concatenation of the current directory and `File`.

The difference to llvm::sys::fs::make_absolute is the canonicalization this does by removing "./" and computing native paths.

Parameters

  File | Either an absolute or relative path.

Definition at line 217 of file Tooling.cpp.

Referenced by clang::tooling::CompilationDatabase::autoDetectFromDirectory(), clang::tooling::CompilationDatabase::autoDetectFromSource(), and clang::tooling::ClangTool::run().

## ◆ getAbsolutePath() [2/2]

llvm::Expected< std::string > clang::tooling::getAbsolutePath | ( | llvm::vfs::FileSystem & | FS,
|  | StringRef | File
| ) |  |

An overload of getAbsolutePath that works over the provided `FS`.

Definition at line 202 of file Tooling.cpp.

Referenced by newFrontendActionFactory().

## ◆ getCanonicalSymbolDeclaration()

const NamedDecl * clang::tooling::getCanonicalSymbolDeclaration | ( | const NamedDecl * | FoundDecl | ) |

Returns the canonical declaration that best represents a symbol that can be renamed.

The following canonicalization rules are currently used:

- A constructor is canonicalized to its class.
- A destructor is canonicalized to its class.

Definition at line 42 of file USRFindingAction.cpp.

Referenced by clang::tooling::RenameOccurrences::initiate().

## ◆ getClangStripDependencyFileAdjuster()

ArgumentsAdjuster clang::tooling::getClangStripDependencyFileAdjuster | ( |  | ) |

Gets an argument adjuster which removes dependency-file related command line arguments.

Definition at line 57 of file ArgumentsAdjusters.cpp.

Referenced by clang::tooling::ClangTool::ClangTool(), getDefaultArgumentsAdjusters(), and runToolOnCodeWithArgs().

## ◆ getClangStripOutputAdjuster()

ArgumentsAdjuster clang::tooling::getClangStripOutputAdjuster | ( |  | ) |

Gets an argument adjuster which removes output-related command line arguments.

Definition at line 39 of file ArgumentsAdjusters.cpp.

Referenced by clang::tooling::ClangTool::ClangTool(), and getDefaultArgumentsAdjusters().

## ◆ getClangSyntaxOnlyAdjuster()

ArgumentsAdjuster clang::tooling::getClangSyntaxOnlyAdjuster | ( |  | ) |

Gets an argument adjuster that converts input command line arguments to the "syntax check only" variant.

Add -fsyntax-only option to the command line arguments.

Definition at line 24 of file ArgumentsAdjusters.cpp.

Referenced by clang::tooling::ClangTool::ClangTool(), and getDefaultArgumentsAdjusters().

## ◆ getDefaultArgumentsAdjusters()

static ArgumentsAdjuster clang::tooling::getDefaultArgumentsAdjusters | ( |  | ) |
| static

Definition at line 23 of file StandaloneExecution.cpp.

References combineAdjusters(), getClangStripDependencyFileAdjuster(), getClangStripOutputAdjuster(), and getClangSyntaxOnlyAdjuster().

Referenced by clang::tooling::AllTUsToolExecutor::execute().

## ◆ getInsertArgumentAdjuster() [1/2]

ArgumentsAdjuster clang::tooling::getInsertArgumentAdjuster | ( | const CommandLineArguments & | Extra,
|  | ArgumentInsertPosition | Pos
| ) |  |

Gets an argument adjuster which inserts `Extra` arguments in the specified position.

Definition at line 77 of file ArgumentsAdjusters.cpp.

References END.

Referenced by clang::tooling::ArgumentsAdjustingCompilations::getAllCompileCommands(), and getInsertArgumentAdjuster().

## ◆ getInsertArgumentAdjuster() [2/2]

ArgumentsAdjuster clang::tooling::getInsertArgumentAdjuster | ( | const char * | Extra,
|  | ArgumentInsertPosition | Pos = `ArgumentInsertPosition::END`
| ) |  |

Gets an argument adjuster which inserts an `Extra` argument in the specified position.

Definition at line 95 of file ArgumentsAdjusters.cpp.

References getInsertArgumentAdjuster().

## ◆ getNamedDeclAt()

const NamedDecl * clang::tooling::getNamedDeclAt | ( | const ASTContext & | Context,
|  | const SourceLocation | Point
| ) |  |

Definition at line 77 of file USRFinder.cpp.

Referenced by clang::tooling::RenameOccurrences::initiate().

## ◆ getNamedDeclFor()

const NamedDecl * clang::tooling::getNamedDeclFor | ( | const ASTContext & | Context,
|  | const std::string & | Name
| ) |  |

Definition at line 128 of file USRFinder.cpp.

Referenced by clang::tooling::QualifiedRenameRule::initiate().

## ◆ getOccurrencesOfUSRs()

SymbolOccurrences clang::tooling::getOccurrencesOfUSRs | ( | ArrayRef< std::string > | USRs,
|  | StringRef | PrevName,
|  | Decl * | Decl
| ) |  |

Finds the symbol occurrences for the symbol that's identified by the given USR set.

Returns
  SymbolOccurrences that can be converted to AtomicChanges when renaming.

Definition at line 504 of file USRLocFinder.cpp.

## ◆ getStripPluginsAdjuster()

ArgumentsAdjuster clang::tooling::getStripPluginsAdjuster | ( |  | ) |

Gets an argument adjuster which strips plugin related command line arguments.

Definition at line 111 of file ArgumentsAdjusters.cpp.

## ◆ getUSRForDecl()

std::string clang::tooling::getUSRForDecl | ( | const Decl * | Decl | ) |

Definition at line 135 of file USRFinder.cpp.

References clang::index::generateUSRForDecl().

## ◆ getUSRsForDeclaration()

std::vector< std::string > clang::tooling::getUSRsForDeclaration | ( | const NamedDecl * | ND,
|  | ASTContext & | Context
| ) |  |

Returns the set of USRs that correspond to the given declaration.

Definition at line 177 of file USRFindingAction.cpp.

Referenced by clang::tooling::QualifiedRenameRule::describe().

## ◆ groupReplacementsByFile()

std::map< std::string, Replacements > clang::tooling::groupReplacementsByFile | ( | FileManager & | FileMgr,
|  | const std::map< std::string, Replacements > & | FileToReplaces
| ) |  |

If there are multiple <File, Replacements> pairs with the same file entry, we only keep one pair and discard the rest.

If a file does not exist, its corresponding replacements will be ignored.

Definition at line 612 of file Replacement.cpp.

References clang::FileManager::getFile().

Referenced by clang::tooling::RefactoringTool::applyAllReplacements(), and formatAndApplyAllReplacements().

## ◆ inferMissingCompileCommands()

std::unique_ptr< CompilationDatabase > clang::tooling::inferMissingCompileCommands | ( | std::unique_ptr< CompilationDatabase > | Inner | ) |

Returns a wrapped CompilationDatabase that defers to the provided one, but getCompileCommands() will infer commands for unknown files.

The return value of getAllFiles() or getAllCompileCommands() is unchanged. See InterpolatingCompilationDatabase.cpp for details on heuristics.

Definition at line 542 of file InterpolatingCompilationDatabase.cpp.

## ◆ make_string_error()

static llvm::Error clang::tooling::make_string_error | ( | const llvm::Twine & | Message | ) |
| static

Definition at line 16 of file StandaloneExecution.cpp.

References clang::tooling::StandaloneToolExecutor::ExecutorName.

Referenced by clang::tooling::StandaloneToolExecutorPlugin::create(), clang::tooling::AllTUsToolExecutorPlugin::create(), clang::tooling::AllTUsToolExecutor::execute(), and clang::tooling::StandaloneToolExecutor::execute().

## ◆ newFrontendActionFactory() [1/2]

template<typename T >

std::unique_ptr< FrontendActionFactory > clang::tooling::newFrontendActionFactory | ( |  | ) |

Returns a new FrontendActionFactory for a given type.

T must derive from clang::FrontendAction.

Example: FrontendActionFactory *Factory = newFrontendActionFactory<clang::SyntaxOnlyAction>();

Definition at line 393 of file Tooling.h.

References clang::serialized_diags::create().

## ◆ newFrontendActionFactory() [2/2]

template<typename FactoryT >

std::unique_ptr< FrontendActionFactory > clang::tooling::newFrontendActionFactory | ( | FactoryT * | ConsumerFactory,
|  | SourceFileCallbacks * | Callbacks = `nullptr`
| ) |  |
| inline

Returns a new FrontendActionFactory for any type that provides an implementation of newASTConsumer().

FactoryT must implement: ASTConsumer *newASTConsumer().

Example: struct ProvidesASTConsumers { clang::ASTConsumer *newASTConsumer(); } Factory; std::unique_ptr<FrontendActionFactory> FactoryAdapter( newFrontendActionFactory(&Factory));

Definition at line 404 of file Tooling.h.

References addTargetAndModeForProgramName(), clang::FrontendAction::BeginSourceFileAction(), clang::serialized_diags::create(), clang::FrontendAction::EndSourceFileAction(), getAbsolutePath(), clang::tooling::SourceFileCallbacks::handleBeginSource(), clang::tooling::SourceFileCallbacks::handleEndSource(), and newInvocation().

Referenced by clang::tooling::SourceFileCallbacks::handleEndSource().

## ◆ newInvocation()

CompilerInvocation * clang::tooling::newInvocation | ( | DiagnosticsEngine * | Diagnostics,
|  | const llvm::opt::ArgStringList & | CC1Args
| ) |  |

Creates a `CompilerInvocation`.

Returns a clang build invocation initialized from the CC1 flags.

Definition at line 118 of file Tooling.cpp.

References clang::CompilerInvocation::CreateFromArgs().

Referenced by newFrontendActionFactory(), and clang::tooling::ToolInvocation::run().

## ◆ operator<()

bool clang::tooling::operator< | ( | const Replacement & | LHS,
|  | const Replacement & | RHS
| ) |  |

Less-than operator between two Replacements.

Definition at line 99 of file Replacement.cpp.

References clang::tooling::Replacement::getFilePath(), clang::tooling::Replacement::getLength(), clang::tooling::Replacement::getOffset(), and clang::tooling::Replacement::getReplacementText().

Referenced by clang::tooling::ReplacementError::getExistingReplacement().

## ◆ operator==()

bool clang::tooling::operator== | ( | const Replacement & | LHS,
|  | const Replacement & | RHS
| ) |  |

Equal-to operator between two Replacements.

Definition at line 111 of file Replacement.cpp.

References clang::SourceManager::getDecomposedLoc(), clang::SourceManager::getFileEntryForID(), clang::tooling::Replacement::getFilePath(), clang::tooling::Replacement::getLength(), clang::FileEntry::getName(), clang::tooling::Replacement::getOffset(), clang::tooling::Replacement::getReplacementText(), and InvalidLocation.

## ◆ replaceNestedName()

std::string clang::tooling::replaceNestedName | ( | const NestedNameSpecifier * | Use,
|  | const DeclContext * | UseContext,
|  | const NamedDecl * | FromDecl,
|  | StringRef | ReplacementString
| ) |  |

Emulate a lookup to replace one nested name specifier with another using as few additional namespace qualifications as possible.

This does not perform a full C++ lookup so ADL will not work.

Parameters

  Use | The nested name to be replaced.
  UseContext | The context in which the nested name is contained. This will be used to minimize namespace qualifications.
  FromDecl | The declaration to which the nested name points.
  ReplacementString | The replacement nested name. Must be fully qualified including a leading "::".

Returns
  The new name to be inserted in place of the current nested name.

Definition at line 149 of file Lookup.cpp.

References FromDecl, getBestNamespaceSubstr(), clang::Decl::getDeclContext(), isAmbiguousNameInScope(), isFullyQualified(), and usingFromDifferentCanonicalNamespace().

## ◆ replaceStmtWithStmt()

static Replacement clang::tooling::replaceStmtWithStmt | ( | SourceManager & | Sources,
|  | const Stmt & | From,
|  | const Stmt & | To
| ) |  |
| static

Definition at line 78 of file RefactoringCallbacks.cpp.

References clang::Stmt::getSourceRange(), clang::Lexer::getSourceText(), clang::CharSourceRange::getTokenRange(), and replaceStmtWithText().

Referenced by clang::tooling::ReplaceStmtWithStmt::run(), and clang::tooling::ReplaceIfStmtWithItsBody::run().

## ◆ replaceStmtWithText()

static Replacement clang::tooling::replaceStmtWithText | ( | SourceManager & | Sources,
|  | const Stmt & | From,
|  | StringRef | Text
| ) |  |
| static

Definition at line 73 of file RefactoringCallbacks.cpp.

References clang::Stmt::getSourceRange(), and clang::CharSourceRange::getTokenRange().

Referenced by replaceStmtWithStmt(), and clang::tooling::ReplaceIfStmtWithItsBody::run().

## ◆ runToolOnCode()

bool clang::tooling::runToolOnCode | ( | FrontendAction * | ToolAction,
|  | const Twine & | Code,
|  | const Twine & | FileName = `"input.cc"`,
|  | std::shared_ptr< PCHContainerOperations > | PCHContainerOps = `std::make_shared<PCHContainerOperations>()`
| ) |  |

Runs (and deletes) the tool on 'Code' with the -fsyntax-only flag.

Parameters

  ToolAction | The action to run over the code.
  Code | C++ code.
  FileName | The file name which 'Code' will be mapped as.
  PCHContainerOps | The PCHContainerOperations for loading and creating clang modules.

Returns
  - True if 'ToolAction' was successfully executed.

Definition at line 130 of file Tooling.cpp.

References runToolOnCodeWithArgs().

Referenced by clang::tooling::SourceFileCallbacks::handleEndSource().

## ◆ runToolOnCodeWithArgs() [1/2]

bool clang::tooling::runToolOnCodeWithArgs | ( | FrontendAction * | ToolAction,
|  | const Twine & | Code,
|  | const std::vector< std::string > & | Args,
|  | const Twine & | FileName = `"input.cc"`,
|  | const Twine & | ToolName = `"clang-tool"`,
|  | std::shared_ptr< PCHContainerOperations > | PCHContainerOps = `std::make_shared<PCHContainerOperations>()`,
|  | const FileContentMappings & | VirtualMappedFiles = `FileContentMappings()`
| ) |  |

Runs (and deletes) the tool on 'Code' with the -fsyntax-only flag and with additional other flags.

Parameters

  ToolAction | The action to run over the code.
  Code | C++ code.
  Args | Additional flags to pass on.
  FileName | The file name which 'Code' will be mapped as.
  ToolName | The name of the binary running the tool. Standard library header paths will be resolved relative to this.
  PCHContainerOps | The PCHContainerOperations for loading and creating clang modules.

Returns
  - True if 'ToolAction' was successfully executed.

Definition at line 175 of file Tooling.cpp.

Referenced by runToolOnCode().

## ◆ runToolOnCodeWithArgs() [2/2]

bool clang::tooling::runToolOnCodeWithArgs | ( | FrontendAction * | ToolAction,
|  | const Twine & | Code,
|  | llvm::IntrusiveRefCntPtr< llvm::vfs::FileSystem > | VFS,
|  | const std::vector< std::string > & | Args,
|  | const Twine & | FileName = `"input.cc"`,
|  | const Twine & | ToolName = `"clang-tool"`,
|  | std::shared_ptr< PCHContainerOperations > | PCHContainerOps = `std::make_shared<PCHContainerOperations>()`
| ) |  |

Definition at line 156 of file Tooling.cpp.

References getClangStripDependencyFileAdjuster(), getSyntaxOnlyToolArgs(), and clang::tooling::ToolInvocation::run().

## ◆ X() [1/2]

static ToolExecutorPluginRegistry::Add<StandaloneToolExecutorPlugin> clang::tooling::X | ( | "standalone" | ,
|  | "Runs FrontendActions on a set of files provided " "via positional arguments." |
| ) |  |
| static

## ◆ X() [2/2]

static ToolExecutorPluginRegistry::Add<AllTUsToolExecutorPlugin> clang::tooling::X | ( | "all-TUs" | ,
|  | "Runs FrontendActions on all TUs in the compilation database. " "Tool results are stored in memory." |
| ) |  |
| static

Referenced by clang::tooling::StandaloneToolExecutorPlugin::create(), clang::tooling::AllTUsToolExecutorPlugin::create(), and clang::tooling::FixedCompilationDatabase::getCompileCommands().

## Variable Documentation

## ◆ AllTUsToolExecutorAnchorDest

int LLVM_ATTRIBUTE_UNUSED clang::tooling::AllTUsToolExecutorAnchorDest
| static

Initial value:
=
AllTUsToolExecutorAnchorSource
clang::tooling::AllTUsToolExecutorAnchorSource
volatile int AllTUsToolExecutorAnchorSource
Definition: AllTUsExecution.cpp:184

Definition at line 104 of file Execution.cpp.

## ◆ AllTUsToolExecutorAnchorSource

volatile int clang::tooling::AllTUsToolExecutorAnchorSource = 0

Definition at line 184 of file AllTUsExecution.cpp.

Referenced by createExecutorFromCommandLineArgs().

## ◆ ExecutorName

llvm::cl::opt<std::string> clang::tooling::ExecutorName

Referenced by clang::tooling::internal::createExecutorFromCommandLineArgsImpl().

## ◆ Filter

llvm::cl::opt<std::string> clang::tooling::Filter

Referenced by attemptRecovery(), checkInvariantViolation(), clang::CodeGen::EHFilterScope::classof(), clang::Sema::CorrectDelayedTyposInExpr(), clang::CodeGen::CodeGenFunction::EmitStartEHSpec(), clang::tooling::AllTUsToolExecutor::execute(), clang::CFGBlock::FilteredCFGBlockIterator< IMPL, IsPred >::FilteredCFGBlockIterator(), clang::CloneConstraint::filterGroups(), clang::LookupResult::makeFilter(), clang::tooling::AllTUsToolExecutor::mapVirtualFile(), clang::CFGBlock::FilteredCFGBlockIterator< IMPL, IsPred >::operator*(), clang::CodeGen::EHScopeStack::iterator::operator++(), clang::CFGBlock::FilteredCFGBlockIterator< IMPL, IsPred >::operator++(), and clang::Preprocessor::setCodeCompletionIdentifierInfo().

## ◆ JSONAnchorDest

int LLVM_ATTRIBUTE_UNUSED clang::tooling::JSONAnchorDest = JSONAnchorSource
| static

Definition at line 418 of file CompilationDatabase.cpp.

## ◆ JSONAnchorSource

volatile int clang::tooling::JSONAnchorSource = 0

Definition at line 185 of file JSONCompilationDatabase.cpp.

Referenced by clang::tooling::FixedCompilationDatabase::getCompileCommands().

## ◆ StandaloneToolExecutorAnchorDest

int LLVM_ATTRIBUTE_UNUSED clang::tooling::StandaloneToolExecutorAnchorDest
| static

Initial value:
=
StandaloneToolExecutorAnchorSource
clang::tooling::StandaloneToolExecutorAnchorSource
volatile int StandaloneToolExecutorAnchorSource
Definition: StandaloneExecution.cpp:90

Definition at line 102 of file Execution.cpp.

## ◆ StandaloneToolExecutorAnchorSource

volatile int clang::tooling::StandaloneToolExecutorAnchorSource = 0

Definition at line 90 of file StandaloneExecution.cpp.

Referenced by createExecutorFromCommandLineArgs().