273fd63d27f875196ed8dad8b454b54fdcb4b0c2
[lldb.git] / clang-tools-extra / loop-convert / LoopMatchers.h
1 //===-- loop-convert/LoopMatchers.h - Matchers for for loops ----*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file contains declarations of the matchers for use in migrating
11 // C++ for loops. The matchers are responsible for checking the general shape of
12 // the for loop, namely the init, condition, and increment portions.
13 // Further analysis will be needed to confirm that the loop is in fact
14 // convertible in the matcher callback.
15 //
16 //===----------------------------------------------------------------------===//
17 #ifndef _LLVM_TOOLS_CLANG_TOOLS_LOOP_CONVERT_LOOP_MATCHERS_H_
18 #define _LLVM_TOOLS_CLANG_TOOLS_LOOP_CONVERT_LOOP_MATCHERS_H_
19
20 #include "clang/ASTMatchers/ASTMatchers.h"
21
22 namespace clang {
23 namespace loop_migrate {
24
25 // Constants used for matcher name bindings
26 extern const char LoopName[];
27 extern const char ConditionBoundName[];
28 extern const char ConditionVarName[];
29 extern const char ConditionEndVarName[];
30 extern const char IncrementVarName[];
31 extern const char InitVarName[];
32 extern const char EndExprName[];
33 extern const char EndCallName[];
34 extern const char EndVarName[];
35
36 ast_matchers::StatementMatcher makeArrayLoopMatcher();
37 ast_matchers::StatementMatcher makeIteratorLoopMatcher();
38 ast_matchers::StatementMatcher makePseudoArrayLoopMatcher();
39 } //namespace loop_migrate
40 } //namespace clang
41
42 #endif //_LLVM_TOOLS_CLANG_TOOLS_LOOP_CONVERT_LOOP_MATCHERS_H_