Author: teemperor Date: Tue Aug 14 10:12:54 2018 New Revision: 339695 URL: http://llvm.org/viewvc/llvm-project?rev=339695&view=rev Log: Remove manual byte counting from Highlighter code.
Summary: This removes the manual byte counting mechanism from the syntax highlighting code. This is no longer necessary as the Stream class now has built-in support for automatically counting the bytes that were written to it so far. The advantage of automatic byte counting via Stream is that it is less error-prone than the manual version and we need to write less boilerplate code. Reviewers: labath Reviewed By: labath Subscribers: labath, lldb-commits Differential Revision: https://reviews.llvm.org/D50676 Modified: lldb/trunk/include/lldb/Core/Highlighter.h lldb/trunk/source/Core/Highlighter.cpp lldb/trunk/source/Core/SourceManager.cpp lldb/trunk/source/Plugins/Language/ClangCommon/ClangHighlighter.cpp lldb/trunk/source/Plugins/Language/ClangCommon/ClangHighlighter.h Modified: lldb/trunk/include/lldb/Core/Highlighter.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/Highlighter.h?rev=339695&r1=339694&r2=339695&view=diff ============================================================================== --- lldb/trunk/include/lldb/Core/Highlighter.h (original) +++ lldb/trunk/include/lldb/Core/Highlighter.h Tue Aug 14 10:12:54 2018 @@ -45,9 +45,7 @@ struct HighlightStyle { /// The stream to which the result should be appended. /// \param value /// The value that we should place our strings around. - /// \return - /// The number of bytes that have been written to the given stream. - std::size_t Apply(Stream &s, llvm::StringRef value) const; + void Apply(Stream &s, llvm::StringRef value) const; /// Sets the prefix and suffix strings. /// @param prefix @@ -114,12 +112,8 @@ public: /// \param s /// The stream to which the highlighted version of the user string should /// be written. - /// \return - /// The number of bytes that have been written to the stream. - virtual std::size_t Highlight(const HighlightStyle &options, - llvm::StringRef line, - llvm::StringRef previous_lines, - Stream &s) const = 0; + virtual void Highlight(const HighlightStyle &options, llvm::StringRef line, + llvm::StringRef previous_lines, Stream &s) const = 0; /// Utility method for calling Highlight without a stream. std::string Highlight(const HighlightStyle &options, llvm::StringRef line, @@ -131,9 +125,8 @@ class NoHighlighter : public Highlighter public: llvm::StringRef GetName() const override { return "none"; } - std::size_t Highlight(const HighlightStyle &options, llvm::StringRef line, - llvm::StringRef previous_lines, - Stream &s) const override; + void Highlight(const HighlightStyle &options, llvm::StringRef line, + llvm::StringRef previous_lines, Stream &s) const override; }; /// Manages the available highlighters. Modified: lldb/trunk/source/Core/Highlighter.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/Highlighter.cpp?rev=339695&r1=339694&r2=339695&view=diff ============================================================================== --- lldb/trunk/source/Core/Highlighter.cpp (original) +++ lldb/trunk/source/Core/Highlighter.cpp Tue Aug 14 10:12:54 2018 @@ -15,11 +15,8 @@ using namespace lldb_private; -std::size_t HighlightStyle::ColorStyle::Apply(Stream &s, - llvm::StringRef value) const { +void HighlightStyle::ColorStyle::Apply(Stream &s, llvm::StringRef value) const { s << m_prefix << value << m_suffix; - // Calculate how many bytes we have written. - return m_prefix.size() + value.size() + m_suffix.size(); } void HighlightStyle::ColorStyle::Set(llvm::StringRef prefix, @@ -28,13 +25,11 @@ void HighlightStyle::ColorStyle::Set(llv m_suffix = lldb_utility::ansi::FormatAnsiTerminalCodes(suffix); } -std::size_t NoHighlighter::Highlight(const HighlightStyle &options, - llvm::StringRef line, - llvm::StringRef previous_lines, - Stream &s) const { +void NoHighlighter::Highlight(const HighlightStyle &options, + llvm::StringRef line, + llvm::StringRef previous_lines, Stream &s) const { // We just forward the input to the output and do no highlighting. s << line; - return line.size(); } static HighlightStyle::ColorStyle GetColor(const char *c) { Modified: lldb/trunk/source/Core/SourceManager.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/SourceManager.cpp?rev=339695&r1=339694&r2=339695&view=diff ============================================================================== --- lldb/trunk/source/Core/SourceManager.cpp (original) +++ lldb/trunk/source/Core/SourceManager.cpp Tue Aug 14 10:12:54 2018 @@ -533,6 +533,8 @@ size_t SourceManager::File::DisplaySourc if (!m_data_sp) return 0; + size_t bytes_written = s->GetWrittenBytes(); + std::string previous_content; HighlightStyle style = HighlightStyle::MakeVimStyle(); @@ -553,7 +555,6 @@ size_t SourceManager::File::DisplaySourc end_line_offset = m_data_sp->GetByteSize(); assert(start_line_offset <= end_line_offset); - size_t bytes_written = 0; if (start_line_offset < end_line_offset) { size_t count = end_line_offset - start_line_offset; const uint8_t *cstr = m_data_sp->GetBytes() + start_line_offset; @@ -563,8 +564,7 @@ size_t SourceManager::File::DisplaySourc auto debugger_sp = m_debugger_wp.lock(); if (should_highlight_source(debugger_sp)) { - bytes_written += - highlighter.Highlight(style, ref, previous_content, *s); + highlighter.Highlight(style, ref, previous_content, *s); displayed_line = true; // Add the new line to the previous lines. previous_content += ref.str(); @@ -586,7 +586,7 @@ size_t SourceManager::File::DisplaySourc // formatting the column (e.g. underline, inverse, etc.) // First print the part before the column to mark. - bytes_written = s->Write(cstr, column - 1); + s->Write(cstr, column - 1); // Write the pre escape sequence. const SymbolContext *sc = nullptr; @@ -599,15 +599,14 @@ size_t SourceManager::File::DisplaySourc FormatEntity::Format(*ansi_prefix_entry, *s, sc, exe_ctx, &addr, valobj, function_changed, initial_function); - // Write the marked column. - bytes_written += s->Write(cstr + column - 1, 1); + s->Write(cstr + column - 1, 1); // Write the post escape sequence. FormatEntity::Format(*ansi_suffix_entry, *s, sc, exe_ctx, &addr, valobj, function_changed, initial_function); // And finish up with the rest of the line. - bytes_written += s->Write(cstr + column, count - column); + s->Write(cstr + column, count - column); // Keep track of the fact that we just wrote the line. displayed_line = true; @@ -618,15 +617,14 @@ size_t SourceManager::File::DisplaySourc // If we didn't end up displaying the line with ANSI codes for whatever // reason, display it now sans codes. if (!displayed_line) - bytes_written = s->PutCString(ref); + s->PutCString(ref); // Ensure we get an end of line character one way or another. if (!is_newline_char(ref.back())) - bytes_written += s->EOL(); + s->EOL(); } - return bytes_written; } - return 0; + return s->GetWrittenBytes() - bytes_written; } void SourceManager::File::FindLinesMatchingRegex( Modified: lldb/trunk/source/Plugins/Language/ClangCommon/ClangHighlighter.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/ClangCommon/ClangHighlighter.cpp?rev=339695&r1=339694&r2=339695&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Language/ClangCommon/ClangHighlighter.cpp (original) +++ lldb/trunk/source/Plugins/Language/ClangCommon/ClangHighlighter.cpp Tue Aug 14 10:12:54 2018 @@ -128,14 +128,12 @@ determineClangStyle(const ClangHighlight return HighlightStyle::ColorStyle(); } -std::size_t ClangHighlighter::Highlight(const HighlightStyle &options, - llvm::StringRef line, - llvm::StringRef previous_lines, - Stream &result) const { +void ClangHighlighter::Highlight(const HighlightStyle &options, + llvm::StringRef line, + llvm::StringRef previous_lines, + Stream &result) const { using namespace clang; - std::size_t written_bytes = 0; - FileSystemOptions file_opts; FileManager file_mgr(file_opts); @@ -210,7 +208,7 @@ std::size_t ClangHighlighter::Highlight( HighlightStyle::ColorStyle color = determineClangStyle(*this, token, tok_str, options, in_pp_directive); - written_bytes += color.Apply(result, tok_str); + color.Apply(result, tok_str); } // If we went over the whole file but couldn't find our own file, then @@ -219,9 +217,6 @@ std::size_t ClangHighlighter::Highlight( // debug mode we bail out with an assert as this should never happen. if (!found_user_line) { result << line; - written_bytes += line.size(); assert(false && "We couldn't find the user line in the input file?"); } - - return written_bytes; } Modified: lldb/trunk/source/Plugins/Language/ClangCommon/ClangHighlighter.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/ClangCommon/ClangHighlighter.h?rev=339695&r1=339694&r2=339695&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Language/ClangCommon/ClangHighlighter.h (original) +++ lldb/trunk/source/Plugins/Language/ClangCommon/ClangHighlighter.h Tue Aug 14 10:12:54 2018 @@ -28,9 +28,8 @@ public: ClangHighlighter(); llvm::StringRef GetName() const override { return "clang"; } - std::size_t Highlight(const HighlightStyle &options, llvm::StringRef line, - llvm::StringRef previous_lines, - Stream &s) const override; + void Highlight(const HighlightStyle &options, llvm::StringRef line, + llvm::StringRef previous_lines, Stream &s) const override; /// Returns true if the given string represents a keywords in any Clang /// supported language. _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits