1 //===--- SourceExtraction.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 9 #ifndef LLVM_CLANG_TOOLING_REFACTORING_EXTRACT_SOURCEEXTRACTION_H 10 #define LLVM_CLANG_TOOLING_REFACTORING_EXTRACT_SOURCEEXTRACTION_H 11 12 #include "clang/Basic/LLVM.h" 13 14 namespace clang { 15 16 class LangOptions; 17 class SourceManager; 18 class SourceRange; 19 class Stmt; 20 21 namespace tooling { 22 23 /// Determines which semicolons should be inserted during extraction. 24 class ExtractionSemicolonPolicy { 25 public: isNeededInExtractedFunction()26 bool isNeededInExtractedFunction() const { 27 return IsNeededInExtractedFunction; 28 } 29 isNeededInOriginalFunction()30 bool isNeededInOriginalFunction() const { return IsNeededInOriginalFunction; } 31 32 /// Returns the semicolon insertion policy that is needed for extraction of 33 /// the given statement from the given source range. 34 static ExtractionSemicolonPolicy compute(const Stmt *S, 35 SourceRange &ExtractedRange, 36 const SourceManager &SM, 37 const LangOptions &LangOpts); 38 39 private: ExtractionSemicolonPolicy(bool IsNeededInExtractedFunction,bool IsNeededInOriginalFunction)40 ExtractionSemicolonPolicy(bool IsNeededInExtractedFunction, 41 bool IsNeededInOriginalFunction) 42 : IsNeededInExtractedFunction(IsNeededInExtractedFunction), 43 IsNeededInOriginalFunction(IsNeededInOriginalFunction) {} 44 bool IsNeededInExtractedFunction; 45 bool IsNeededInOriginalFunction; 46 }; 47 48 } // end namespace tooling 49 } // end namespace clang 50 51 #endif // LLVM_CLANG_TOOLING_REFACTORING_EXTRACT_SOURCEEXTRACTION_H 52