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 (!AlwaysReflow || 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 (!AlwaysReflow || 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 && AlwaysReflow &&
860 mayReflowContent(Content[LineIndex]) && !Tok.Finalized &&
861 !switchesFormatting(tokenAt(LineIndex));
1013 BreakableLineCommentSection::getRangeLength(unsigned LineIndex, unsigned Offset,
1017 Content[LineIndex].substr(Offset, Length), StartColumn, Style.TabWidth,
1022 BreakableLineCommentSection::getContentStartColumn(unsigned LineIndex,
1024 return ContentColumn[LineIndex];
1028 unsigned LineIndex, unsigned TailOffset, Split Split,
1030 StringRef Text = Content[LineIndex].substr(TailOffset);
1034 Text.data() - tokenAt(LineIndex).TokenText.data() + Split.first;
1037 tokenAt(LineIndex), BreakOffsetInToken, CharsToRemove, "",
1038 Prefix[LineIndex], InPPDirective, /*Newlines=*/1,
1039 /*Spaces=*/ContentColumn[LineIndex] - Prefix[LineIndex].size());
1043 unsigned LineIndex, const llvm::Regex &CommentPragmasRegex) const {
1044 if (!mayReflow(LineIndex, CommentPragmasRegex))
1047 size_t Trimmed = Content[LineIndex].find_first_not_of(Blanks);
1056 void BreakableLineCommentSection::reflow(unsigned LineIndex,
1058 if (LineIndex > 0 && Tokens[LineIndex] != Tokens[LineIndex - 1]) {
1062 *Tokens[LineIndex], /*Newlines=*/0, /*Spaces=*/0,
1065 } else if (LineIndex > 0) {
1076 unsigned Offset = Lines[LineIndex - 1].data() +
1077 Lines[LineIndex - 1].size() -
1078 tokenAt(LineIndex - 1).TokenText.data();
1082 Lines[LineIndex].data() - tokenAt(LineIndex).TokenText.data() - Offset;
1083 Whitespaces.replaceWhitespaceInToken(*Tokens[LineIndex], Offset,
1093 Lines[LineIndex].data() - tokenAt(LineIndex).TokenText.data();
1095 Content[LineIndex].data() - Lines[LineIndex].data();
1096 Whitespaces.replaceWhitespaceInToken(*Tokens[LineIndex], Offset,
1106 unsigned LineIndex, WhitespaceManager &Whitespaces) const {
1113 if (LineIndex > 0 && Tokens[LineIndex] != Tokens[LineIndex - 1]) {
1116 // start column. Note that ContentColumn[LineIndex] is the expected
1120 ContentColumn[LineIndex] -
1121 (Content[LineIndex].data() - Lines[LineIndex].data()) +
1122 (OriginalPrefix[LineIndex].size() - Prefix[LineIndex].size());
1128 Whitespaces.replaceWhitespace(*Tokens[LineIndex],
1135 if (OriginalPrefix[LineIndex] != Prefix[LineIndex]) {
1137 const auto SpacesToRemove = -std::min(PrefixSpaceChange[LineIndex], 0);
1138 const auto SpacesToAdd = std::max(PrefixSpaceChange[LineIndex], 0);
1140 tokenAt(LineIndex), OriginalPrefix[LineIndex].size() - SpacesToRemove,
1152 unsigned LineIndex, const llvm::Regex &CommentPragmasRegex) const {
1155 StringRef IndentContent = Content[LineIndex];
1156 if (Lines[LineIndex].starts_with("//"))
1157 IndentContent = Lines[LineIndex].substr(2);
1159 // Currently, we only reflow when the OriginalPrefix[LineIndex] matches the
1160 // OriginalPrefix[LineIndex-1]. That means we don't reflow
1164 return LineIndex > 0 && AlwaysReflow &&
1166 mayReflowContent(Content[LineIndex]) && !Tok.Finalized &&
1167 !switchesFormatting(tokenAt(LineIndex)) &&
1168 OriginalPrefix[LineIndex] == OriginalPrefix[LineIndex - 1];