clang  3.9.0
Public Member Functions | Public Attributes | List of all members
clang::PrintingPolicy Struct Reference

Describes how types, statements, expressions, and declarations should be printed. More...

#include <PrettyPrinter.h>

Collaboration diagram for clang::PrintingPolicy:
[legend]

Public Member Functions

 PrintingPolicy (const LangOptions &LO)
 Create a default printing policy for the specified language. More...
 
void adjustForCPlusPlus ()
 Adjust this printing policy for cases where it's known that we're printing C++ code (for instance, if AST dumping reaches a C++-only construct). More...
 

Public Attributes

unsigned Indentation: 8
 The number of spaces to use to indent each line. More...
 
bool SuppressSpecifiers: 1
 Whether we should suppress printing of the actual specifiers for the given type or declaration. More...
 
bool SuppressTagKeyword: 1
 Whether type printing should skip printing the tag keyword. More...
 
bool IncludeTagDefinition: 1
 When true, include the body of a tag definition. More...
 
bool SuppressScope: 1
 Suppresses printing of scope specifiers. More...
 
bool SuppressUnwrittenScope: 1
 Suppress printing parts of scope specifiers that don't need to be written, e.g., for inline or anonymous namespaces. More...
 
bool SuppressInitializers: 1
 Suppress printing of variable initializers. More...
 
bool ConstantArraySizeAsWritten: 1
 Whether we should print the sizes of constant array expressions as written in the sources. More...
 
bool AnonymousTagLocations: 1
 When printing an anonymous tag name, also print the location of that entity (e.g., "enum <anonymous at t.h:10:5>"). More...
 
unsigned SuppressStrongLifetime: 1
 When true, suppress printing of the __strong lifetime qualifier in ARC. More...
 
unsigned SuppressLifetimeQualifiers: 1
 When true, suppress printing of lifetime qualifier in ARC. More...
 
unsigned SuppressTemplateArgsInCXXConstructors: 1
 When true, suppresses printing template arguments in names of C++ constructors. More...
 
