clang  5.0.0
Namespaces | Classes | Enumerations | Functions | Variables
clang::format Namespace Reference

Namespaces

 encoding
 

Classes

class  ParseErrorCategory
 
struct  FormatStyle
 The FormatStyle is used to configure the formatting to follow specific guidelines. More...
 
struct  FormattingAttemptStatus
 Represents the status of a formatting attempt. More...
 
class  AffectedRangeManager
 
class  BreakableToken
 Base class for strategies on how to break tokens. More...
 
class  BreakableSingleLineToken
 Base class for single line tokens that can be broken. More...
 
class  BreakableStringLiteral
 
class  BreakableComment
 
class  BreakableBlockComment
 
class  BreakableLineCommentSection
 
class  ContinuationIndenter
 
struct  ParenState
 
struct  LineState
 The current state when indenting a unwrapped line. More...
 
struct  FormatToken
 A wrapper around a Token storing information about the whitespace characters preceding it. More...
 
class  TokenRole
 
class  CommaSeparatedList
 
struct  AdditionalKeywords
 Encapsulates keywords that are context sensitive or for languages not properly supported by Clang's lexer. More...
 
class  FormatTokenLexer
 
class  NamespaceEndCommentsFixer
 
struct  JsImportedSymbol
 
struct  JsModuleReference
 
class  JavaScriptImportSorter
 
class  Environment
 
class  TokenAnalyzer
 
class  AnnotatedLine
 
class  TokenAnnotator
 Determines extra information about the tokens comprising an UnwrappedLine. More...
 
class  UnwrappedLineFormatter
 
class  FormatTokenSource
 
class  ScopedLineState
 
class  CompoundStatementIndenter
 
struct  UnwrappedLine
 An unwrapped line is a sequence of Token, that we would like to put on a single line if there was no column limit. More...
 
class  UnwrappedLineConsumer
 
class  UnwrappedLineParser
 
struct  UnwrappedLineNode
 
class  UsingDeclarationsSorter
 
class  WhitespaceManager
 Manages the whitespaces around tokens and their replacements. More...
 

Enumerations

enum  ParseError { ParseError::Success = 0, ParseError::Error, ParseError::Unsuitable }
 
enum  TokenType { NUM_TOKEN_TYPES }
 
enum  BraceBlockKind { BK_Unknown, BK_Block, BK_BracedInit }
 
enum  ParameterPackingKind { PPK_BinPacked, PPK_OnePerLine, PPK_Inconclusive }
 
enum  FormatDecision { FD_Unformatted, FD_Continue, FD_Break }
 
enum  LexerState { NORMAL, TEMPLATE_STRING, TOKEN_STASHED }
 
enum  LineType {
  LT_Invalid, LT_ImportStatement, LT_ObjCDecl, LT_ObjCMethodDecl,
  LT_ObjCProperty, LT_Other, LT_PreprocessorDirective, LT_VirtualFunctionDecl
}
 

Functions

const std::error_category & getParseCategory ()
 
std::error_code make_error_code (ParseError e)
 
FormatStyle getLLVMStyle ()
 Returns a format style complying with the LLVM coding standards: http://llvm.org/docs/CodingStandards.html. More...
 
FormatStyle getGoogleStyle (FormatStyle::LanguageKind Language)
 Returns a format style complying with one of Google's style guides: http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml. More...
 
FormatStyle getChromiumStyle (FormatStyle::LanguageKind Language)
 Returns a format style complying with Chromium's style guide: http://www.chromium.org/developers/coding-style. More...
 
FormatStyle getMozillaStyle ()
 Returns a format style complying with Mozilla's style guide: https://developer.mozilla.org/en-US/docs/Developer_Guide/Coding_Style. More...
 
FormatStyle getWebKitStyle ()
 Returns a format style complying with Webkit's style guide: http://www.webkit.org/coding/coding-style.html. More...
 
FormatStyle getGNUStyle ()
 Returns a format style complying with GNU Coding Standards: http://www.gnu.org/prep/standards/standards.html. More...
 
FormatStyle getNoStyle ()
 Returns style indicating formatting should be not applied at all. More...
 
bool getPredefinedStyle (StringRef Name, FormatStyle::LanguageKind Language, FormatStyle *Style)
 Gets a predefined style for the specified language by name. More...
 
std::error_code parseConfiguration (StringRef Text, FormatStyle *Style)
 Parse configuration from YAML-formatted text. More...
 
std::string configurationAsText (const FormatStyle &Style)
 Gets configuration in a YAML string. More...
 
tooling::Replacements sortIncludes (const FormatStyle &Style, StringRef Code, ArrayRef< tooling::Range > Ranges, StringRef FileName, unsigned *Cursor=nullptr)
 Returns the replacements necessary to sort all #include blocks that are affected by Ranges. More...
 
llvm::Expected
< tooling::Replacements
formatReplacements (StringRef Code, const tooling::Replacements &Replaces, const FormatStyle &Style)
 Returns the replacements corresponding to applying and formatting Replaces on success; otheriwse, return an llvm::Error carrying llvm::StringError. More...
 
llvm::Expected
< tooling::Replacements
cleanupAroundReplacements (StringRef Code, const tooling::Replacements &Replaces, const FormatStyle &Style)
 Returns the replacements corresponding to applying Replaces and cleaning up the code after that on success; otherwise, return an llvm::Error carrying llvm::StringError. More...
 
