17 #ifndef LLVM_CLANG_LIB_FORMAT_BREAKABLETOKEN_H 18 #define LLVM_CLANG_LIB_FORMAT_BREAKABLETOKEN_H 23 #include "llvm/ADT/StringSet.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;
156 virtual Split
getSplit(
unsigned LineIndex,
unsigned TailOffset,
157 unsigned ColumnLimit,
unsigned ContentStartColumn,
158 llvm::Regex &CommentPragmasRegex)
const = 0;
161 virtual void insertBreak(
unsigned LineIndex,
unsigned TailOffset, Split Split,
162 unsigned ContentIndent,
193 llvm::Regex &CommentPragmasRegex)
const {
194 return Split(StringRef::npos, 0);
216 return Split(StringRef::npos, 0);
222 Split SplitAfterLastLine,
236 : Tok(Tok), InPPDirective(InPPDirective), Encoding(Encoding),
252 StringRef Prefix, StringRef Postfix,
256 Split getSplit(
unsigned LineIndex,
unsigned TailOffset,
unsigned ColumnLimit,
257 unsigned ContentStartColumn,
258 llvm::Regex &CommentPragmasRegex)
const override;
260 unsigned ContentIndent,
266 StringRef::size_type Length,
267 unsigned StartColumn)
const override;
269 unsigned StartColumn)
const override;
299 Split getSplit(
unsigned LineIndex,
unsigned TailOffset,
unsigned ColumnLimit,
300 unsigned ContentStartColumn,
301 llvm::Regex &CommentPragmasRegex)
const override;
307 const FormatToken &tokenAt(
unsigned LineIndex)
const;
311 virtual bool mayReflow(
unsigned LineIndex,
312 llvm::Regex &CommentPragmasRegex)
const = 0;
354 StringRef ReflowPrefix =
" ";
360 unsigned OriginalStartColumn,
bool FirstInLine,
364 Split getSplit(
unsigned LineIndex,
unsigned TailOffset,
unsigned ColumnLimit,
365 unsigned ContentStartColumn,
366 llvm::Regex &CommentPragmasRegex)
const override;
368 StringRef::size_type Length,
369 unsigned StartColumn)
const override;
371 unsigned StartColumn)
const override;
375 unsigned ContentIndent,
378 llvm::Regex &CommentPragmasRegex)
const override;
379 void reflow(
unsigned LineIndex,
386 bool mayReflow(
unsigned LineIndex,
387 llvm::Regex &CommentPragmasRegex)
const override;
402 void adjustWhitespace(
unsigned LineIndex,
int IndentDelta);
414 unsigned IndentAtLineBreak;
418 bool LastLineNeedsDecoration;
421 StringRef Decoration;
425 unsigned DecorationColumn;
429 bool DelimitersOnNewline;
433 unsigned UnbreakableTailLength;
439 unsigned OriginalStartColumn,
bool FirstInLine,
444 StringRef::size_type Length,
445 unsigned StartColumn)
const override;
448 unsigned ContentIndent,
451 llvm::Regex &CommentPragmasRegex)
const override;
452 void reflow(
unsigned LineIndex,
457 bool mayReflow(
unsigned LineIndex,
458 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.