003 File Manager
Current Path:
/usr/src/contrib/llvm-project/clang/lib/ARCMigrate
usr
/
src
/
contrib
/
llvm-project
/
clang
/
lib
/
ARCMigrate
/
📁
..
📄
ARCMT.cpp
(21.93 KB)
📄
ARCMTActions.cpp
(2.44 KB)
📄
FileRemapper.cpp
(8.26 KB)
📄
Internals.h
(5.47 KB)
📄
ObjCMT.cpp
(81.85 KB)
📄
PlistReporter.cpp
(3.64 KB)
📄
TransAPIUses.cpp
(3.49 KB)
📄
TransARCAssign.cpp
(2.25 KB)
📄
TransAutoreleasePool.cpp
(14.26 KB)
📄
TransBlockObjCVariable.cpp
(4.55 KB)
📄
TransEmptyStatementsAndDealloc.cpp
(7 KB)
📄
TransGCAttrs.cpp
(11.29 KB)
📄
TransGCCalls.cpp
(2.54 KB)
📄
TransProperties.cpp
(12.35 KB)
📄
TransProtectedScope.cpp
(6.02 KB)
📄
TransRetainReleaseDealloc.cpp
(13.65 KB)
📄
TransUnbridgedCasts.cpp
(15.85 KB)
📄
TransUnusedInitDelegate.cpp
(2.2 KB)
📄
TransZeroOutPropsInDealloc.cpp
(6.71 KB)
📄
TransformActions.cpp
(23.07 KB)
📄
Transforms.cpp
(17.72 KB)
📄
Transforms.h
(6.72 KB)
Editing: Internals.h
//===-- Internals.h - Implementation Details---------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLVM_CLANG_LIB_ARCMIGRATE_INTERNALS_H #define LLVM_CLANG_LIB_ARCMIGRATE_INTERNALS_H #include "clang/Basic/LangOptions.h" #include "clang/Basic/Diagnostic.h" #include "clang/Frontend/MigratorOptions.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/Optional.h" #include <list> namespace clang { class ASTContext; class Sema; class Stmt; namespace arcmt { class CapturedDiagList { typedef std::list<StoredDiagnostic> ListTy; ListTy List; public: void push_back(const StoredDiagnostic &diag) { List.push_back(diag); } bool clearDiagnostic(ArrayRef<unsigned> IDs, SourceRange range); bool hasDiagnostic(ArrayRef<unsigned> IDs, SourceRange range) const; void reportDiagnostics(DiagnosticsEngine &diags) const; bool hasErrors() const; typedef ListTy::const_iterator iterator; iterator begin() const { return List.begin(); } iterator end() const { return List.end(); } }; void writeARCDiagsToPlist(const std::string &outPath, ArrayRef<StoredDiagnostic> diags, SourceManager &SM, const LangOptions &LangOpts); class TransformActions { DiagnosticsEngine &Diags; CapturedDiagList &CapturedDiags; void *Impl; // TransformActionsImpl. public: TransformActions(DiagnosticsEngine &diag, CapturedDiagList &capturedDiags, ASTContext &ctx, Preprocessor &PP); ~TransformActions(); void startTransaction(); bool commitTransaction(); void abortTransaction(); void insert(SourceLocation loc, StringRef text); void insertAfterToken(SourceLocation loc, StringRef text); void remove(SourceRange range); void removeStmt(Stmt *S); void replace(SourceRange range, StringRef text); void replace(SourceRange range, SourceRange replacementRange); void replaceStmt(Stmt *S, StringRef text); void replaceText(SourceLocation loc, StringRef text, StringRef replacementText); void increaseIndentation(SourceRange range, SourceLocation parentIndent); bool clearDiagnostic(ArrayRef<unsigned> IDs, SourceRange range); bool clearAllDiagnostics(SourceRange range) { return clearDiagnostic(None, range); } bool clearDiagnostic(unsigned ID1, unsigned ID2, SourceRange range) { unsigned IDs[] = { ID1, ID2 }; return clearDiagnostic(IDs, range); } bool clearDiagnostic(unsigned ID1, unsigned ID2, unsigned ID3, SourceRange range) { unsigned IDs[] = { ID1, ID2, ID3 }; return clearDiagnostic(IDs, range); } bool hasDiagnostic(unsigned ID, SourceRange range) { return CapturedDiags.hasDiagnostic(ID, range); } bool hasDiagnostic(unsigned ID1, unsigned ID2, SourceRange range) { unsigned IDs[] = { ID1, ID2 }; return CapturedDiags.hasDiagnostic(IDs, range); } DiagnosticBuilder report(SourceLocation loc, unsigned diagId, SourceRange range = SourceRange()); void reportError(StringRef error, SourceLocation loc, SourceRange range = SourceRange()); void reportWarning(StringRef warning, SourceLocation loc, SourceRange range = SourceRange()); void reportNote(StringRef note, SourceLocation loc, SourceRange range = SourceRange()); bool hasReportedErrors() const { return Diags.hasUnrecoverableErrorOccurred(); } class RewriteReceiver { public: virtual ~RewriteReceiver(); virtual void insert(SourceLocation loc, StringRef text) = 0; virtual void remove(CharSourceRange range) = 0; virtual void increaseIndentation(CharSourceRange range, SourceLocation parentIndent) = 0; }; void applyRewrites(RewriteReceiver &receiver); }; class Transaction { TransformActions &TA; bool Aborted; public: Transaction(TransformActions &TA) : TA(TA), Aborted(false) { TA.startTransaction(); } ~Transaction() { if (!isAborted()) TA.commitTransaction(); } void abort() { TA.abortTransaction(); Aborted = true; } bool isAborted() const { return Aborted; } }; class MigrationPass { public: ASTContext &Ctx; LangOptions::GCMode OrigGCMode; MigratorOptions MigOptions; Sema &SemaRef; TransformActions &TA; const CapturedDiagList &CapturedDiags; std::vector<SourceLocation> &ARCMTMacroLocs; Optional<bool> EnableCFBridgeFns; MigrationPass(ASTContext &Ctx, LangOptions::GCMode OrigGCMode, Sema &sema, TransformActions &TA, const CapturedDiagList &capturedDiags, std::vector<SourceLocation> &ARCMTMacroLocs) : Ctx(Ctx), OrigGCMode(OrigGCMode), MigOptions(), SemaRef(sema), TA(TA), CapturedDiags(capturedDiags), ARCMTMacroLocs(ARCMTMacroLocs) { } const CapturedDiagList &getDiags() const { return CapturedDiags; } bool isGCMigration() const { return OrigGCMode != LangOptions::NonGC; } bool noFinalizeRemoval() const { return MigOptions.NoFinalizeRemoval; } void setNoFinalizeRemoval(bool val) {MigOptions.NoFinalizeRemoval = val; } bool CFBridgingFunctionsDefined(); }; static inline StringRef getARCMTMacroName() { return "__IMPL_ARCMT_REMOVED_EXPR__"; } } // end namespace arcmt } // end namespace clang #endif
Upload File
Create Folder