]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm-project/clang/include/clang/Tooling/Refactoring/Extract/SourceExtraction.h
Unbreak DRM KMS build by adding the needed compatibility field in the LinuxKPI.
[FreeBSD/FreeBSD.git] / contrib / llvm-project / clang / include / clang / Tooling / Refactoring / Extract / SourceExtraction.h
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_SOURCE_EXTRACTION_H
10 #define LLVM_CLANG_TOOLING_REFACTORING_EXTRACT_SOURCE_EXTRACTION_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:
26   bool isNeededInExtractedFunction() const {
27     return IsNeededInExtractedFunction;
28   }
29
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:
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_SOURCE_EXTRACTION_H