18 #ifndef LLVM_CLANG_LIB_FORMAT_BREAKABLETOKEN_H 19 #define LLVM_CLANG_LIB_FORMAT_BREAKABLETOKEN_H 24 #include "llvm/Support/Regex.h" 92 typedef std::pair<StringRef::size_type, unsigned> Split;
108 StringRef::size_type Length,
109 unsigned StartColumn)
const = 0;
124 unsigned StartColumn)
const {
125 return getRangeLength(LineIndex, Offset, StringRef::npos, StartColumn);
136 bool Break)
const = 0;
143 virtual Split
getSplit(
unsigned LineIndex,
unsigned TailOffset,
144 unsigned ColumnLimit,
unsigned ContentStartColumn,
145 llvm::Regex &CommentPragmasRegex)
const = 0;
148 virtual void insertBreak(
unsigned LineIndex,
unsigned TailOffset, Split Split,
179 llvm::Regex &CommentPragmasRegex)
const {
180 return Split(StringRef::npos, 0);
204 return Split(StringRef::npos, 0);
210 Split SplitAfterLastLine,
224 : Tok(Tok), InPPDirective(InPPDirective), Encoding(Encoding),
240 StringRef Prefix, StringRef Postfix,
244 Split
getSplit(
unsigned LineIndex,
unsigned TailOffset,
unsigned ColumnLimit,
245 unsigned ReflowColumn,
246 llvm::Regex &CommentPragmasRegex)
const override;
247 void insertBreak(
unsigned LineIndex,
unsigned TailOffset, Split Split,
253 StringRef::size_type Length,
254 unsigned StartColumn)
const override;
256 unsigned StartColumn)
const override;
286 Split
getSplit(
unsigned LineIndex,
unsigned TailOffset,
unsigned ColumnLimit,
287 unsigned ReflowColumn,
288 llvm::Regex &CommentPragmasRegex)
const override;
294 const FormatToken &tokenAt(
unsigned LineIndex)
const;
298 virtual bool mayReflow(
unsigned LineIndex,
299 llvm::Regex &CommentPragmasRegex)
const = 0;
341 StringRef ReflowPrefix =
" ";
347 unsigned OriginalStartColumn,
bool FirstInLine,
352 StringRef::size_type Length,
353 unsigned StartColumn)
const override;
355 unsigned StartColumn)
const override;
357 void insertBreak(
unsigned LineIndex,
unsigned TailOffset, Split Split,
360 llvm::Regex &CommentPragmasRegex)
const override;
361 void reflow(
unsigned LineIndex,
368 bool mayReflow(
unsigned LineIndex,
369 llvm::Regex &CommentPragmasRegex)
const override;
380 void adjustWhitespace(
unsigned LineIndex,
int IndentDelta);
392 unsigned IndentAtLineBreak;
396 bool LastLineNeedsDecoration;
399 StringRef Decoration;
403 unsigned DecorationColumn;
407 bool DelimitersOnNewline;
411 unsigned UnbreakableTailLength;
417 unsigned OriginalStartColumn,
bool FirstInLine,
422 StringRef::size_type Length,
423 unsigned StartColumn)
const override;
425 void insertBreak(
unsigned LineIndex,
unsigned TailOffset, Split Split,
428 llvm::Regex &CommentPragmasRegex)
const override;
429 void reflow(
unsigned LineIndex,
434 bool mayReflow(
unsigned LineIndex,
435 llvm::Regex &CommentPragmasRegex)
const override;
Contains functions for text encoding manipulation.
This file implements a token annotator, i.e.
Token - This structure provides full information about a lexed token.
WhitespaceManager class manages whitespace around tokens and their replacements.
Dataflow Directional Tag Classes.