tooling::Replacements reformat (const FormatStyle &Style, StringRef Code, ArrayRef< tooling::Range > Ranges, StringRef FileName="<stdin>", FormattingAttemptStatus *Status=nullptr)
 Reformats the given Ranges in Code. More...
 
tooling::Replacements reformat (const FormatStyle &Style, StringRef Code, ArrayRef< tooling::Range > Ranges, StringRef FileName, bool *IncompleteFormat)
 Same as above, except if IncompleteFormat is non-null, its value will be set to true if any of the affected ranges were not formatted due to a non-recoverable syntax error. More...
 
tooling::Replacements cleanup (const FormatStyle &Style, StringRef Code, ArrayRef< tooling::Range > Ranges, StringRef FileName="<stdin>")
 Clean up any erroneous/redundant code in the given Ranges in Code. More...
 
tooling::Replacements fixNamespaceEndComments (const FormatStyle &Style, StringRef Code, ArrayRef< tooling::Range > Ranges, StringRef FileName="<stdin>")
 Fix namespace end comments in the given Ranges in Code. More...
 
tooling::Replacements sortUsingDeclarations (const FormatStyle &Style, StringRef Code, ArrayRef< tooling::Range > Ranges, StringRef FileName="<stdin>")
 Sort consecutive using declarations in the given Ranges in Code. More...
 
LangOptions getFormattingLangOpts (const FormatStyle &Style=getLLVMStyle())
 Returns the LangOpts that the formatter expects you to set. More...
 
llvm::Expected< FormatStylegetStyle (StringRef StyleName, StringRef FileName, StringRef FallbackStyle, StringRef Code="", vfs::FileSystem *FS=nullptr)
 Construct a FormatStyle based on StyleName. More...
 
StringRef getLanguageName (FormatStyle::LanguageKind Language)
 
static bool IsBlank (char C)
 
static StringRef getLineCommentIndentPrefix (StringRef Comment)
 
static BreakableToken::Split getCommentSplit (StringRef Text, unsigned ContentStartColumn, unsigned ColumnLimit, unsigned TabWidth, encoding::Encoding Encoding)
 
static BreakableToken::Split getStringSplit (StringRef Text, unsigned UsedColumns, unsigned ColumnLimit, unsigned TabWidth, encoding::Encoding Encoding)
 
bool switchesFormatting (const FormatToken &Token)
 Checks if Token switches formatting, like /* clang-format off. More...
 
static bool mayReflowContent (StringRef Content)
 
static unsigned getLengthToMatchingParen (const FormatToken &Tok)
 
static unsigned getLengthToNextOperator (const FormatToken &Tok)
 
static bool startsSegmentOfBuilderTypeCall (const FormatToken &Tok)
 
static bool startsNextParameter (const FormatToken &Current, const FormatStyle &Style)
 
static bool opensProtoMessageField (const FormatToken &LessTok, const FormatStyle &Style)
 
llvm::Error make_string_error (const llvm::Twine &Message)
 
static FormatStyle expandPresets (const FormatStyle &Style)
 
static bool affectsRange (ArrayRef< tooling::Range > Ranges, unsigned Start, unsigned End)
 
static std::pair< unsigned,
unsigned
FindCursorIndex (const SmallVectorImpl< IncludeDirective > &Includes, const SmallVectorImpl< unsigned > &Indices, unsigned Cursor)
 
static void sortCppIncludes (const FormatStyle &Style, const SmallVectorImpl< IncludeDirective > &Includes, ArrayRef< tooling::Range > Ranges, StringRef FileName, tooling::Replacements &Replaces, unsigned *Cursor)
 
tooling::Replacements sortCppIncludes (const FormatStyle &Style, StringRef Code, ArrayRef< tooling::Range > Ranges, StringRef FileName, tooling::Replacements &Replaces, unsigned *Cursor)
 
bool isMpegTS (StringRef Code)
 
template<typename T >
static llvm::Expected
< tooling::Replacements
processReplacements (T ProcessFunc, StringRef Code, const tooling::Replacements &Replaces, const FormatStyle &Style)
 
static FormatStyle::LanguageKind getLanguageByFileName (StringRef FileName)
 
const char * getTokenTypeName (TokenType Type)
 Determines the name of a token type. More...
 
static unsigned CodePointsBetween (const FormatToken *Begin, const FormatToken *End)
 
 Column (0)
 
 TrailingWhitespace (0)
 
 SourceMgr (SourceMgr)
 
 ID (ID)
 
 Style (Style)
 
 IdentTable (getFormattingLangOpts(Style))
 
 Keywords (IdentTable)
 
 Encoding (Encoding)
 
 FirstInLineIndex (0)
 
 FormattingDisabled (false)
 
 MacroBlockBeginRegex (Style.MacroBlockBegin)
 
 MacroBlockEndRegex (Style.MacroBlockEnd)
 
bool operator< (const JsModuleReference &LHS, const JsModuleReference &RHS)
 
tooling::Replacements sortJavaScriptImports (const FormatStyle &Style, StringRef Code, ArrayRef< tooling::Range > Ranges, StringRef FileName)
 
static unsigned maxNestingDepth (const AnnotatedLine &Line)
 
static bool isFunctionDeclarationName (const FormatToken &Current, const AnnotatedLine &Line)
 
static bool isAllmanBrace (const FormatToken &Tok)
 
static bool isGoogScope (const UnwrappedLine &Line)
 
static bool isIIFE (const UnwrappedLine &Line, const AdditionalKeywords &Keywords)
 
static bool ShouldBreakBeforeBrace (const FormatStyle &Style, const FormatToken &InitialToken)
 
static bool tokenCanStartNewLine (const clang::Token &Tok)
 
static bool mustBeJSIdent (const AdditionalKeywords &Keywords, const FormatToken *FormatTok)
 
static bool mustBeJSIdentOrValue (const AdditionalKeywords &Keywords, const FormatToken *FormatTok)
 
static bool isJSDeclOrStmt (const AdditionalKeywords &Keywords, const FormatToken *FormatTok)
 
static LLVM_ATTRIBUTE_UNUSED void printDebugInfo (const UnwrappedLine &Line, StringRef Prefix="")
 
static bool continuesLineCommentSection (const FormatToken &FormatTok, const UnwrappedLine &Line, llvm::Regex &CommentPragmasRegex)
 
template<typename F >
static void AlignTokenSequence (unsigned Start, unsigned End, unsigned Column, F &&Matches, SmallVector< WhitespaceManager::Change, 16 > &Changes)
 
template<typename F >
static unsigned AlignTokens (const FormatStyle &Style, F &&Matches, SmallVector< WhitespaceManager::Change, 16 > &Changes, unsigned StartAt)
 

Variables

const char * StyleOptionHelpDescription
 Description to be used for help text for a llvm::cl option for specifying format style. More...
 
static const char *const Blanks = " \t\v\f\r"
 

Enumeration Type Documentation

Enumerator
BK_Unknown 
BK_Block 
BK_BracedInit 

Definition at line 107 of file FormatToken.h.

Enumerator
FD_Unformatted 
FD_Continue 
FD_Break 

Definition at line 112 of file FormatToken.h.

Enumerator
NORMAL 
TEMPLATE_STRING 
TOKEN_STASHED 

Definition at line 31 of file FormatTokenLexer.h.

Enumerator
LT_Invalid 
LT_ImportStatement 
LT_ObjCDecl 
LT_ObjCMethodDecl 
LT_ObjCProperty 
LT_Other 
LT_PreprocessorDirective 
LT_VirtualFunctionDecl 

Definition at line 27 of file TokenAnnotator.h.

Enumerator
PPK_BinPacked 
PPK_OnePerLine 
PPK_Inconclusive 

Definition at line 110 of file FormatToken.h.

Enumerator
Success 
Error 
Unsuitable 

Definition at line 35 of file Format.h.

Enumerator
NUM_TOKEN_TYPES 

Definition at line 96 of file FormatToken.h.

Function Documentation

static bool clang::format::affectsRange ( ArrayRef< tooling::Range >  Ranges,
unsigned  Start,
unsigned  End 
)
static

Definition at line 1310 of file Format.cpp.

Referenced by sortCppIncludes().

template<typename F >
static unsigned clang::format::AlignTokens ( const FormatStyle &  Style,
F &&  Matches,
SmallVector< WhitespaceManager::Change, 16 > &  Changes,
unsigned  StartAt 
)
static
template<typename F >
static void clang::format::AlignTokenSequence ( unsigned  Start,
unsigned  End,
unsigned  Column,
F &&  Matches,
SmallVector< WhitespaceManager::Change, 16 > &  Changes 
)
static

Definition at line 229 of file WhitespaceManager.cpp.

References End, Matches, and clang::prec::Shift.

Referenced by AlignTokens().

tooling::Replacements clang::format::cleanup ( const FormatStyle Style,
StringRef  Code,
ArrayRef< tooling::Range >  Ranges,
StringRef  FileName = "<stdin>" 
)
llvm::Expected< tooling::Replacements > clang::format::cleanupAroundReplacements ( StringRef  Code,
const tooling::Replacements &  Replaces,
const FormatStyle Style 
)

Returns the replacements corresponding to applying Replaces and cleaning up the code after that on success; otherwise, return an llvm::Error carrying llvm::StringError.

This also supports inserting/deleting C++ #include directives:

  • If a replacement has offset UINT_MAX, length 0, and a replacement text that is an #include directive, this will insert the #include into the correct block in the Code. When searching for points to insert new header, this ignores #include's after the #include block(s) in the beginning of a file to avoid inserting headers into code sections where new #include's should not be added by default. These code sections include:
    • raw string literals (containing #include).
    • if blocks.
    • Special #include's among declarations (e.g. functions).
  • If a replacement has offset UINT_MAX, length 1, and a replacement text that is the name of the header to be removed, the header will be removed from Code if it exists.

Definition at line 1875 of file Format.cpp.

References cleanup(), FileName, processReplacements(), and Style().

static unsigned clang::format::CodePointsBetween ( const FormatToken *  Begin,
const FormatToken *  End 
)
static
clang::format::Column ( )
std::string clang::format::configurationAsText ( const FormatStyle Style)

Gets configuration in a YAML string.

Definition at line 864 of file Format.cpp.

References expandPresets(), and Text.

static bool clang::format::continuesLineCommentSection ( const FormatToken &  FormatTok,
const UnwrappedLine &  Line,
llvm::Regex &  CommentPragmasRegex 
)
static
clang::format::Encoding ( Encoding  )

Referenced by getCommentSplit(), and getStringSplit().

static FormatStyle clang::format::expandPresets ( const FormatStyle Style)
static
static std::pair<unsigned, unsigned> clang::format::FindCursorIndex ( const SmallVectorImpl< IncludeDirective > &  Includes,
const SmallVectorImpl< unsigned > &  Indices,
unsigned  Cursor 
)
static

Definition at line 1328 of file Format.cpp.

References UINT_MAX.

Referenced by sortCppIncludes().

clang::format::FirstInLineIndex ( )
tooling::Replacements clang::format::fixNamespaceEndComments ( const FormatStyle Style,
StringRef  Code,
ArrayRef< tooling::Range >  Ranges,
StringRef  FileName = "<stdin>" 
)

Fix namespace end comments in the given Ranges in Code.

Returns the Replacements that fix the namespace comments in all Ranges in Code.

Definition at line 1970 of file Format.cpp.

References clang::format::Environment::CreateVirtualEnvironment(), and clang::format::TokenAnalyzer::process().

llvm::Expected< tooling::Replacements > clang::format::formatReplacements ( StringRef  Code,
const tooling::Replacements &  Replaces,
const FormatStyle Style 
)

Returns the replacements corresponding to applying and formatting Replaces on success; otheriwse, return an llvm::Error carrying llvm::StringError.

Definition at line 1578 of file Format.cpp.

References FileName, processReplacements(), reformat(), sortIncludes(), and Style().

Referenced by clang::tooling::formatAndApplyAllReplacements().

clang::format::FormattingDisabled ( false  )
FormatStyle clang::format::getChromiumStyle ( FormatStyle::LanguageKind  Language)
static BreakableToken::Split clang::format::getCommentSplit ( StringRef  Text,
unsigned  ContentStartColumn,
unsigned  ColumnLimit,
unsigned  TabWidth,
encoding::Encoding  Encoding 
)
static
LangOptions clang::format::getFormattingLangOpts ( const FormatStyle Style = getLLVMStyle())

Returns the LangOpts that the formatter expects you to set.

Parameters
Styledetermines specific settings for lexing mode.

Definition at line 1990 of file Format.cpp.

References clang::format::FormatStyle::isCpp(), clang::format::FormatStyle::LS_Cpp03, and clang::format::FormatStyle::Standard.

Referenced by MacroBlockEndRegex().

FormatStyle clang::format::getGNUStyle ( )
FormatStyle clang::format::getGoogleStyle ( FormatStyle::LanguageKind  Language)

Returns a format style complying with one of Google's style guides: http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml.

http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml. https://developers.google.com/protocol-buffers/docs/style.

Definition at line 634 of file Format.cpp.

References clang::format::FormatStyle::AccessModifierOffset, clang::format::FormatStyle::AlignAfterOpenBracket, clang::format::FormatStyle::AlignEscapedNewlines, clang::format::FormatStyle::AlignOperands, clang::format::FormatStyle::AlignTrailingComments, clang::format::FormatStyle::AllowShortFunctionsOnASingleLine, clang::format::FormatStyle::AllowShortIfStatementsOnASingleLine, clang::format::FormatStyle::AllowShortLoopsOnASingleLine, clang::format::FormatStyle::AlwaysBreakBeforeMultilineStrings, clang::format::FormatStyle::AlwaysBreakTemplateDeclarations, clang::format::FormatStyle::BAS_AlwaysBreak, clang::format::FormatStyle::BAS_DontAlign, clang::format::FormatStyle::BOS_NonAssignment, clang::format::FormatStyle::BreakBeforeBinaryOperators, clang::format::FormatStyle::BreakBeforeTernaryOperators, clang::format::FormatStyle::ColumnLimit, clang::format::FormatStyle::CommentPragmas, clang::format::FormatStyle::ConstructorInitializerAllOnOneLineOrOnePerLine, clang::format::FormatStyle::DerivePointerAlignment, clang::format::FormatStyle::ENAS_Left, getLLVMStyle(), clang::format::FormatStyle::IncludeCategories, clang::format::FormatStyle::IncludeIsMainRegex, clang::format::FormatStyle::IndentCaseLabels, clang::format::FormatStyle::JavaScriptQuotes, clang::format::FormatStyle::JavaScriptWrapImports, clang::format::FormatStyle::JSQS_Single, clang::format::FormatStyle::KeepEmptyLinesAtTheStartOfBlocks, clang::format::FormatStyle::Language, clang::format::FormatStyle::LK_Java, clang::format::FormatStyle::LK_JavaScript, clang::format::FormatStyle::LK_ObjC, clang::format::FormatStyle::LK_Proto, clang::format::FormatStyle::LK_TextProto, clang::format::FormatStyle::LS_Auto, clang::format::FormatStyle::MaxEmptyLinesToKeep, clang::format::FormatStyle::NamespaceIndentation, clang::format::FormatStyle::NI_All, clang::format::FormatStyle::ObjCSpaceAfterProperty, clang::format::FormatStyle::ObjCSpaceBeforeProtocolList, clang::format::FormatStyle::PAS_Left, clang::format::FormatStyle::PenaltyBreakBeforeFirstCallParameter, clang::format::FormatStyle::PenaltyReturnTypeOnItsOwnLine, clang::format::FormatStyle::PointerAlignment, clang::format::FormatStyle::SFS_Empty, clang::format::FormatStyle::SFS_None, clang::format::FormatStyle::SpaceAfterCStyleCast, clang::format::FormatStyle::SpacesBeforeTrailingComments, clang::format::FormatStyle::SpacesInContainerLiterals, and clang::format::FormatStyle::Standard.

Referenced by getChromiumStyle(), and getPredefinedStyle().

static FormatStyle::LanguageKind clang::format::getLanguageByFileName ( StringRef  FileName)
static
StringRef clang::format::getLanguageName ( FormatStyle::LanguageKind  Language)
inline
static unsigned clang::format::getLengthToMatchingParen ( const FormatToken &  Tok)
static
static unsigned clang::format::getLengthToNextOperator ( const FormatToken &  Tok)
static
static StringRef clang::format::getLineCommentIndentPrefix ( StringRef  Comment)
static
FormatStyle clang::format::getLLVMStyle ( )

Returns a format style complying with the LLVM coding standards: http://llvm.org/docs/CodingStandards.html.

Definition at line 542 of file Format.cpp.

References clang::format::FormatStyle::AccessModifierOffset, clang::format::FormatStyle::AlignAfterOpenBracket, clang::format::FormatStyle::AlignConsecutiveAssignments, clang::format::FormatStyle::AlignConsecutiveDeclarations, clang::format::FormatStyle::AlignEscapedNewlines, clang::format::FormatStyle::AlignOperands, clang::format::FormatStyle::AlignTrailingComments, clang::format::FormatStyle::AllowAllParametersOfDeclarationOnNextLine, clang::format::FormatStyle::AllowShortBlocksOnASingleLine, clang::format::FormatStyle::AllowShortCaseLabelsOnASingleLine, clang::format::FormatStyle::AllowShortFunctionsOnASingleLine, clang::format::FormatStyle::AllowShortIfStatementsOnASingleLine, clang::format::FormatStyle::AllowShortLoopsOnASingleLine, clang::format::FormatStyle::AlwaysBreakAfterDefinitionReturnType, clang::format::FormatStyle::AlwaysBreakAfterReturnType, clang::format::FormatStyle::AlwaysBreakBeforeMultilineStrings, clang::format::FormatStyle::AlwaysBreakTemplateDeclarations, clang::prec::Assignment, clang::format::FormatStyle::BAS_Align, clang::format::FormatStyle::BCIS_BeforeColon, clang::format::FormatStyle::BinPackArguments, clang::format::FormatStyle::BinPackParameters, clang::format::FormatStyle::BOS_None, clang::format::FormatStyle::BraceWrapping, clang::format::FormatStyle::BreakAfterJavaFieldAnnotations, clang::format::FormatStyle::BreakBeforeBinaryOperators, clang::format::FormatStyle::BreakBeforeBraces, clang::format::FormatStyle::BreakBeforeInheritanceComma, clang::format::FormatStyle::BreakBeforeTernaryOperators, clang::format::FormatStyle::BreakConstructorInitializers, clang::format::FormatStyle::BreakStringLiterals, clang::format::FormatStyle::BS_Attach, clang::format::FormatStyle::ColumnLimit, clang::format::FormatStyle::CommentPragmas, clang::format::FormatStyle::CompactNamespaces, clang::format::FormatStyle::ConstructorInitializerAllOnOneLineOrOnePerLine, clang::format::FormatStyle::ConstructorInitializerIndentWidth, clang::format::FormatStyle::ContinuationIndentWidth, clang::format::FormatStyle::Cpp11BracedListStyle, clang::format::FormatStyle::DerivePointerAlignment, clang::format::FormatStyle::DisableFormat, clang::format::FormatStyle::DRTBS_None, clang::format::FormatStyle::ENAS_Right, clang::format::FormatStyle::ExperimentalAutoDetectBinPacking, clang::format::FormatStyle::FixNamespaceComments, clang::format::FormatStyle::ForEachMacros, clang::format::FormatStyle::IncludeCategories, clang::format::FormatStyle::IncludeIsMainRegex, clang::format::FormatStyle::IndentCaseLabels, clang::format::FormatStyle::IndentWidth, clang::format::FormatStyle::IndentWrappedFunctionNames, clang::format::FormatStyle::JavaScriptQuotes, clang::format::FormatStyle::JavaScriptWrapImports, clang::format::FormatStyle::JSQS_Leave, clang::format::FormatStyle::KeepEmptyLinesAtTheStartOfBlocks, clang::format::FormatStyle::Language, clang::format::FormatStyle::LK_Cpp, clang::format::FormatStyle::LS_Cpp11, clang::format::FormatStyle::MaxEmptyLinesToKeep, clang::format::FormatStyle::NamespaceIndentation, clang::format::FormatStyle::NI_None, clang::format::FormatStyle::ObjCBlockIndentWidth, clang::format::FormatStyle::ObjCSpaceAfterProperty, clang::format::FormatStyle::ObjCSpaceBeforeProtocolList, clang::format::FormatStyle::PAS_Right, clang::format::FormatStyle::PenaltyBreakAssignment, clang::format::FormatStyle::PenaltyBreakBeforeFirstCallParameter, clang::format::FormatStyle::PenaltyBreakComment, clang::format::FormatStyle::PenaltyBreakFirstLessLess, clang::format::FormatStyle::PenaltyBreakString, clang::format::FormatStyle::PenaltyExcessCharacter, clang::format::FormatStyle::PenaltyReturnTypeOnItsOwnLine, clang::format::FormatStyle::PointerAlignment, clang::format::FormatStyle::ReflowComments, clang::format::FormatStyle::RTBS_None, clang::format::FormatStyle::SBPO_ControlStatements, clang::format::FormatStyle::SFS_All, clang::format::FormatStyle::SortIncludes, clang::format::FormatStyle::SortUsingDeclarations, clang::format::FormatStyle::SpaceAfterCStyleCast, clang::format::FormatStyle::SpaceAfterTemplateKeyword, clang::format::FormatStyle::SpaceBeforeAssignmentOperators, clang::format::FormatStyle::SpaceBeforeParens, clang::format::FormatStyle::SpaceInEmptyParentheses, clang::format::FormatStyle::SpacesBeforeTrailingComments, clang::format::FormatStyle::SpacesInAngles, clang::format::FormatStyle::SpacesInContainerLiterals, clang::format::FormatStyle::SpacesInCStyleCastParentheses, clang::format::FormatStyle::SpacesInParentheses, clang::format::FormatStyle::SpacesInSquareBrackets, clang::format::FormatStyle::Standard, clang::format::FormatStyle::TabWidth, clang::format::FormatStyle::UseTab, and clang::format::FormatStyle::UT_Never.

Referenced by getGNUStyle(), getGoogleStyle(), getMozillaStyle(), getNoStyle(), getPredefinedStyle(), getStyle(), and getWebKitStyle().

FormatStyle clang::format::getMozillaStyle ( )

Returns a format style complying with Mozilla's style guide: https://developer.mozilla.org/en-US/docs/Developer_Guide/Coding_Style.

Definition at line 724 of file Format.cpp.

References clang::format::FormatStyle::AllowAllParametersOfDeclarationOnNextLine, clang::format::FormatStyle::AllowShortFunctionsOnASingleLine, clang::format::FormatStyle::AlwaysBreakAfterDefinitionReturnType, clang::format::FormatStyle::AlwaysBreakAfterReturnType, clang::format::FormatStyle::AlwaysBreakTemplateDeclarations, clang::format::FormatStyle::BCIS_BeforeComma, clang::format::FormatStyle::BinPackArguments, clang::format::FormatStyle::BinPackParameters, clang::format::FormatStyle::BreakBeforeBraces, clang::format::FormatStyle::BreakBeforeInheritanceComma, clang::format::FormatStyle::BreakConstructorInitializers, clang::format::FormatStyle::BS_Mozilla, clang::format::FormatStyle::ConstructorInitializerIndentWidth, clang::format::FormatStyle::ContinuationIndentWidth, clang::format::FormatStyle::Cpp11BracedListStyle, clang::format::FormatStyle::DRTBS_TopLevel, clang::format::FormatStyle::FixNamespaceComments, getLLVMStyle(), clang::format::FormatStyle::IndentCaseLabels, clang::format::FormatStyle::ObjCSpaceAfterProperty, clang::format::FormatStyle::ObjCSpaceBeforeProtocolList, clang::format::FormatStyle::PAS_Left, clang::format::FormatStyle::PenaltyReturnTypeOnItsOwnLine, clang::format::FormatStyle::PointerAlignment, clang::format::FormatStyle::RTBS_TopLevel, clang::format::FormatStyle::SFS_Inline, and clang::format::FormatStyle::SpaceAfterTemplateKeyword.

Referenced by getPredefinedStyle().

FormatStyle clang::format::getNoStyle ( )

Returns style indicating formatting should be not applied at all.

Definition at line 786 of file Format.cpp.

References clang::format::FormatStyle::DisableFormat, getLLVMStyle(), clang::format::FormatStyle::SortIncludes, and clang::format::FormatStyle::SortUsingDeclarations.

Referenced by getPredefinedStyle(), and getStyle().

const std::error_category & clang::format::getParseCategory ( )

Definition at line 461 of file Format.cpp.

Referenced by make_error_code().

bool clang::format::getPredefinedStyle ( StringRef  Name,
FormatStyle::LanguageKind  Language,
FormatStyle Style 
)

Gets a predefined style for the specified language by name.

Currently supported names: LLVM, Google, Chromium, Mozilla. Names are compared case-insensitively.

Returns true if the Style has been set.

Definition at line 794 of file Format.cpp.

References getChromiumStyle(), getGNUStyle(), getGoogleStyle(), getLLVMStyle(), getMozillaStyle(), getNoStyle(), getWebKitStyle(), and clang::format::FormatStyle::Language.

Referenced by getStyle(), and llvm::yaml::MappingTraits< FormatStyle >::mapping().

static BreakableToken::Split clang::format::getStringSplit ( StringRef  Text,
unsigned  UsedColumns,
unsigned  ColumnLimit,
unsigned  TabWidth,
encoding::Encoding  Encoding 
)
static
llvm::Expected< FormatStyle > clang::format::getStyle ( StringRef  StyleName,
StringRef  FileName,
StringRef  FallbackStyle,
StringRef  Code = "",
vfs::FileSystem *  FS = nullptr 
)

Construct a FormatStyle based on StyleName.

StyleName can take several forms:

  • "{<key>: <value>, ...}" - Set specic style parameters.
  • "<style name>" - One of the style names supported by getPredefinedStyle().
  • "file" - Load style configuration from a file called .clang-format located in one of the parent directories of FileName or the current directory if FileName is empty.
Parameters
[in]StyleNameStyle name to interpret according to the description above.
[in]FileNamePath to start search for .clang-format if StyleName == "file".
[in]FallbackStyleThe name of a predefined style used to fallback to in case StyleName is "file" and no file can be found.
[in]CodeThe actual code to be formatted. Used to determine the language if the filename isn't sufficient.
[in]FSThe underlying file system, in which the file resides. By default, the file system is the real file system.
Returns
FormatStyle as specified by StyleName. If StyleName is "file" and no file is found, returns FallbackStyle. If no style could be determined, returns an Error.

Definition at line 2033 of file Format.cpp.

References clang::vfs::FileSystem::getBufferForFile(), getLanguageByFileName(), getLanguageName(), getLLVMStyle(), getNoStyle(), getPredefinedStyle(), clang::vfs::getRealFileSystem(), clang::format::FormatStyle::Language, clang::format::FormatStyle::LK_Cpp, clang::format::FormatStyle::LK_ObjC, make_string_error(), clang::vfs::FileSystem::makeAbsolute(), parseConfiguration(), clang::vfs::FileSystem::status(), Status, Style(), and Unsuitable.

Referenced by clang::tooling::formatAndApplyAllReplacements().

const char * clang::format::getTokenTypeName ( TokenType  Type)

Determines the name of a token type.

Definition at line 25 of file FormatToken.cpp.

References LIST_TOKEN_TYPES, NUM_TOKEN_TYPES, and TokNames.

FormatStyle clang::format::getWebKitStyle ( )
clang::format::ID ( ID  )

Referenced by MacroBlockEndRegex().

clang::format::IdentTable ( getFormattingLangOpts(Style )

Referenced by MacroBlockEndRegex().

static bool clang::format::isAllmanBrace ( const FormatToken &  Tok)
static
static bool clang::format::IsBlank ( char  C)
static

Definition at line 30 of file BreakableToken.cpp.

Referenced by getStringSplit().

static bool clang::format::isFunctionDeclarationName ( const FormatToken &  Current,
const AnnotatedLine &  Line 
)
static
static bool clang::format::isGoogScope ( const UnwrappedLine &  Line)
static

Definition at line 505 of file UnwrappedLineParser.cpp.

References I, and clang::format::UnwrappedLine::Tokens.

static bool clang::format::isIIFE ( const UnwrappedLine &  Line,
const AdditionalKeywords &  Keywords 
)
static
static bool clang::format::isJSDeclOrStmt ( const AdditionalKeywords &  Keywords,
const FormatToken *  FormatTok 
)
static
bool clang::format::isMpegTS ( StringRef  Code)

Definition at line 1535 of file Format.cpp.

Referenced by reformat(), and sortIncludes().

clang::format::Keywords ( IdentTable  )
clang::format::MacroBlockBeginRegex ( Style.  MacroBlockBegin)
clang::format::MacroBlockEndRegex ( Style.  MacroBlockEnd)

Definition at line 34 of file FormatTokenLexer.cpp.

References getFormattingLangOpts(), ID(), IdentTable(), SourceMgr(), and Style().

std::error_code clang::format::make_error_code ( ParseError  e)

Definition at line 465 of file Format.cpp.

References getParseCategory().

Referenced by parseConfiguration().

llvm::Error clang::format::make_string_error ( const llvm::Twine &  Message)
inline

Definition at line 469 of file Format.cpp.

Referenced by getStyle().

static unsigned clang::format::maxNestingDepth ( const AnnotatedLine &  Line)
static
static bool clang::format::mayReflowContent ( StringRef  Content)
static
static bool clang::format::mustBeJSIdent ( const AdditionalKeywords &  Keywords,
const FormatToken *  FormatTok 
)
static
static bool clang::format::mustBeJSIdentOrValue ( const AdditionalKeywords &  Keywords,
const FormatToken *  FormatTok 
)
static
static bool clang::format::opensProtoMessageField ( const FormatToken &  LessTok,
const FormatStyle &  Style 
)
static
bool clang::format::operator< ( const JsModuleReference &  LHS,
const JsModuleReference &  RHS 
)
std::error_code clang::format::parseConfiguration ( StringRef  Text,
FormatStyle Style 
)

Parse configuration from YAML-formatted text.

Style->Language is used to get the base style, if the BasedOnStyle option is present.

When BasedOnStyle is not present, options not present in the YAML document, are retained in Style.

Definition at line 818 of file Format.cpp.

References Error, Input, clang::format::FormatStyle::Language, clang::format::FormatStyle::LK_None, make_error_code(), Success, and Unsuitable.

Referenced by getStyle().

static LLVM_ATTRIBUTE_UNUSED void clang::format::printDebugInfo ( const UnwrappedLine &  Line,
StringRef  Prefix = "" 
)
static
template<typename T >
static llvm::Expected<tooling::Replacements> clang::format::processReplacements ( ProcessFunc,
StringRef  Code,
const tooling::Replacements &  Replaces,
const FormatStyle Style 
)
static
tooling::Replacements clang::format::reformat ( const FormatStyle Style,
StringRef  Code,
ArrayRef< tooling::Range >  Ranges,
StringRef  FileName = "<stdin>",
FormattingAttemptStatus *  Status = nullptr 
)

Reformats the given Ranges in Code.

Each range is extended on either end to its next bigger logic unit, i.e. everything that might influence its formatting or might be influenced by its formatting.

Returns the Replacements necessary to make all Ranges comply with Style.

If Status is non-null, its value will be populated with the status of this formatting attempt. See FormattingAttemptStatus.

Definition at line 1890 of file Format.cpp.

References clang::tooling::applyAllReplacements(), clang::tooling::calculateRangesAfterReplacements(), clang::format::Environment::CreateVirtualEnvironment(), clang::format::FormatStyle::DisableFormat, E, expandPresets(), clang::format::FormatStyle::FixNamespaceComments, I, isMpegTS(), clang::format::FormatStyle::JavaScriptQuotes, clang::format::FormatStyle::JSQS_Leave, clang::format::FormatStyle::Language, clang::format::FormatStyle::LK_Cpp, clang::format::FormatStyle::LK_JavaScript, clang::tooling::Replacements::merge(), clang::None, clang::format::TokenAnalyzer::process(), and clang::format::FormatStyle::SortUsingDeclarations.

Referenced by formatReplacements(), and reformat().

tooling::Replacements clang::format::reformat ( const FormatStyle Style,
StringRef  Code,
ArrayRef< tooling::Range >  Ranges,
StringRef  FileName,
bool IncompleteFormat 
)

Same as above, except if IncompleteFormat is non-null, its value will be set to true if any of the affected ranges were not formatted due to a non-recoverable syntax error.

Definition at line 1960 of file Format.cpp.

References clang::format::FormattingAttemptStatus::FormatComplete, reformat(), and Status.

static bool clang::format::ShouldBreakBeforeBrace ( const FormatStyle &  Style,
const FormatToken &  InitialToken 
)
static
static void clang::format::sortCppIncludes ( const FormatStyle Style,
const SmallVectorImpl< IncludeDirective > &  Includes,
ArrayRef< tooling::Range >  Ranges,
StringRef  FileName,
tooling::Replacements &  Replaces,
unsigned Cursor 
)
static
tooling::Replacements clang::format::sortCppIncludes ( const FormatStyle Style,
StringRef  Code,
ArrayRef< tooling::Range >  Ranges,
StringRef  FileName,
tooling::Replacements &  Replaces,
unsigned Cursor 
)

Definition at line 1475 of file Format.cpp.

References Category, Line, Matches, and sortCppIncludes().

tooling::Replacements clang::format::sortIncludes ( const FormatStyle Style,
StringRef  Code,
ArrayRef< tooling::Range >  Ranges,
StringRef  FileName,
unsigned Cursor = nullptr 
)

Returns the replacements necessary to sort all #include blocks that are affected by Ranges.

Definition at line 1542 of file Format.cpp.

References isMpegTS(), clang::format::FormatStyle::Language, sortCppIncludes(), clang::format::FormatStyle::SortIncludes, and sortJavaScriptImports().

Referenced by formatReplacements().

tooling::Replacements clang::format::sortJavaScriptImports ( const FormatStyle &  Style,
StringRef  Code,
ArrayRef< tooling::Range >  Ranges,
StringRef  FileName 
)
tooling::Replacements clang::format::sortUsingDeclarations ( const FormatStyle Style,
StringRef  Code,
ArrayRef< tooling::Range >  Ranges,
StringRef  FileName = "<stdin>" 
)

Sort consecutive using declarations in the given Ranges in Code.

Returns the Replacements that sort the using declarations in all Ranges in Code.

Definition at line 1980 of file Format.cpp.

References clang::format::Environment::CreateVirtualEnvironment(), and clang::format::TokenAnalyzer::process().

clang::format::SourceMgr ( SourceMgr  )
static bool clang::format::startsNextParameter ( const FormatToken &  Current,
const FormatStyle &  Style 
)
static
static bool clang::format::startsSegmentOfBuilderTypeCall ( const FormatToken &  Tok)
static
clang::format::Style ( Style  )
*p Token must be a comment *bool clang::format::switchesFormatting ( const FormatToken &  Token)
static bool clang::format::tokenCanStartNewLine ( const clang::Token Tok)
static

Definition at line 712 of file UnwrappedLineParser.cpp.

References clang::Token::isNot().

clang::format::TrailingWhitespace ( )

Variable Documentation

const char* const clang::format::Blanks = " \t\v\f\r"
static
const char * clang::format::StyleOptionHelpDescription
Initial value:
=
"Coding style, currently supports:\n"
" LLVM, Google, Chromium, Mozilla, WebKit.\n"
"Use -style=file to load style configuration from\n"
".clang-format file located in one of the parent\n"
"directories of the source file (or current\n"
"directory for stdin).\n"
"Use -style=\"{key: value, ...}\" to set specific\n"
"parameters, e.g.:\n"
" -style=\"{BasedOnStyle: llvm, IndentWidth: 8}\""

Description to be used for help text for a llvm::cl option for specifying format style.

The description is closely related to the operation of getStyle().

Definition at line 2007 of file Format.cpp.