unsigned Bool: 1
 Whether we can use 'bool' rather than '_Bool' (even if the language doesn't actually have 'bool', because, e.g., it is defined as a macro). More...
 
unsigned Restrict: 1
 Whether we can use 'restrict' rather than '__restrict'. More...
 
unsigned Alignof: 1
 Whether we can use 'alignof' rather than '__alignof'. More...
 
unsigned UnderscoreAlignof: 1
 Whether we can use '_Alignof' rather than '__alignof'. More...
 
unsigned UseVoidForZeroParams: 1
 Whether we should use '(void)' rather than '()' for a function prototype with zero parameters. More...
 
unsigned TerseOutput: 1
 Provide a 'terse' output. More...
 
unsigned PolishForDeclaration: 1
 When true, do certain refinement needed for producing proper declaration tag; such as, do not print attributes attached to the declaration. More...
 
unsigned Half: 1
 When true, print the half-precision floating-point type as 'half' instead of '__fp16'. More...
 
unsigned MSWChar: 1
 When true, print the built-in wchar_t type as __wchar_t. More...
 
unsigned IncludeNewlines: 1
 When true, include newlines after statements like "break", etc. More...
 
bool MSVCFormatting: 1
 Use whitespace and punctuation like MSVC does. More...
 

Detailed Description

Describes how types, statements, expressions, and declarations should be printed.

This type is intended to be small and suitable for passing by value. It is very frequently copied.

Definition at line 38 of file PrettyPrinter.h.

Constructor & Destructor Documentation

clang::PrintingPolicy::PrintingPolicy ( const LangOptions LO)
inline

Create a default printing policy for the specified language.

Definition at line 40 of file PrettyPrinter.h.

Member Function Documentation

void clang::PrintingPolicy::adjustForCPlusPlus ( )
inline

Adjust this printing policy for cases where it's known that we're printing C++ code (for instance, if AST dumping reaches a C++-only construct).

This should not be used if a real LangOptions object is available.

Definition at line 59 of file PrettyPrinter.h.

References Bool, SuppressTagKeyword, and UseVoidForZeroParams.

Referenced by clang::DeclarationName::print(), and clang::printCXXConstructorDestructorName().

Member Data Documentation

unsigned clang::PrintingPolicy::Alignof

Whether we can use 'alignof' rather than '__alignof'.

Definition at line 167 of file PrettyPrinter.h.

bool clang::PrintingPolicy::AnonymousTagLocations

When printing an anonymous tag name, also print the location of that entity (e.g., "enum <anonymous at t.h:10:5>").

Otherwise, just prints "(anonymous)" for the name.

Definition at line 145 of file PrettyPrinter.h.

Referenced by getCompletionPrintingPolicy().

unsigned clang::PrintingPolicy::Bool

Whether we can use 'bool' rather than '_Bool' (even if the language doesn't actually have 'bool', because, e.g., it is defined as a macro).

Definition at line 161 of file PrettyPrinter.h.

Referenced by adjustForCPlusPlus(), clang::BuiltinType::getName(), clang::Sema::getPrintingPolicy(), and clang::DeclSpec::getSpecifierName().

bool clang::PrintingPolicy::ConstantArraySizeAsWritten

Whether we should print the sizes of constant array expressions as written in the sources.

This flag determines whether array types declared as

int a[4+10*10];
char a[] = "A string";

will be printed as written or as follows:

int a[104];
char a[9] = "A string";

Definition at line 140 of file PrettyPrinter.h.

unsigned clang::PrintingPolicy::Half

When true, print the half-precision floating-point type as 'half' instead of '__fp16'.

Definition at line 190 of file PrettyPrinter.h.

Referenced by clang::BuiltinType::getName().

unsigned clang::PrintingPolicy::IncludeNewlines

When true, include newlines after statements like "break", etc.

Definition at line 197 of file PrettyPrinter.h.

bool clang::PrintingPolicy::IncludeTagDefinition

When true, include the body of a tag definition.

This is used to place the definition of a struct in the middle of another declaration as with:

typedef struct { int x, y; } Point;

Definition at line 102 of file PrettyPrinter.h.

unsigned clang::PrintingPolicy::Indentation

The number of spaces to use to indent each line.

Definition at line 66 of file PrettyPrinter.h.

bool clang::PrintingPolicy::MSVCFormatting

Use whitespace and punctuation like MSVC does.

In particular, this prints anonymous namespaces as `anonymous namespace' and does not insert spaces after template arguments.

Definition at line 202 of file PrettyPrinter.h.

Referenced by printIntegral(), and clang::NamedDecl::printQualifiedName().

unsigned clang::PrintingPolicy::MSWChar

When true, print the built-in wchar_t type as __wchar_t.

For use in Microsoft mode when wchar_t is not available.

Definition at line 194 of file PrettyPrinter.h.

Referenced by clang::BuiltinType::getName(), and clang::DeclSpec::getSpecifierName().

unsigned clang::PrintingPolicy::PolishForDeclaration

When true, do certain refinement needed for producing proper declaration tag; such as, do not print attributes attached to the declaration.

Definition at line 186 of file PrettyPrinter.h.

unsigned clang::PrintingPolicy::Restrict

Whether we can use 'restrict' rather than '__restrict'.

Definition at line 164 of file PrettyPrinter.h.

bool clang::PrintingPolicy::SuppressInitializers

Suppress printing of variable initializers.

This flag is used when printing the loop variable in a for-range statement. For example, given:

for (auto x : coll)

SuppressInitializers will be true when printing "auto x", so that the internal initializer constructed for x will not be printed.

Definition at line 122 of file PrettyPrinter.h.

unsigned clang::PrintingPolicy::SuppressLifetimeQualifiers

When true, suppress printing of lifetime qualifier in ARC.

Definition at line 153 of file PrettyPrinter.h.

bool clang::PrintingPolicy::SuppressScope

Suppresses printing of scope specifiers.

Definition at line 105 of file PrettyPrinter.h.

Referenced by clang::TypeName::getFullyQualifiedName(), and clang::NestedNameSpecifier::print().

bool clang::PrintingPolicy::SuppressSpecifiers

Whether we should suppress printing of the actual specifiers for the given type or declaration.

This flag is only used when we are printing declarators beyond the first declarator within a declaration group. For example, given:

const int *x, *y;

SuppressSpecifiers will be false when printing the declaration for "x", so that we will print "int *x"; it will be true when we print "y", so that we suppress printing the "const int" type specifier and instead only print the "*y".

Definition at line 82 of file PrettyPrinter.h.

unsigned clang::PrintingPolicy::SuppressStrongLifetime

When true, suppress printing of the __strong lifetime qualifier in ARC.

Definition at line 149 of file PrettyPrinter.h.

Referenced by getCompletionPrintingPolicy(), clang::TemplateArgument::print(), and rewriteToObjCProperty().

bool clang::PrintingPolicy::SuppressTagKeyword

Whether type printing should skip printing the tag keyword.

This is used when printing the inner type of elaborated types, (as the tag keyword is part of the elaborated type):

struct Geometry::Point;

Definition at line 92 of file PrettyPrinter.h.

Referenced by adjustForCPlusPlus().

unsigned clang::PrintingPolicy::SuppressTemplateArgsInCXXConstructors

When true, suppresses printing template arguments in names of C++ constructors.

Definition at line 157 of file PrettyPrinter.h.

Referenced by clang::printCXXConstructorDestructorName(), and clang::index::printSymbolName().

bool clang::PrintingPolicy::SuppressUnwrittenScope

Suppress printing parts of scope specifiers that don't need to be written, e.g., for inline or anonymous namespaces.

Definition at line 109 of file PrettyPrinter.h.

Referenced by getCompletionPrintingPolicy(), and clang::NamedDecl::printQualifiedName().

unsigned clang::PrintingPolicy::TerseOutput

Provide a 'terse' output.

For example, in this mode we don't print function bodies, class members, declarations inside namespaces etc. Effectively, this should print only the requested declaration.

Definition at line 181 of file PrettyPrinter.h.

Referenced by clang::LocationContext::dumpStack().

unsigned clang::PrintingPolicy::UnderscoreAlignof

Whether we can use '_Alignof' rather than '__alignof'.

Definition at line 170 of file PrettyPrinter.h.

unsigned clang::PrintingPolicy::UseVoidForZeroParams

Whether we should use '(void)' rather than '()' for a function prototype with zero parameters.

Definition at line 174 of file PrettyPrinter.h.

Referenced by adjustForCPlusPlus().


The documentation for this struct was generated from the following file: