Author: ioeric Date: Wed Oct 19 03:19:46 2016 New Revision: 284573 URL: http://llvm.org/viewvc/llvm-project?rev=284573&view=rev Log: [clang-format] Add comment manipulation header
Summary: Introduces a separate target for comment manipulation. Currently, comment manipulation is in BreakableComment.cpp. Towards implementing comment reflowing, we want to factor out the comment-related functionality, so it can be reused. Start simple by just moving out getLineCommentIndentPrefix. Patch by Krasimir Georgiev! Reviewers: djasper Subscribers: klimek, beanz, mgorny, modocache Differential Revision: https://reviews.llvm.org/D25725 Added: cfe/trunk/lib/Format/Comments.cpp cfe/trunk/lib/Format/Comments.h Modified: cfe/trunk/lib/Format/BreakableToken.cpp cfe/trunk/lib/Format/CMakeLists.txt Modified: cfe/trunk/lib/Format/BreakableToken.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/BreakableToken.cpp?rev=284573&r1=284572&r2=284573&view=diff ============================================================================== --- cfe/trunk/lib/Format/BreakableToken.cpp (original) +++ cfe/trunk/lib/Format/BreakableToken.cpp Wed Oct 19 03:19:46 2016 @@ -14,6 +14,7 @@ //===----------------------------------------------------------------------===// #include "BreakableToken.h" +#include "Comments.h" #include "clang/Basic/CharInfo.h" #include "clang/Format/Format.h" #include "llvm/ADT/STLExtras.h" @@ -182,21 +183,6 @@ void BreakableStringLiteral::insertBreak Prefix, InPPDirective, 1, IndentLevel, LeadingSpaces); } -static StringRef getLineCommentIndentPrefix(StringRef Comment) { - static const char *const KnownPrefixes[] = {"///", "//", "//!"}; - StringRef LongestPrefix; - for (StringRef KnownPrefix : KnownPrefixes) { - if (Comment.startswith(KnownPrefix)) { - size_t PrefixLength = KnownPrefix.size(); - while (PrefixLength < Comment.size() && Comment[PrefixLength] == ' ') - ++PrefixLength; - if (PrefixLength > LongestPrefix.size()) - LongestPrefix = Comment.substr(0, PrefixLength); - } - } - return LongestPrefix; -} - BreakableLineComment::BreakableLineComment( const FormatToken &Token, unsigned IndentLevel, unsigned StartColumn, bool InPPDirective, encoding::Encoding Encoding, const FormatStyle &Style) Modified: cfe/trunk/lib/Format/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/CMakeLists.txt?rev=284573&r1=284572&r2=284573&view=diff ============================================================================== --- cfe/trunk/lib/Format/CMakeLists.txt (original) +++ cfe/trunk/lib/Format/CMakeLists.txt Wed Oct 19 03:19:46 2016 @@ -3,6 +3,7 @@ set(LLVM_LINK_COMPONENTS support) add_clang_library(clangFormat AffectedRangeManager.cpp BreakableToken.cpp + Comments.cpp ContinuationIndenter.cpp Format.cpp FormatToken.cpp Added: cfe/trunk/lib/Format/Comments.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/Comments.cpp?rev=284573&view=auto ============================================================================== --- cfe/trunk/lib/Format/Comments.cpp (added) +++ cfe/trunk/lib/Format/Comments.cpp Wed Oct 19 03:19:46 2016 @@ -0,0 +1,36 @@ +//===--- Comments.cpp - Comment Manipulation -------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// \brief Implements comment manipulation. +/// +//===----------------------------------------------------------------------===// + +#include "Comments.h" + +namespace clang { +namespace format { + +StringRef getLineCommentIndentPrefix(StringRef Comment) { + static const char *const KnownPrefixes[] = {"///", "//", "//!"}; + StringRef LongestPrefix; + for (StringRef KnownPrefix : KnownPrefixes) { + if (Comment.startswith(KnownPrefix)) { + size_t PrefixLength = KnownPrefix.size(); + while (PrefixLength < Comment.size() && Comment[PrefixLength] == ' ') + ++PrefixLength; + if (PrefixLength > LongestPrefix.size()) + LongestPrefix = Comment.substr(0, PrefixLength); + } + } + return LongestPrefix; +} + +} // namespace format +} // namespace clang Added: cfe/trunk/lib/Format/Comments.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/Comments.h?rev=284573&view=auto ============================================================================== --- cfe/trunk/lib/Format/Comments.h (added) +++ cfe/trunk/lib/Format/Comments.h Wed Oct 19 03:19:46 2016 @@ -0,0 +1,33 @@ +//===--- Comments.cpp - Comment manipulation -----------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// \brief Declares comment manipulation functionality. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_LIB_FORMAT_COMMENTS_H +#define LLVM_CLANG_LIB_FORMAT_COMMENTS_H + +#include "clang/Basic/LLVM.h" +#include "llvm/ADT/StringRef.h" + +namespace clang { +namespace format { + +/// \brief Returns the comment prefix of the line comment \p Comment. +/// +/// The comment prefix consists of a leading known prefix, like "//" or "///", +/// together with the following whitespace. +StringRef getLineCommentIndentPrefix(StringRef Comment); + +} // namespace format +} // namespace clang + +#endif _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits