Lines Matching defs:LineIndex
246 unsigned BreakableStringLiteral::getRangeLength(unsigned LineIndex,
255 BreakableStringLiteral::getRemainingLength(unsigned LineIndex, unsigned Offset,
262 unsigned BreakableStringLiteral::getContentStartColumn(unsigned LineIndex,
280 unsigned LineIndex, unsigned TailOffset, unsigned ColumnLimit,
286 void BreakableStringLiteral::insertBreak(unsigned LineIndex,
358 unsigned LineIndex, unsigned Offset, unsigned StartColumn) const {
365 BreakableStringLiteralUsingOperators::getContentStartColumn(unsigned LineIndex,
377 unsigned LineIndex, unsigned TailOffset, Split Split,
419 BreakableComment::getSplit(unsigned LineIndex, unsigned TailOffset,
423 if (CommentPragmasRegex.match(Content[LineIndex]))
425 return getCommentSplit(Content[LineIndex].substr(TailOffset),
431 unsigned LineIndex, unsigned TailOffset, Split Split,
433 StringRef Text = Content[LineIndex].substr(TailOffset);
439 Text.data() - tokenAt(LineIndex).TokenText.data() + Split.first;
442 tokenAt(LineIndex), BreakOffsetInToken, CharsToRemove, "", "",
446 const FormatToken &BreakableComment::tokenAt(unsigned LineIndex) const {
447 return Tokens[LineIndex] ? *Tokens[LineIndex] : Tok;
608 unsigned LineIndex, unsigned TailOffset, unsigned ColumnLimit,
611 if (CommentPragmasRegex.match(Content[LineIndex]))
613 return getCommentSplit(Content[LineIndex].substr(TailOffset),
618 void BreakableBlockComment::adjustWhitespace(unsigned LineIndex,
625 size_t EndOfPreviousLine = Lines[LineIndex - 1].size();
626 if (InPPDirective && Lines[LineIndex - 1].ends_with("\\"))
631 Lines[LineIndex - 1].find_last_not_of(Blanks, EndOfPreviousLine);
637 size_t StartOfLine = Lines[LineIndex].find_first_not_of(Blanks);
639 StartOfLine = Lines[LineIndex].size();
641 StringRef Whitespace = Lines[LineIndex].substr(0, StartOfLine);
644 Content[LineIndex - 1].data() - Lines[LineIndex - 1].data();
645 Content[LineIndex - 1] = Lines[LineIndex - 1].substr(
647 Content[LineIndex] = Lines[LineIndex].substr(StartOfLine);
650 ContentColumn[LineIndex] =
655 unsigned BreakableBlockComment::getRangeLength(unsigned LineIndex,
660 Content[LineIndex].substr(Offset, Length), StartColumn, Style.TabWidth,
664 unsigned BreakableBlockComment::getRemainingLength(unsigned LineIndex,
669 getRangeLength(LineIndex, Offset, StringRef::npos, StartColumn);
670 if (LineIndex + 1 == Lines.size()) {
673 bool HasRemainingText = Offset < Content[LineIndex].size();
675 bool HasDecoration = Lines[LineIndex].ltrim().starts_with(Decoration);
683 unsigned BreakableBlockComment::getContentStartColumn(unsigned LineIndex,
687 return std::max(0, ContentColumn[LineIndex]);
696 unsigned BreakableBlockComment::getContentIndent(unsigned LineIndex) const {
699 // The content at LineIndex 0 of a comment like:
702 StringRef ContentWithNoDecoration = Content[LineIndex];
703 if (LineIndex == 0 && ContentWithNoDecoration.starts_with("*"))
712 void BreakableBlockComment::insertBreak(unsigned LineIndex, unsigned TailOffset,
715 StringRef Text = Content[LineIndex].substr(TailOffset);
721 if (LineIndex + 1 == Lines.size() &&
731 Text.data() - tokenAt(LineIndex).TokenText.data() + Split.first;
737 tokenAt(LineIndex), BreakOffsetInToken, CharsToRemove, "",
744 unsigned LineIndex, const llvm::Regex &CommentPragmasRegex) const {
745 if (!mayReflow(LineIndex, CommentPragmasRegex))
750 size_t Trimmed = Content[LineIndex].find_first_not_of(Blanks);
751 if (LineIndex) {
752 unsigned PreviousContentIndent = getContentIndent(LineIndex - 1);
768 void BreakableBlockComment::reflow(unsigned LineIndex,
770 StringRef TrimmedContent = Content[LineIndex].ltrim(Blanks);
772 assert(Tokens[LineIndex - 1] == Tokens[LineIndex] &&
776 unsigned WhitespaceOffsetInToken = Content[LineIndex - 1].data() +
777 Content[LineIndex - 1].size() -
778 tokenAt(LineIndex).TokenText.data();
780 tokenAt(LineIndex).TokenText.data() -
783 tokenAt(LineIndex), WhitespaceOffsetInToken,
790 unsigned LineIndex, WhitespaceManager &Whitespaces) const {
791 if (LineIndex == 0) {
799 insertBreak(LineIndex, 0, Split(1, BreakLength), /*ContentIndent=*/0,
806 // Fix the decoration of the line at LineIndex.
808 if (Content[LineIndex].empty()) {
809 if (LineIndex + 1 == Lines.size()) {
820 } else if (ContentColumn[LineIndex] == 1) {
826 unsigned WhitespaceOffsetInToken = Content[LineIndex - 1].data() +
827 Content[LineIndex - 1].size() -
828 tokenAt(LineIndex).TokenText.data();
829 unsigned WhitespaceLength = Content[LineIndex].data() -
830 tokenAt(LineIndex).TokenText.data() -
833 tokenAt(LineIndex), WhitespaceOffsetInToken, WhitespaceLength, "", Prefix,
834 InPPDirective, /*Newlines=*/1, ContentColumn[LineIndex] - Prefix.size());
852 unsigned LineIndex, const llvm::Regex &CommentPragmasRegex) const {
853 // Content[LineIndex] may exclude the indent after the '*' decoration. In that
855 StringRef IndentContent = Content[LineIndex];
856 if (Lines[LineIndex].ltrim(Blanks).starts_with("*"))
857 IndentContent = Lines[LineIndex].ltrim(Blanks).substr(1);
858 return LineIndex > 0 && !CommentPragmasRegex.match(IndentContent) &&
859 mayReflowContent(Content[LineIndex]) && !Tok.Finalized &&
860 !switchesFormatting(tokenAt(LineIndex));
1012 BreakableLineCommentSection::getRangeLength(unsigned LineIndex, unsigned Offset,
1016 Content[LineIndex].substr(Offset, Length), StartColumn, Style.TabWidth,
1021 BreakableLineCommentSection::getContentStartColumn(unsigned LineIndex,
1023 return ContentColumn[LineIndex];
1027 unsigned LineIndex, unsigned TailOffset, Split Split,
1029 StringRef Text = Content[LineIndex].substr(TailOffset);
1033 Text.data() - tokenAt(LineIndex).TokenText.data() + Split.first;
1036 tokenAt(LineIndex), BreakOffsetInToken, CharsToRemove, "",
1037 Prefix[LineIndex], InPPDirective, /*Newlines=*/1,
1038 /*Spaces=*/ContentColumn[LineIndex] - Prefix[LineIndex].size());
1042 unsigned LineIndex, const llvm::Regex &CommentPragmasRegex) const {
1043 if (!mayReflow(LineIndex, CommentPragmasRegex))
1046 size_t Trimmed = Content[LineIndex].find_first_not_of(Blanks);
1055 void BreakableLineCommentSection::reflow(unsigned LineIndex,
1057 if (LineIndex > 0 && Tokens[LineIndex] != Tokens[LineIndex - 1]) {
1061 *Tokens[LineIndex], /*Newlines=*/0, /*Spaces=*/0,
1064 } else if (LineIndex > 0) {
1075 unsigned Offset = Lines[LineIndex - 1].data() +
1076 Lines[LineIndex - 1].size() -
1077 tokenAt(LineIndex - 1).TokenText.data();
1081 Lines[LineIndex].data() - tokenAt(LineIndex).TokenText.data() - Offset;
1082 Whitespaces.replaceWhitespaceInToken(*Tokens[LineIndex], Offset,
1092 Lines[LineIndex].data() - tokenAt(LineIndex).TokenText.data();
1094 Content[LineIndex].data() - Lines[LineIndex].data();
1095 Whitespaces.replaceWhitespaceInToken(*Tokens[LineIndex], Offset,
1105 unsigned LineIndex, WhitespaceManager &Whitespaces) const {
1112 if (LineIndex > 0 && Tokens[LineIndex] != Tokens[LineIndex - 1]) {
1115 // start column. Note that ContentColumn[LineIndex] is the expected
1119 ContentColumn[LineIndex] -
1120 (Content[LineIndex].data() - Lines[LineIndex].data()) +
1121 (OriginalPrefix[LineIndex].size() - Prefix[LineIndex].size());
1127 Whitespaces.replaceWhitespace(*Tokens[LineIndex],
1134 if (OriginalPrefix[LineIndex] != Prefix[LineIndex]) {
1136 const auto SpacesToRemove = -std::min(PrefixSpaceChange[LineIndex], 0);
1137 const auto SpacesToAdd = std::max(PrefixSpaceChange[LineIndex], 0);
1139 tokenAt(LineIndex), OriginalPrefix[LineIndex].size() - SpacesToRemove,
1151 unsigned LineIndex, const llvm::Regex &CommentPragmasRegex) const {
1154 StringRef IndentContent = Content[LineIndex];
1155 if (Lines[LineIndex].starts_with("//"))
1156 IndentContent = Lines[LineIndex].substr(2);
1158 // Currently, we only reflow when the OriginalPrefix[LineIndex] matches the
1159 // OriginalPrefix[LineIndex-1]. That means we don't reflow
1163 return LineIndex > 0 && !CommentPragmasRegex.match(IndentContent) &&
1164 mayReflowContent(Content[LineIndex]) && !Tok.Finalized &&
1165 !switchesFormatting(tokenAt(LineIndex)) &&
1166 OriginalPrefix[LineIndex] == OriginalPrefix[LineIndex - 1];