130660a898545416f0fea2d717f16f75640001e38Ted Kremenek//===--- Rewriters.h - Rewritings     ---------------------------*- C++ -*-===//
230660a898545416f0fea2d717f16f75640001e38Ted Kremenek//
330660a898545416f0fea2d717f16f75640001e38Ted Kremenek//                     The LLVM Compiler Infrastructure
430660a898545416f0fea2d717f16f75640001e38Ted Kremenek//
530660a898545416f0fea2d717f16f75640001e38Ted Kremenek// This file is distributed under the University of Illinois Open Source
630660a898545416f0fea2d717f16f75640001e38Ted Kremenek// License. See LICENSE.TXT for details.
730660a898545416f0fea2d717f16f75640001e38Ted Kremenek//
830660a898545416f0fea2d717f16f75640001e38Ted Kremenek//===----------------------------------------------------------------------===//
930660a898545416f0fea2d717f16f75640001e38Ted Kremenek
1030660a898545416f0fea2d717f16f75640001e38Ted Kremenek#ifndef LLVM_CLANG_EDIT_REWRITERS_H
1130660a898545416f0fea2d717f16f75640001e38Ted Kremenek#define LLVM_CLANG_EDIT_REWRITERS_H
128c355831ac3c9e8c12b23ca69b7587dcbd0439efFariborz Jahanian#include "llvm/ADT/SmallVector.h"
1330660a898545416f0fea2d717f16f75640001e38Ted Kremenek
1430660a898545416f0fea2d717f16f75640001e38Ted Kremeneknamespace clang {
1530660a898545416f0fea2d717f16f75640001e38Ted Kremenek  class ObjCMessageExpr;
16afcb16f9cff8d5ccd57a6386d65ddc055368d0bcFariborz Jahanian  class ObjCMethodDecl;
178c355831ac3c9e8c12b23ca69b7587dcbd0439efFariborz Jahanian  class ObjCInterfaceDecl;
188c355831ac3c9e8c12b23ca69b7587dcbd0439efFariborz Jahanian  class ObjCProtocolDecl;
1930660a898545416f0fea2d717f16f75640001e38Ted Kremenek  class NSAPI;
20bbbb0fe4f466d3163fcbf0a64ebf0f5868833efbFariborz Jahanian  class EnumDecl;
21bbbb0fe4f466d3163fcbf0a64ebf0f5868833efbFariborz Jahanian  class TypedefDecl;
22a44b97004298a4eb7c270009ea4cb12aad49c543Argyrios Kyrtzidis  class ParentMap;
2330660a898545416f0fea2d717f16f75640001e38Ted Kremenek
2430660a898545416f0fea2d717f16f75640001e38Ted Kremeneknamespace edit {
2530660a898545416f0fea2d717f16f75640001e38Ted Kremenek  class Commit;
2630660a898545416f0fea2d717f16f75640001e38Ted Kremenek
2730660a898545416f0fea2d717f16f75640001e38Ted Kremenekbool rewriteObjCRedundantCallWithLiteral(const ObjCMessageExpr *Msg,
2830660a898545416f0fea2d717f16f75640001e38Ted Kremenek                                         const NSAPI &NS, Commit &commit);
2930660a898545416f0fea2d717f16f75640001e38Ted Kremenek
3030660a898545416f0fea2d717f16f75640001e38Ted Kremenekbool rewriteToObjCLiteralSyntax(const ObjCMessageExpr *Msg,
31a44b97004298a4eb7c270009ea4cb12aad49c543Argyrios Kyrtzidis                                const NSAPI &NS, Commit &commit,
32a44b97004298a4eb7c270009ea4cb12aad49c543Argyrios Kyrtzidis                                const ParentMap *PMap);
33afcb16f9cff8d5ccd57a6386d65ddc055368d0bcFariborz Jahanian
3430660a898545416f0fea2d717f16f75640001e38Ted Kremenekbool rewriteToObjCSubscriptSyntax(const ObjCMessageExpr *Msg,
3530660a898545416f0fea2d717f16f75640001e38Ted Kremenek                                  const NSAPI &NS, Commit &commit);
3630660a898545416f0fea2d717f16f75640001e38Ted Kremenek
3730660a898545416f0fea2d717f16f75640001e38Ted Kremenek}
3830660a898545416f0fea2d717f16f75640001e38Ted Kremenek
3930660a898545416f0fea2d717f16f75640001e38Ted Kremenek}  // end namespace clang
4030660a898545416f0fea2d717f16f75640001e38Ted Kremenek
4130660a898545416f0fea2d717f16f75640001e38Ted Kremenek#endif
42