53 lines
1.7 KiB
C
53 lines
1.7 KiB
C
|
//===--- SourceExtraction.cpp - Clang refactoring library -----------------===//
|
||
|
//
|
||
|
// The LLVM Compiler Infrastructure
|
||
|
//
|
||
|
// This file is distributed under the University of Illinois Open Source
|
||
|
// License. See LICENSE.TXT for details.
|
||
|
//
|
||
|
//===----------------------------------------------------------------------===//
|
||
|
|
||
|
#ifndef LLVM_CLANG_LIB_TOOLING_REFACTORING_EXTRACT_SOURCE_EXTRACTION_H
|
||
|
#define LLVM_CLANG_LIB_TOOLING_REFACTORING_EXTRACT_SOURCE_EXTRACTION_H
|
||
|
|
||
|
#include "clang/Basic/LLVM.h"
|
||
|
|
||
|
namespace clang {
|
||
|
|
||
|
class LangOptions;
|
||
|
class SourceManager;
|
||
|
class SourceRange;
|
||
|
class Stmt;
|
||
|
|
||
|
namespace tooling {
|
||
|
|
||
|
/// Determines which semicolons should be inserted during extraction.
|
||
|
class ExtractionSemicolonPolicy {
|
||
|
public:
|
||
|
bool isNeededInExtractedFunction() const {
|
||
|
return IsNeededInExtractedFunction;
|
||
|
}
|
||
|
|
||
|
bool isNeededInOriginalFunction() const { return IsNeededInOriginalFunction; }
|
||
|
|
||
|
/// Returns the semicolon insertion policy that is needed for extraction of
|
||
|
/// the given statement from the given source range.
|
||
|
static ExtractionSemicolonPolicy compute(const Stmt *S,
|
||
|
SourceRange &ExtractedRange,
|
||
|
const SourceManager &SM,
|
||
|
const LangOptions &LangOpts);
|
||
|
|
||
|
private:
|
||
|
ExtractionSemicolonPolicy(bool IsNeededInExtractedFunction,
|
||
|
bool IsNeededInOriginalFunction)
|
||
|
: IsNeededInExtractedFunction(IsNeededInExtractedFunction),
|
||
|
IsNeededInOriginalFunction(IsNeededInOriginalFunction) {}
|
||
|
bool IsNeededInExtractedFunction;
|
||
|
bool IsNeededInOriginalFunction;
|
||
|
};
|
||
|
|
||
|
} // end namespace tooling
|
||
|
} // end namespace clang
|
||
|
|
||
|
#endif // LLVM_CLANG_LIB_TOOLING_REFACTORING_EXTRACT_SOURCE_EXTRACTION_H
|