Index: tools/clang/BindMigrate/Transform.h |
diff --git a/tools/clang/BindMigrate/Transform.h b/tools/clang/BindMigrate/Transform.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..6dbe1c851883610c2bf1cbdd97ccf9f1da81195f |
--- /dev/null |
+++ b/tools/clang/BindMigrate/Transform.h |
@@ -0,0 +1,70 @@ |
+// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include <set> |
+#include <string> |
+#include <vector> |
+ |
+#include "clang/AST/RecursiveASTVisitor.h" |
+ |
+#include "Util.h" |
+ |
+#ifndef TOOLS_CLANG_BINDMIGRATE_TRANSFORM_H_ |
+#define TOOLS_CLANG_BINDMIGRATE_TRANSFORM_H_ |
+ |
+namespace clang { |
+ |
+class Stmt; |
+class Decl; |
+class Type; |
+ |
+class Transform { |
+ public: |
+ typedef std::vector<Transform*> TransformList; |
+ |
+ virtual bool WouldTransformStmt(Stmt* statement) { return false; } |
+ virtual bool WouldTransformDecl(Decl* decl) { return false; } |
+ virtual bool WouldTransformType(Type* type) { return false; } |
+ |
+ virtual void TransformStmt(Stmt *statement) {} |
+ virtual void TransformDecl(Decl *decl) {} |
+ virtual void TransformType(Type* type) {} |
+}; |
+ |
+class TransformApplier : public RecursiveASTVisitor<TransformApplier> { |
+ public: |
+ // The transforms must outlive the TransformApplier; |
+ TransformApplier(const Transform::TransformList& transforms); |
+ |
+ virtual bool VisitStmt(Stmt *statement); |
+ virtual bool VisitDecl(Decl *decl); |
+ virtual bool VisitType(Type* type); |
+ |
+ private: |
+ std::vector<Transform*> transforms_; |
+}; |
+ |
+class TransformCandidatePrinter : |
+ public RecursiveASTVisitor<TransformCandidatePrinter> { |
+ public: |
+ // The transforms must outlive the TransformCandidatePrinter; |
+ TransformCandidatePrinter(const Transform::TransformList& transforms, |
+ SourceManager* source_manager); |
+ virtual ~TransformCandidatePrinter(); |
+ |
+ virtual bool VisitStmt(Stmt *statement); |
+ virtual bool VisitDecl(Decl *decl); |
+ virtual bool VisitType(Type* type); |
+ |
+ private: |
+ void AddFileForLocation(SourceLocation location); |
+ |
+ std::vector<Transform*> transforms_; |
+ SourceManager* source_manager_; |
+ std::set<std::string> filenames_; |
+}; |
+ |
+} // namespace |
+ |
+#endif // TOOLS_CLANG_BINDMIGRATE_TRANSFORM_H_ |