diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2018-07-28 11:06:01 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2018-07-28 11:06:01 +0000 |
commit | 486754660bb926339aefcf012a3f848592babb8b (patch) | |
tree | ecdbc446c9876f4f120f701c243373cd3cb43db3 /include/clang/Rewrite/Core | |
parent | 55e6d896ad333f07bb3b1ba487df214fc268a4ab (diff) |
Notes
Diffstat (limited to 'include/clang/Rewrite/Core')
-rw-r--r-- | include/clang/Rewrite/Core/DeltaTree.h | 13 | ||||
-rw-r--r-- | include/clang/Rewrite/Core/HTMLRewrite.h | 3 | ||||
-rw-r--r-- | include/clang/Rewrite/Core/RewriteBuffer.h | 19 | ||||
-rw-r--r-- | include/clang/Rewrite/Core/RewriteRope.h | 55 | ||||
-rw-r--r-- | include/clang/Rewrite/Core/Rewriter.h | 56 | ||||
-rw-r--r-- | include/clang/Rewrite/Core/TokenRewriter.h | 28 |
6 files changed, 91 insertions, 83 deletions
diff --git a/include/clang/Rewrite/Core/DeltaTree.h b/include/clang/Rewrite/Core/DeltaTree.h index fbffb38e377dd..f798e9fc41eb3 100644 --- a/include/clang/Rewrite/Core/DeltaTree.h +++ b/include/clang/Rewrite/Core/DeltaTree.h @@ -1,4 +1,4 @@ -//===--- DeltaTree.h - B-Tree for Rewrite Delta tracking --------*- C++ -*-===// +//===- DeltaTree.h - B-Tree for Rewrite Delta tracking ----------*- C++ -*-===// // // The LLVM Compiler Infrastructure // @@ -14,8 +14,6 @@ #ifndef LLVM_CLANG_REWRITE_CORE_DELTATREE_H #define LLVM_CLANG_REWRITE_CORE_DELTATREE_H -#include "llvm/Support/Compiler.h" - namespace clang { /// DeltaTree - a multiway search tree (BTree) structure with some fancy @@ -27,12 +25,14 @@ namespace clang { /// as well, without traversing the whole tree. class DeltaTree { void *Root; // "DeltaTreeNode *" - void operator=(const DeltaTree &) = delete; + public: DeltaTree(); // Note: Currently we only support copying when the RHS is empty. DeltaTree(const DeltaTree &RHS); + + DeltaTree &operator=(const DeltaTree &) = delete; ~DeltaTree(); /// getDeltaAt - Return the accumulated delta at the specified file offset. @@ -45,6 +45,7 @@ namespace clang { /// into the current DeltaTree at offset FileIndex. void AddDelta(unsigned FileIndex, int Delta); }; -} // end namespace clang -#endif +} // namespace clang + +#endif // LLVM_CLANG_REWRITE_CORE_DELTATREE_H diff --git a/include/clang/Rewrite/Core/HTMLRewrite.h b/include/clang/Rewrite/Core/HTMLRewrite.h index 1fd7c7a3f84e2..0f1f490d8305a 100644 --- a/include/clang/Rewrite/Core/HTMLRewrite.h +++ b/include/clang/Rewrite/Core/HTMLRewrite.h @@ -31,7 +31,8 @@ namespace html { /// start/end tags are placed at the start/end of each line if the range is /// multiline. void HighlightRange(Rewriter &R, SourceLocation B, SourceLocation E, - const char *StartTag, const char *EndTag); + const char *StartTag, const char *EndTag, + bool IsTokenRange = true); /// HighlightRange - Highlight a range in the source code with the specified /// start/end tags. The Start/end of the range must be in the same file. diff --git a/include/clang/Rewrite/Core/RewriteBuffer.h b/include/clang/Rewrite/Core/RewriteBuffer.h index d69c69b81e482..c618298f5e82e 100644 --- a/include/clang/Rewrite/Core/RewriteBuffer.h +++ b/include/clang/Rewrite/Core/RewriteBuffer.h @@ -1,4 +1,4 @@ -//===--- RewriteBuffer.h - Buffer rewriting interface -----------*- C++ -*-===// +//===- RewriteBuffer.h - Buffer rewriting interface -------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // @@ -16,7 +16,6 @@ #include "llvm/ADT/StringRef.h" namespace clang { - class Rewriter; /// RewriteBuffer - As code is rewritten, SourceBuffer's from the original /// input with modifications get a new RewriteBuffer associated with them. The @@ -26,12 +25,16 @@ namespace clang { /// locations after the insertion point have to be mapped. class RewriteBuffer { friend class Rewriter; + /// Deltas - Keep track of all the deltas in the source code due to insertions /// and deletions. DeltaTree Deltas; + RewriteRope Buffer; + public: - typedef RewriteRope::const_iterator iterator; + using iterator = RewriteRope::const_iterator; + iterator begin() const { return Buffer.begin(); } iterator end() const { return Buffer.end(); } unsigned size() const { return Buffer.size(); } @@ -45,7 +48,7 @@ public: Initialize(Input.begin(), Input.end()); } - /// \brief Write to \p Stream the result of applying all changes to the + /// Write to \p Stream the result of applying all changes to the /// original buffer. /// Note that it isn't safe to use this function to overwrite memory mapped /// files in-place (PR17960). Consider using a higher-level utility such as @@ -61,7 +64,6 @@ public: /// InsertText - Insert some text at the specified point, where the offset in /// the buffer is specified relative to the original SourceBuffer. The /// text is inserted after the specified location. - /// void InsertText(unsigned OrigOffset, StringRef Str, bool InsertAfter = true); @@ -87,8 +89,7 @@ public: void ReplaceText(unsigned OrigOffset, unsigned OrigLength, StringRef NewStr); -private: // Methods only usable by Rewriter. - +private: /// getMappedOffset - Given an offset into the original SourceBuffer that this /// RewriteBuffer is based on, map it into the offset space of the /// RewriteBuffer. If AfterInserts is true and if the OrigOffset indicates a @@ -112,6 +113,6 @@ private: // Methods only usable by Rewriter. } }; -} // end namespace clang +} // namespace clang -#endif +#endif // LLVM_CLANG_REWRITE_CORE_REWRITEBUFFER_H diff --git a/include/clang/Rewrite/Core/RewriteRope.h b/include/clang/Rewrite/Core/RewriteRope.h index 50025544854a6..2a0e0a4a639b1 100644 --- a/include/clang/Rewrite/Core/RewriteRope.h +++ b/include/clang/Rewrite/Core/RewriteRope.h @@ -1,4 +1,4 @@ -//===--- RewriteRope.h - Rope specialized for rewriter ----------*- C++ -*-===// +//===- RewriteRope.h - Rope specialized for rewriter ------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // @@ -16,13 +16,13 @@ #include "llvm/ADT/IntrusiveRefCntPtr.h" #include "llvm/ADT/StringRef.h" -#include "llvm/Support/Compiler.h" #include <cassert> #include <cstddef> -#include <cstring> #include <iterator> +#include <utility> namespace clang { + //===--------------------------------------------------------------------===// // RopeRefCountString Class //===--------------------------------------------------------------------===// @@ -58,11 +58,10 @@ namespace clang { /// different offsets) which is a nice constant time operation. struct RopePiece { llvm::IntrusiveRefCntPtr<RopeRefCountString> StrData; - unsigned StartOffs; - unsigned EndOffs; - - RopePiece() : StrData(nullptr), StartOffs(0), EndOffs(0) {} + unsigned StartOffs = 0; + unsigned EndOffs = 0; + RopePiece() = default; RopePiece(llvm::IntrusiveRefCntPtr<RopeRefCountString> Str, unsigned Start, unsigned End) : StrData(std::move(Str)), StartOffs(Start), EndOffs(End) {} @@ -88,18 +87,18 @@ namespace clang { class RopePieceBTreeIterator : public std::iterator<std::forward_iterator_tag, const char, ptrdiff_t> { /// CurNode - The current B+Tree node that we are inspecting. - const void /*RopePieceBTreeLeaf*/ *CurNode; + const void /*RopePieceBTreeLeaf*/ *CurNode = nullptr; + /// CurPiece - The current RopePiece in the B+Tree node that we're /// inspecting. - const RopePiece *CurPiece; + const RopePiece *CurPiece = nullptr; + /// CurChar - The current byte in the RopePiece we are pointing to. - unsigned CurChar; + unsigned CurChar = 0; + public: - // begin iterator. + RopePieceBTreeIterator() = default; RopePieceBTreeIterator(const void /*RopePieceBTreeNode*/ *N); - // end iterator - RopePieceBTreeIterator() - : CurNode(nullptr), CurPiece(nullptr), CurChar(0) {} char operator*() const { return (*CurPiece)[CurChar]; @@ -119,7 +118,8 @@ namespace clang { MoveToNextPiece(); return *this; } - inline RopePieceBTreeIterator operator++(int) { // Postincrement + + RopePieceBTreeIterator operator++(int) { // Postincrement RopePieceBTreeIterator tmp = *this; ++*this; return tmp; } @@ -136,13 +136,15 @@ namespace clang { class RopePieceBTree { void /*RopePieceBTreeNode*/ *Root; - void operator=(const RopePieceBTree &) = delete; + public: RopePieceBTree(); RopePieceBTree(const RopePieceBTree &RHS); + RopePieceBTree &operator=(const RopePieceBTree &) = delete; ~RopePieceBTree(); - typedef RopePieceBTreeIterator iterator; + using iterator = RopePieceBTreeIterator; + iterator begin() const { return iterator(Root); } iterator end() const { return iterator(); } unsigned size() const; @@ -168,19 +170,18 @@ class RewriteRope { /// We allocate space for string data out of a buffer of size AllocChunkSize. /// This keeps track of how much space is left. llvm::IntrusiveRefCntPtr<RopeRefCountString> AllocBuffer; - unsigned AllocOffs; enum { AllocChunkSize = 4080 }; + unsigned AllocOffs = AllocChunkSize; public: - RewriteRope() : AllocBuffer(nullptr), AllocOffs(AllocChunkSize) {} - RewriteRope(const RewriteRope &RHS) - : Chunks(RHS.Chunks), AllocBuffer(nullptr), AllocOffs(AllocChunkSize) { - } + RewriteRope() = default; + RewriteRope(const RewriteRope &RHS) : Chunks(RHS.Chunks) {} + + using iterator = RopePieceBTree::iterator; + using const_iterator = RopePieceBTree::iterator; - typedef RopePieceBTree::iterator iterator; - typedef RopePieceBTree::iterator const_iterator; iterator begin() const { return Chunks.begin(); } - iterator end() const { return Chunks.end(); } + iterator end() const { return Chunks.end(); } unsigned size() const { return Chunks.size(); } void clear() { @@ -209,6 +210,6 @@ private: RopePiece MakeRopeString(const char *Start, const char *End); }; -} // end namespace clang +} // namespace clang -#endif +#endif // LLVM_CLANG_REWRITE_CORE_REWRITEROPE_H diff --git a/include/clang/Rewrite/Core/Rewriter.h b/include/clang/Rewrite/Core/Rewriter.h index 800372ea557f6..107968a9fb436 100644 --- a/include/clang/Rewrite/Core/Rewriter.h +++ b/include/clang/Rewrite/Core/Rewriter.h @@ -1,4 +1,4 @@ -//===--- Rewriter.h - Code rewriting interface ------------------*- C++ -*-===// +//===- Rewriter.h - Code rewriting interface --------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // @@ -15,52 +15,55 @@ #ifndef LLVM_CLANG_REWRITE_CORE_REWRITER_H #define LLVM_CLANG_REWRITE_CORE_REWRITER_H +#include "clang/Basic/LLVM.h" #include "clang/Basic/SourceLocation.h" #include "clang/Rewrite/Core/RewriteBuffer.h" -#include <cstring> +#include "llvm/ADT/StringRef.h" #include <map> #include <string> namespace clang { - class LangOptions; - class SourceManager; + +class LangOptions; +class SourceManager; /// Rewriter - This is the main interface to the rewrite buffers. Its primary /// job is to dispatch high-level requests to the low-level RewriteBuffers that /// are involved. class Rewriter { - SourceManager *SourceMgr; - const LangOptions *LangOpts; + SourceManager *SourceMgr = nullptr; + const LangOptions *LangOpts = nullptr; std::map<FileID, RewriteBuffer> RewriteBuffers; + public: struct RewriteOptions { - /// \brief Given a source range, true to include previous inserts at the + /// Given a source range, true to include previous inserts at the /// beginning of the range as part of the range itself (true by default). - bool IncludeInsertsAtBeginOfRange; - /// \brief Given a source range, true to include previous inserts at the + bool IncludeInsertsAtBeginOfRange = true; + + /// Given a source range, true to include previous inserts at the /// end of the range as part of the range itself (true by default). - bool IncludeInsertsAtEndOfRange; - /// \brief If true and removing some text leaves a blank line + bool IncludeInsertsAtEndOfRange = true; + + /// If true and removing some text leaves a blank line /// also remove the empty line (false by default). - bool RemoveLineIfEmpty; + bool RemoveLineIfEmpty = false; - RewriteOptions() - : IncludeInsertsAtBeginOfRange(true), - IncludeInsertsAtEndOfRange(true), - RemoveLineIfEmpty(false) { } + RewriteOptions() {} }; - typedef std::map<FileID, RewriteBuffer>::iterator buffer_iterator; - typedef std::map<FileID, RewriteBuffer>::const_iterator const_buffer_iterator; + using buffer_iterator = std::map<FileID, RewriteBuffer>::iterator; + using const_buffer_iterator = std::map<FileID, RewriteBuffer>::const_iterator; + explicit Rewriter() = default; explicit Rewriter(SourceManager &SM, const LangOptions &LO) - : SourceMgr(&SM), LangOpts(&LO) {} - explicit Rewriter() : SourceMgr(nullptr), LangOpts(nullptr) {} + : SourceMgr(&SM), LangOpts(&LO) {} void setSourceMgr(SourceManager &SM, const LangOptions &LO) { SourceMgr = &SM; LangOpts = &LO; } + SourceManager &getSourceMgr() const { return *SourceMgr; } const LangOptions &getLangOpts() const { return *LangOpts; } @@ -82,7 +85,6 @@ public: /// in different buffers, this returns an empty string. /// /// Note that this method is not particularly efficient. - /// std::string getRewrittenText(SourceRange Range) const; /// InsertText - Insert the specified string at the specified location in the @@ -103,7 +105,7 @@ public: return InsertText(Loc, Str); } - /// \brief Insert the specified string after the token in the + /// Insert the specified string after the token in the /// specified location. bool InsertTextAfterToken(SourceLocation Loc, StringRef Str); @@ -120,13 +122,13 @@ public: bool RemoveText(SourceLocation Start, unsigned Length, RewriteOptions opts = RewriteOptions()); - /// \brief Remove the specified text region. + /// Remove the specified text region. bool RemoveText(CharSourceRange range, RewriteOptions opts = RewriteOptions()) { return RemoveText(range.getBegin(), getRangeSize(range, opts), opts); } - /// \brief Remove the specified text region. + /// Remove the specified text region. bool RemoveText(SourceRange range, RewriteOptions opts = RewriteOptions()) { return RemoveText(range.getBegin(), getRangeSize(range, opts), opts); } @@ -149,7 +151,7 @@ public: /// operation. bool ReplaceText(SourceRange range, SourceRange replacementRange); - /// \brief Increase indentation for the lines between the given source range. + /// Increase indentation for the lines between the given source range. /// To determine what the indentation should be, 'parentIndent' is used /// that should be at a source location with an indentation one degree /// lower than the given range. @@ -190,6 +192,6 @@ private: unsigned getLocationOffsetAndFileID(SourceLocation Loc, FileID &FID) const; }; -} // end namespace clang +} // namespace clang -#endif +#endif // LLVM_CLANG_REWRITE_CORE_REWRITER_H diff --git a/include/clang/Rewrite/Core/TokenRewriter.h b/include/clang/Rewrite/Core/TokenRewriter.h index 0f71e81c313e7..ab2c2c8b0adb2 100644 --- a/include/clang/Rewrite/Core/TokenRewriter.h +++ b/include/clang/Rewrite/Core/TokenRewriter.h @@ -1,4 +1,4 @@ -//===--- TokenRewriter.h - Token-based Rewriter -----------------*- C++ -*-===// +//===- TokenRewriter.h - Token-based Rewriter -------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // @@ -17,13 +17,16 @@ #include "clang/Basic/SourceLocation.h" #include "clang/Lex/Token.h" +#include <cassert> #include <list> #include <map> #include <memory> namespace clang { - class LangOptions; - class ScratchBuffer; + +class LangOptions; +class ScratchBuffer; +class SourceManager; class TokenRewriter { /// TokenList - This is the list of raw tokens that make up this file. Each @@ -31,7 +34,7 @@ namespace clang { std::list<Token> TokenList; /// TokenRefTy - This is the type used to refer to a token in the TokenList. - typedef std::list<Token>::iterator TokenRefTy; + using TokenRefTy = std::list<Token>::iterator; /// TokenAtLoc - This map indicates which token exists at a specific /// SourceLocation. Since each token has a unique SourceLocation, this is a @@ -40,23 +43,24 @@ namespace clang { std::map<SourceLocation, TokenRefTy> TokenAtLoc; /// ScratchBuf - This is the buffer that we create scratch tokens from. - /// std::unique_ptr<ScratchBuffer> ScratchBuf; - TokenRewriter(const TokenRewriter &) = delete; - void operator=(const TokenRewriter &) = delete; public: /// TokenRewriter - This creates a TokenRewriter for the file with the /// specified FileID. TokenRewriter(FileID FID, SourceManager &SM, const LangOptions &LO); + + TokenRewriter(const TokenRewriter &) = delete; + TokenRewriter &operator=(const TokenRewriter &) = delete; ~TokenRewriter(); - typedef std::list<Token>::const_iterator token_iterator; + using token_iterator = std::list<Token>::const_iterator; + token_iterator token_begin() const { return TokenList.begin(); } token_iterator token_end() const { return TokenList.end(); } - token_iterator AddTokenBefore(token_iterator I, const char *Val); + token_iterator AddTokenAfter(token_iterator I, const char *Val) { assert(I != token_end() && "Cannot insert after token_end()!"); return AddTokenBefore(++I, Val); @@ -72,8 +76,6 @@ namespace clang { TokenRefTy AddToken(const Token &T, TokenRefTy Where); }; +} // namespace clang - -} // end namespace clang - -#endif +#endif // LLVM_CLANG_REWRITE_CORE_TOKENREWRITER_H |