[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 llvm-svn: 284573
This commit is contained in:
parent
3f5111d363
commit
99eeab7ff3
|
@ -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(unsigned LineIndex,
|
|||
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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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
|
Loading…
Reference in New Issue