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

Namespaces

 fixit
 

Classes

class  CommonOptionsParser
 A parser for options common to all command-line Clang tools. More...
 
struct  CompileCommand
 Specifies the working directory and command of a compilation. More...
 
class  CompilationDatabase
 Interface for compilation databases. More...
 
class  CompilationDatabasePlugin
 Interface for compilation database plugins. More...
 
class  FixedCompilationDatabase
 A compilation database that returns a single compile command line. More...
 
class  Range
 A source range independent of the SourceManager. More...
 
class  Replacement
 A text replacement. More...
 
struct  TranslationUnitReplacements
 Collection of Replacements generated from a single translation unit. More...
 
struct  PathComparator
 
class  FileMatchTrie
 A trie to efficiently match against the entries of the compilation database in order of matching suffix length. More...
 
class  JSONCompilationDatabase
 A JSON based compilation database. More...
 
class  RefactoringTool
 A tool to run refactorings. More...
 
class  RefactoringCallback
 Base class for RefactoringCallbacks. More...
 
class  ReplaceStmtWithText
 Replace the text of the statement bound to FromId with the text in ToText. More...
 
class  ReplaceStmtWithStmt
 Replace the text of the statement bound to FromId with the text of the statement bound to ToId. More...
 
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  ToolAction
 Interface to process a clang::CompilerInvocation. More...
 
class  FrontendActionFactory
 Interface to generate clang::FrontendActions. More...
 
class  SourceFileCallbacks
 Callbacks called before and after each source file processed by a FrontendAction created by the FrontedActionFactory returned by newFrontendActionFactory. More...
 
class  ToolInvocation
 Utility to run a FrontendAction in a single clang invocation. More...
 
class  ClangTool
 Utility to run a FrontendAction over a set of files. More...
 
class  FileMatchTrieNode
 A node of the FileMatchTrie. More...
 

Typedefs

typedef std::vector< std::string > CommandLineArguments
 A sequence of command line arguments. More...
 
typedef std::function
< CommandLineArguments(const
CommandLineArguments
&, StringRef Filename)> 
ArgumentsAdjuster
 A prototype of a command line adjuster. More...
 
typedef llvm::Registry
< CompilationDatabasePlugin
CompilationDatabasePluginRegistry
 
typedef std::set< ReplacementReplacements
 A set of Replacements. More...
 
typedef std::vector< std::pair
< std::string, std::string > > 
FileContentMappings
 The first part of the pair is the filename, the second part the file-content. More...
 

Enumerations

enum  ArgumentInsertPosition { ArgumentInsertPosition::BEGIN, ArgumentInsertPosition::END }
 

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 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 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::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...
 
bool applyAllReplacements (const std::vector< Replacement > &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...
 
unsigned shiftedCodePosition (const Replacements &Replaces, unsigned Position)
 Calculates how a code Position is shifted when Replaces are applied. More...
 
unsigned shiftedCodePosition (const std::vector< Replacement > &Replaces, unsigned Position)
 Calculates how a code Position is shifted when Replaces are applied. More...
 
void deduplicate (std::vector< Replacement > &Replaces, std::vector< Range > &Conflicts)
 Removes duplicate Replacements and reports if Replacements conflict with one another. More...
 
std::vector< RangecalculateChangedRanges (const Replacements &Replaces)
 Calculates the ranges in a single file that are affected by the Replacements. More...
 
std::vector< RangecalculateRangesAfterReplacements (const Replacements &Replaces, const std::vector< Range > &Ranges)
 Calculates the new ranges after Replaces are applied. More...
 
std::map< std::string,
Replacements
groupReplacementsByFile (const Replacements &Replaces)
 Groups a random set of replacements by file path. More...
 
Replacements mergeReplacements (const Replacements &First, const Replacements &Second)
 Merges two sets of replacements with the second set referring to the code after applying the first set. More...
 
bool formatAndApplyAllReplacements (const Replacements &Replaces, 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 (clang::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 (clang::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...
 
std::unique_ptr< ASTUnitbuildASTFromCode (const Twine &Code, const Twine &FileName="input.cc", std::shared_ptr< PCHContainerOperations > PCHContainerOps=std::make_shared< PCHContainerOperations >())
 Builds an AST for 'Code'. More...
 
std::unique_ptr< ASTUnitbuildASTFromCodeWithArgs (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 >())
 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...
 
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...
 
clang::CompilerInvocationnewInvocation (clang::DiagnosticsEngine *Diagnostics, const llvm::opt::ArgStringList &CC1Args)
 Creates a CompilerInvocation. More...
 
static int getRangeSize (const SourceManager &Sources, const CharSourceRange &Range, const LangOptions &LangOpts)
 
template<typename T >
unsigned shiftedCodePositionInternal (const T &Replaces, unsigned Position)
 
static std::vector< RangemergeAndSortRanges (std::vector< Range > Ranges)
 
static
CompilationDatabasePluginRegistry::Add
< JSONCompilationDatabasePlugin > 
X ("json-compilation-database","Reads JSON formatted compilation databases")
 
static std::vector< std::string > nodeToCommandLine (const std::vector< llvm::yaml::ScalarNode * > &Nodes)
 
static Replacement replaceStmtWithText (SourceManager &Sources, const Stmt &From, StringRef Text)
 
static Replacement replaceStmtWithStmt (SourceManager &Sources, const Stmt &From, const Stmt &To)
 
static clang::driver::DrivernewDriver (clang::DiagnosticsEngine *Diagnostics, const char *BinaryName, IntrusiveRefCntPtr< vfs::FileSystem > VFS)
 Builds a clang driver initialized for running clang tools. More...
 
static const
llvm::opt::ArgStringList * 
getCC1Arguments (clang::DiagnosticsEngine *Diagnostics, clang::driver::Compilation *Compilation)
 Retrieves the clang CC1 specific flags out of the compilation's jobs. More...
 
static std::vector< std::string > getSyntaxOnlyToolArgs (const Twine &ToolName, const std::vector< std::string > &ExtraArgs, StringRef FileName)
 
static void injectResourceDir (CommandLineArguments &Args, const char *Argv0, void *MainAddr)
 

Variables

volatile int JSONAnchorSource = 0
 
static int LLVM_ATTRIBUTE_UNUSED JSONAnchorDest = JSONAnchorSource
 
static const char *const InvalidLocation = ""
 

Typedef Documentation

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.

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

A sequence of command line arguments.

Definition at line 30 of file ArgumentsAdjusters.h.

Definition at line 19 of file CompilationDatabasePluginRegistry.h.

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

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

Definition at line 157 of file Tooling.h.

A set of Replacements.

FIXME: Change to a vector and deduplicate in the RefactoringTool.

Definition at line 148 of file Replacement.h.

Enumeration Type Documentation

Enumerator
BEGIN 
END 

Definition at line 47 of file ArgumentsAdjusters.h.

Function Documentation

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
CommandLinethe command line used to invoke the compiler driver or Clang tool, including the path to the executable as CommandLine[0].
InvokedAsthe 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 173 of file Tooling.cpp.

References clang::driver::ToolChain::getTargetAndModeFromProgramName(), and Token.

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 221 of file Replacement.cpp.

References E, I, and clang::Result.

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

bool clang::tooling::applyAllReplacements ( const std::vector< Replacement > &  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 237 of file Replacement.cpp.

References E, I, and clang::Result.

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 252 of file Replacement.cpp.

References clang::SrcMgr::C_User, clang::SourceManager::createFileID(), E, clang::Rewriter::getEditBuffer(), clang::FileManager::getFile(), I, ID, clang::Result, and clang::RewriteBuffer::write().

std::unique_ptr< ASTUnit > clang::tooling::buildASTFromCode ( const Twine &  Code,
const Twine &  FileName = "input.cc",
std::shared_ptr< PCHContainerOperations >  PCHContainerOps = std::make_shared<PCHContainerOperations>() 
)

Builds an AST for 'Code'.

Parameters
CodeC++ code.
FileNameThe file name which 'Code' will be mapped as.
PCHContainerOpsThe PCHContainerOperations for loading and creating clang modules.
Returns
The resulting AST or null if an error occurred.

Definition at line 493 of file Tooling.cpp.

References buildASTFromCodeWithArgs().

std::unique_ptr< ASTUnit > clang::tooling::buildASTFromCodeWithArgs ( 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>() 
)

Builds an AST for 'Code' with additional flags.

Parameters
CodeC++ code.
ArgsAdditional flags to pass on.
FileNameThe file name which 'Code' will be mapped as.
ToolNameThe name of the binary running the tool. Standard library header paths will be resolved relative to this.
PCHContainerOpsThe PCHContainerOperations for loading and creating clang modules.
Returns
The resulting AST or null if an error occurred.

Definition at line 499 of file Tooling.cpp.

References Action, ASTs, clang::vfs::getRealFileSystem(), and getSyntaxOnlyToolArgs().

Referenced by buildASTFromCode().

std::vector< Range > clang::tooling::calculateChangedRanges ( const Replacements &  Replaces)

Calculates the ranges in a single file that are affected by the Replacements.

Overlapping ranges will be merged.

Precondition
Replacements must be for the same file.
Returns
a non-overlapping and sorted ranges.

Definition at line 309 of file Replacement.cpp.

References mergeAndSortRanges(), and clang::prec::Shift.

Referenced by calculateRangesAfterReplacements(), and clang::format::processReplacements().

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 322 of file Replacement.cpp.

References calculateChangedRanges(), mergeAndSortRanges(), mergeReplacements(), and Replacement.

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 77 of file ArgumentsAdjusters.cpp.

Referenced by clang::tooling::ClangTool::appendArgumentsAdjuster().

void clang::tooling::deduplicate ( std::vector< Replacement > &  Replaces,
std::vector< Range > &  Conflicts 
)

Removes duplicate Replacements and reports if Replacements conflict with one another.

All Replacements are assumed to be in the same file.

Postcondition
Replaces[i].getOffset() <= Replaces[i+1].getOffset().

This function sorts Replaces so that conflicts can be reported simply by offset into Replaces and number of elements in the conflict.

Definition at line 169 of file Replacement.cpp.

References Current, clang::tooling::Range::getLength(), clang::tooling::Replacement::getLength(), clang::tooling::Range::getOffset(), clang::tooling::Replacement::getOffset(), clang::tooling::Replacement::getReplacementText(), and max().

bool clang::tooling::formatAndApplyAllReplacements ( const Replacements &  Replaces,
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.

Replacement applications happen independently of the success of other applications.

Parameters
[in]ReplacesReplacements to apply.
[in]RewriteThe Rewritter to apply replacements on.
[in]StyleThe 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 65 of file Refactoring.cpp.

References applyAllReplacements(), clang::SrcMgr::C_User, FilePath, clang::format::formatReplacements(), clang::SourceManager::getBufferData(), clang::FileManager::getFile(), clang::SourceManager::getFileManager(), clang::SourceManager::getOrCreateFileID(), clang::Rewriter::getSourceMgr(), clang::format::getStyle(), groupReplacementsByFile(), ID, clang::Result, SM, and clang::threadSafety::sx::toString().

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
FileEither an absolute or relative path.

Definition at line 158 of file Tooling.cpp.

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

static const llvm::opt::ArgStringList* clang::tooling::getCC1Arguments ( clang::DiagnosticsEngine Diagnostics,
clang::driver::Compilation Compilation 
)
static
ArgumentsAdjuster clang::tooling::getClangStripOutputAdjuster ( )

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

Definition at line 36 of file ArgumentsAdjusters.cpp.

Referenced by clang::tooling::ClangTool::ClangTool().

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 commnand line arguments.

Definition at line 21 of file ArgumentsAdjusters.cpp.

Referenced by clang::tooling::ClangTool::ClangTool().

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

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

Definition at line 54 of file ArgumentsAdjusters.cpp.

References END, and I.

Referenced by getInsertArgumentAdjuster().

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 72 of file ArgumentsAdjusters.cpp.

References getInsertArgumentAdjuster().

static int clang::tooling::getRangeSize ( const SourceManager &  Sources,
const CharSourceRange &  Range,
const LangOptions &  LangOpts 
)
static
static std::vector<std::string> clang::tooling::getSyntaxOnlyToolArgs ( const Twine &  ToolName,
const std::vector< std::string > &  ExtraArgs,
StringRef  FileName 
)
static

Definition at line 113 of file Tooling.cpp.

Referenced by buildASTFromCodeWithArgs(), and runToolOnCodeWithArgs().

std::map< std::string, Replacements > clang::tooling::groupReplacementsByFile ( const Replacements &  Replaces)

Groups a random set of replacements by file path.

Replacements related to the same file entry are put into the same vector.

Definition at line 431 of file Replacement.cpp.

Referenced by formatAndApplyAllReplacements().

static void clang::tooling::injectResourceDir ( CommandLineArguments &  Args,
const char *  Argv0,
void *  MainAddr 
)
static
static std::vector<Range> clang::tooling::mergeAndSortRanges ( std::vector< Range >  Ranges)
static
Replacements clang::tooling::mergeReplacements ( const Replacements &  First,
const Replacements &  Second 
)

Merges two sets of replacements with the second set referring to the code after applying the first set.

Within both 'First' and 'Second', replacements must not overlap.

Definition at line 439 of file Replacement.cpp.

References Delta, I, and clang::Result.

Referenced by calculateRangesAfterReplacements(), and clang::format::processReplacements().

static clang::driver::Driver* clang::tooling::newDriver ( clang::DiagnosticsEngine Diagnostics,
const char *  BinaryName,
IntrusiveRefCntPtr< vfs::FileSystem >  VFS 
)
static

Builds a clang driver initialized for running clang tools.

Definition at line 50 of file Tooling.cpp.

References clang::driver::Driver::setTitle().

Referenced by clang::tooling::ToolInvocation::run().

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 353 of file Tooling.h.

References clang::serialized_diags::create().

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 364 of file Tooling.h.

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

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

Creates a CompilerInvocation.

Returns a clang build invocation initialized from the CC1 flags.

Definition at line 90 of file Tooling.cpp.

References clang::CompilerInvocation::CreateFromArgs().

Referenced by clang::tooling::ToolInvocation::run().

static std::vector<std::string> clang::tooling::nodeToCommandLine ( const std::vector< llvm::yaml::ScalarNode * > &  Nodes)
static

Definition at line 214 of file JSONCompilationDatabase.cpp.

References getValue(), and Node.

bool clang::tooling::operator< ( const Replacement LHS,
const Replacement RHS 
)
bool clang::tooling::operator== ( const Replacement LHS,
const Replacement RHS 
)
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
UseThe nested name to be replaced.
UseContextThe context in which the nested name is contained. This will be used to minimize namespace qualifications.
FromDeclThe declaration to which the nested name points.
ReplacementStringThe 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 85 of file Lookup.cpp.

References getBestNamespaceSubstr(), isFullyQualified(), and isInsideDifferentNamespaceWithSameName().

static Replacement clang::tooling::replaceStmtWithStmt ( SourceManager &  Sources,
const Stmt From,
const Stmt To 
)
static
static Replacement clang::tooling::replaceStmtWithText ( SourceManager &  Sources,
const Stmt From,
StringRef  Text 
)
static
bool clang::tooling::runToolOnCode ( clang::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
ToolActionThe action to run over the code.
CodeC++ code.
FileNameThe file name which 'Code' will be mapped as.
PCHContainerOpsThe PCHContainerOperations for loading and creating clang modules.
Returns
- True if 'ToolAction' was successfully executed.

Definition at line 104 of file Tooling.cpp.

References runToolOnCodeWithArgs().

bool clang::tooling::runToolOnCodeWithArgs ( clang::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
ToolActionThe action to run over the code.
CodeC++ code.
ArgsAdditional flags to pass on.
FileNameThe file name which 'Code' will be mapped as.
ToolNameThe name of the binary running the tool. Standard library header paths will be resolved relative to this.
PCHContainerOpsThe PCHContainerOperations for loading and creating clang modules.
Returns
- True if 'ToolAction' was successfully executed.

Definition at line 124 of file Tooling.cpp.

References clang::vfs::getRealFileSystem(), and getSyntaxOnlyToolArgs().

Referenced by runToolOnCode().

unsigned clang::tooling::shiftedCodePosition ( const Replacements &  Replaces,
unsigned  Position 
)

Calculates how a code Position is shifted when Replaces are applied.

Definition at line 158 of file Replacement.cpp.

References shiftedCodePositionInternal().

unsigned clang::tooling::shiftedCodePosition ( const std::vector< Replacement > &  Replaces,
unsigned  Position 
)

Calculates how a code Position is shifted when Replaces are applied.

Precondition
Replaces[i].getOffset() <= Replaces[i+1].getOffset().

Definition at line 164 of file Replacement.cpp.

References shiftedCodePositionInternal().

template<typename T >
unsigned clang::tooling::shiftedCodePositionInternal ( const T &  Replaces,
unsigned  Position 
)

Definition at line 142 of file Replacement.cpp.

References Offset, and Position.

Referenced by shiftedCodePosition().

static CompilationDatabasePluginRegistry::Add<JSONCompilationDatabasePlugin> clang::tooling::X ( "json-compilation-database"  ,
"Reads JSON formatted compilation databases"   
)
static

Variable Documentation

const char* const clang::tooling::InvalidLocation = ""
static

Definition at line 30 of file Replacement.cpp.

Referenced by clang::tooling::Replacement::isApplicable().

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

Definition at line 329 of file CompilationDatabase.cpp.

volatile int clang::tooling::JSONAnchorSource = 0

Definition at line 142 of file JSONCompilationDatabase.cpp.