annotate clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.h @ 204:e348f3e5c8b2

ReadFromString worked.
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 05 Jun 2021 15:35:13 +0900
parents 0572611fdcc8
children 2e18cbf3894f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 //===--- LoopConvertCheck.h - clang-tidy-------------------------*- C++ -*-===//
anatofuz
parents:
diff changeset
2 //
anatofuz
parents:
diff changeset
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
anatofuz
parents:
diff changeset
4 // See https://llvm.org/LICENSE.txt for license information.
anatofuz
parents:
diff changeset
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
anatofuz
parents:
diff changeset
6 //
anatofuz
parents:
diff changeset
7 //===----------------------------------------------------------------------===//
anatofuz
parents:
diff changeset
8
anatofuz
parents:
diff changeset
9 #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_LOOP_CONVERT_H
anatofuz
parents:
diff changeset
10 #define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_LOOP_CONVERT_H
anatofuz
parents:
diff changeset
11
anatofuz
parents:
diff changeset
12 #include "../ClangTidyCheck.h"
anatofuz
parents:
diff changeset
13 #include "LoopConvertUtils.h"
anatofuz
parents:
diff changeset
14
anatofuz
parents:
diff changeset
15 namespace clang {
anatofuz
parents:
diff changeset
16 namespace tidy {
anatofuz
parents:
diff changeset
17 namespace modernize {
anatofuz
parents:
diff changeset
18
anatofuz
parents:
diff changeset
19 class LoopConvertCheck : public ClangTidyCheck {
anatofuz
parents:
diff changeset
20 public:
anatofuz
parents:
diff changeset
21 LoopConvertCheck(StringRef Name, ClangTidyContext *Context);
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
22 bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
23 return LangOpts.CPlusPlus;
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
24 }
150
anatofuz
parents:
diff changeset
25 void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
anatofuz
parents:
diff changeset
26 void registerMatchers(ast_matchers::MatchFinder *Finder) override;
anatofuz
parents:
diff changeset
27 void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
anatofuz
parents:
diff changeset
28
anatofuz
parents:
diff changeset
29 private:
anatofuz
parents:
diff changeset
30 struct RangeDescriptor {
anatofuz
parents:
diff changeset
31 RangeDescriptor();
anatofuz
parents:
diff changeset
32 bool ContainerNeedsDereference;
anatofuz
parents:
diff changeset
33 bool DerefByConstRef;
anatofuz
parents:
diff changeset
34 bool DerefByValue;
anatofuz
parents:
diff changeset
35 std::string ContainerString;
anatofuz
parents:
diff changeset
36 QualType ElemType;
anatofuz
parents:
diff changeset
37 };
anatofuz
parents:
diff changeset
38
anatofuz
parents:
diff changeset
39 void getAliasRange(SourceManager &SM, SourceRange &DeclRange);
anatofuz
parents:
diff changeset
40
anatofuz
parents:
diff changeset
41 void doConversion(ASTContext *Context, const VarDecl *IndexVar,
anatofuz
parents:
diff changeset
42 const ValueDecl *MaybeContainer, const UsageResult &Usages,
anatofuz
parents:
diff changeset
43 const DeclStmt *AliasDecl, bool AliasUseRequired,
anatofuz
parents:
diff changeset
44 bool AliasFromForInit, const ForStmt *Loop,
anatofuz
parents:
diff changeset
45 RangeDescriptor Descriptor);
anatofuz
parents:
diff changeset
46
anatofuz
parents:
diff changeset
47 StringRef getContainerString(ASTContext *Context, const ForStmt *Loop,
anatofuz
parents:
diff changeset
48 const Expr *ContainerExpr);
anatofuz
parents:
diff changeset
49
anatofuz
parents:
diff changeset
50 void getArrayLoopQualifiers(ASTContext *Context,
anatofuz
parents:
diff changeset
51 const ast_matchers::BoundNodes &Nodes,
anatofuz
parents:
diff changeset
52 const Expr *ContainerExpr,
anatofuz
parents:
diff changeset
53 const UsageResult &Usages,
anatofuz
parents:
diff changeset
54 RangeDescriptor &Descriptor);
anatofuz
parents:
diff changeset
55
anatofuz
parents:
diff changeset
56 void getIteratorLoopQualifiers(ASTContext *Context,
anatofuz
parents:
diff changeset
57 const ast_matchers::BoundNodes &Nodes,
anatofuz
parents:
diff changeset
58 RangeDescriptor &Descriptor);
anatofuz
parents:
diff changeset
59
anatofuz
parents:
diff changeset
60 void determineRangeDescriptor(ASTContext *Context,
anatofuz
parents:
diff changeset
61 const ast_matchers::BoundNodes &Nodes,
anatofuz
parents:
diff changeset
62 const ForStmt *Loop, LoopFixerKind FixerKind,
anatofuz
parents:
diff changeset
63 const Expr *ContainerExpr,
anatofuz
parents:
diff changeset
64 const UsageResult &Usages,
anatofuz
parents:
diff changeset
65 RangeDescriptor &Descriptor);
anatofuz
parents:
diff changeset
66
anatofuz
parents:
diff changeset
67 bool isConvertible(ASTContext *Context, const ast_matchers::BoundNodes &Nodes,
anatofuz
parents:
diff changeset
68 const ForStmt *Loop, LoopFixerKind FixerKind);
anatofuz
parents:
diff changeset
69
anatofuz
parents:
diff changeset
70 std::unique_ptr<TUTrackingInfo> TUInfo;
anatofuz
parents:
diff changeset
71 const unsigned long long MaxCopySize;
anatofuz
parents:
diff changeset
72 const Confidence::Level MinConfidence;
anatofuz
parents:
diff changeset
73 const VariableNamer::NamingStyle NamingStyle;
anatofuz
parents:
diff changeset
74 };
anatofuz
parents:
diff changeset
75
anatofuz
parents:
diff changeset
76 } // namespace modernize
anatofuz
parents:
diff changeset
77 } // namespace tidy
anatofuz
parents:
diff changeset
78 } // namespace clang
anatofuz
parents:
diff changeset
79
anatofuz
parents:
diff changeset
80 #endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_LOOP_CONVERT_H