clang
19.0.0git
|
Describes how types, statements, expressions, and declarations should be printed. More...
#include "clang/AST/PrettyPrinter.h"
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... | |
void | adjustForCPlusPlusFwdDecl () |
Adjust this printing policy to print C++ forward declaration for a given Decl. More... | |
Public Attributes | |
unsigned | Indentation: 8 |
The number of spaces to use to indent each line. More... | |
unsigned | SuppressSpecifiers: 1 |
Whether we should suppress printing of the actual specifiers for the given type or declaration. More... | |
unsigned | SuppressTagKeyword: 1 |
Whether type printing should skip printing the tag keyword. More... | |
unsigned | IncludeTagDefinition: 1 |
When true, include the body of a tag definition. More... | |
unsigned | SuppressScope: 1 |
Suppresses printing of scope specifiers. More... | |
unsigned | SuppressUnwrittenScope: 1 |
Suppress printing parts of scope specifiers that are never written, e.g., for anonymous namespaces. More... | |
unsigned | SuppressInlineNamespace: 1 |
Suppress printing parts of scope specifiers that correspond to inline namespaces, where the name is unambiguous with the specifier removed. More... | |
unsigned | SuppressElaboration: 1 |
Ignore qualifiers and tag keywords as specified by elaborated type sugar, instead letting the underlying type print as normal. More... | |
unsigned | SuppressInitializers: 1 |
Suppress printing of variable initializers. More... | |
unsigned | ConstantArraySizeAsWritten: 1 |
Whether we should print the sizes of constant array expressions as written in the sources. More... | |
unsigned | 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 | SuppressTypedefs: 1 |
When true prints a canonical type instead of an alias. More... | |
unsigned | SuppressFinalSpecifier: 1 |
When true, suppress printing final specifier. More... | |
unsigned | SuppressTemplateArgsInCXXConstructors: 1 |
When true, suppresses printing template arguments in names of C++ constructors. More... | |
unsigned | SuppressDefaultTemplateArgs: 1 |
When true, attempt to suppress template arguments that match the default argument for the parameter. 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 | Nullptr: 1 |
Whether we should use 'nullptr' rather than '0' as a null pointer constant. More... | |
unsigned | NullptrTypeInNamespace: 1 |
Whether 'nullptr_t' is in namespace 'std' or not. 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 | SplitTemplateClosers: 1 |
Whether nested templates must be closed like 'a<b<c> >' rather than 'a<b<c>>'. 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... | |
unsigned | MSVCFormatting: 1 |
Use whitespace and punctuation like MSVC does. More... | |
unsigned | ConstantsAsWritten: 1 |
Whether we should print the constant expressions as written in the sources. More... | |
unsigned | SuppressImplicitBase: 1 |
When true, don't print the implicit 'self' or 'this' expressions. More... | |
unsigned | FullyQualifiedName: 1 |
When true, print the fully qualified name of function declarations. More... | |
unsigned | SuppressDefinition: 1 |
When true does not print definition of a type. More... | |
unsigned | SuppressDefaultTemplateArguments: 1 |
When true, suppresses printing default template arguments of a type. More... | |
unsigned | PrintCanonicalTypes: 1 |
Whether to print types as written or canonically. More... | |
unsigned | SkipCanonicalizationOfTemplateTypeParms: 1 |
Whether to skip the canonicalization (when PrintCanonicalTypes is set) for TemplateTypeParmTypes. More... | |
unsigned | PrintInjectedClassNameWithArguments: 1 |
Whether to print an InjectedClassNameType with template arguments or as written. More... | |
unsigned | UsePreferredNames: 1 |
Whether to use C++ template preferred_name attributes when printing templates. More... | |
unsigned | AlwaysIncludeTypeForTemplateArgument: 1 |
Whether to use type suffixes (eg: 1U) on integral non-type template parameters. More... | |
unsigned | CleanUglifiedParameters: 1 |
Whether to strip underscores when printing reserved parameter names. More... | |
unsigned | EntireContentsOfLargeArray: 1 |
Whether to print the entire array initializers, especially on non-type template parameters, no matter how many elements there are. More... | |
unsigned | UseEnumerators: 1 |
Whether to print enumerator non-type template parameters with a matching enumerator name or via cast of an integer. More... | |
const PrintingCallbacks * | Callbacks = nullptr |
Callbacks to use to allow the behavior of printing to be customized. More... | |
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 57 of file PrettyPrinter.h.
|
inline |
Create a default printing policy for the specified language.
Definition at line 59 of file PrettyPrinter.h.
|
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 90 of file PrettyPrinter.h.
References Bool, SuppressTagKeyword, and UseVoidForZeroParams.
Referenced by printCXXConstructorDestructorName(), and clang::DeclarationNameInfo::printName().
|
inline |
Adjust this printing policy to print C++ forward declaration for a given Decl.
Definition at line 98 of file PrettyPrinter.h.
References PolishForDeclaration, SuppressDefaultTemplateArguments, and SuppressDefinition.
Referenced by SYCLFwdDeclEmitter::SYCLFwdDeclEmitter().
unsigned clang::PrintingPolicy::Alignof |
Whether we can use 'alignof' rather than '__alignof'.
Definition at line 260 of file PrettyPrinter.h.
unsigned clang::PrintingPolicy::AlwaysIncludeTypeForTemplateArgument |
Whether to use type suffixes (eg: 1U) on integral non-type template parameters.
Definition at line 390 of file PrettyPrinter.h.
unsigned 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 203 of file PrettyPrinter.h.
Referenced by clang::ExtractAPIAction::CreateASTConsumer(), clang::WrappingExtractAPIAction::CreateASTConsumer(), clang::SYCLIntegrationHeader::emit(), clang::GetFullTypeName(), and clang::diff::SyntaxTree::Impl::Impl().
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 243 of file PrettyPrinter.h.
Referenced by adjustForCPlusPlus(), clang::BuiltinType::getName(), and clang::DeclSpec::getSpecifierName().
const PrintingCallbacks* clang::PrintingPolicy::Callbacks = nullptr |
Callbacks to use to allow the behavior of printing to be customized.
Definition at line 409 of file PrettyPrinter.h.
unsigned clang::PrintingPolicy::CleanUglifiedParameters |
Whether to strip underscores when printing reserved parameter names.
e.g. std::vector<class _Tp> becomes std::vector<class Tp>. This only affects parameter names, and so describes a compatible API.
Definition at line 396 of file PrettyPrinter.h.
Referenced by clang::TemplateName::print().
unsigned 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
will be printed as written or as follows:
Definition at line 197 of file PrettyPrinter.h.
unsigned clang::PrintingPolicy::ConstantsAsWritten |
Whether we should print the constant expressions as written in the sources.
This flag determines whether constants expressions like
will be printed as written or as follows:
Definition at line 327 of file PrettyPrinter.h.
unsigned clang::PrintingPolicy::EntireContentsOfLargeArray |
Whether to print the entire array initializers, especially on non-type template parameters, no matter how many elements there are.
Definition at line 401 of file PrettyPrinter.h.
Referenced by TryPrintAsStringLiteral().
unsigned clang::PrintingPolicy::FullyQualifiedName |
When true, print the fully qualified name of function declarations.
This is the opposite of SuppressScope and thus overrules it.
Definition at line 336 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 293 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 302 of file PrettyPrinter.h.
unsigned 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:
Definition at line 144 of file PrettyPrinter.h.
Referenced by clang::Decl::printGroup().
unsigned clang::PrintingPolicy::Indentation |
The number of spaces to use to indent each line.
Definition at line 105 of file PrettyPrinter.h.
unsigned 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 308 of file PrettyPrinter.h.
Referenced by printIntegral(), and printTo().
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 298 of file PrettyPrinter.h.
Referenced by clang::BuiltinType::getName(), and clang::DeclSpec::getSpecifierName().
unsigned clang::PrintingPolicy::Nullptr |
Whether we should use 'nullptr' rather than '0' as a null pointer constant.
Definition at line 248 of file PrettyPrinter.h.
Referenced by clang::APValue::printPretty().
unsigned clang::PrintingPolicy::NullptrTypeInNamespace |
Whether 'nullptr_t' is in namespace 'std' or not.
Definition at line 252 of file PrettyPrinter.h.
Referenced by clang::BuiltinType::getName().
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 288 of file PrettyPrinter.h.
Referenced by adjustForCPlusPlusFwdDecl().
unsigned clang::PrintingPolicy::PrintCanonicalTypes |
Whether to print types as written or canonically.
Definition at line 360 of file PrettyPrinter.h.
Referenced by printTo(), splitAccordingToPolicy(), and SYCLFwdDeclEmitter::SYCLFwdDeclEmitter().
unsigned clang::PrintingPolicy::PrintInjectedClassNameWithArguments |
Whether to print an InjectedClassNameType with template arguments or as written.
When a template argument is unnamed, printing it results in invalid C++ code.
Definition at line 380 of file PrettyPrinter.h.
unsigned clang::PrintingPolicy::Restrict |
Whether we can use 'restrict' rather than '__restrict'.
Definition at line 256 of file PrettyPrinter.h.
unsigned clang::PrintingPolicy::SkipCanonicalizationOfTemplateTypeParms |
Whether to skip the canonicalization (when PrintCanonicalTypes is set) for TemplateTypeParmTypes.
This has no effect if PrintCanonicalTypes isn't set. This is useful for non-type-template-parameters, since the canonical version of:
is:
Definition at line 374 of file PrettyPrinter.h.
Referenced by splitAccordingToPolicy(), and SYCLFwdDeclEmitter::SYCLFwdDeclEmitter().
unsigned clang::PrintingPolicy::SplitTemplateClosers |
Whether nested templates must be closed like 'a<b<c> >' rather than 'a<b<c>>'.
Definition at line 274 of file PrettyPrinter.h.
Referenced by printTo().
unsigned clang::PrintingPolicy::SuppressDefaultTemplateArgs |
When true, attempt to suppress template arguments that match the default argument for the parameter.
Definition at line 238 of file PrettyPrinter.h.
Referenced by printTo().
unsigned clang::PrintingPolicy::SuppressDefaultTemplateArguments |
When true, suppresses printing default template arguments of a type.
E.g.
will be printed as
Definition at line 356 of file PrettyPrinter.h.
Referenced by adjustForCPlusPlusFwdDecl().
unsigned clang::PrintingPolicy::SuppressDefinition |
When true does not print definition of a type.
E.g.
will be printed as
Definition at line 346 of file PrettyPrinter.h.
Referenced by adjustForCPlusPlusFwdDecl().
unsigned clang::PrintingPolicy::SuppressElaboration |
Ignore qualifiers and tag keywords as specified by elaborated type sugar, instead letting the underlying type print as normal.
Definition at line 164 of file PrettyPrinter.h.
unsigned clang::PrintingPolicy::SuppressFinalSpecifier |
When true, suppress printing final specifier.
Definition at line 228 of file PrettyPrinter.h.
Referenced by SYCLFwdDeclEmitter::SYCLFwdDeclEmitter().
unsigned clang::PrintingPolicy::SuppressImplicitBase |
When true, don't print the implicit 'self' or 'this' expressions.
Definition at line 331 of file PrettyPrinter.h.
unsigned 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:
SuppressInitializers will be true when printing "auto x", so that the internal initializer constructed for x will not be printed.
Definition at line 178 of file PrettyPrinter.h.
unsigned clang::PrintingPolicy::SuppressInlineNamespace |
Suppress printing parts of scope specifiers that correspond to inline namespaces, where the name is unambiguous with the specifier removed.
Definition at line 159 of file PrettyPrinter.h.
Referenced by clang::CodeGen::CodeGenTypes::addRecordTypeName().
unsigned clang::PrintingPolicy::SuppressLifetimeQualifiers |
When true, suppress printing of lifetime qualifier in ARC.
Definition at line 211 of file PrettyPrinter.h.
unsigned clang::PrintingPolicy::SuppressScope |
Suppresses printing of scope specifiers.
Definition at line 148 of file PrettyPrinter.h.
Referenced by clang::GetFullTypeName(), clang::NestedNameSpecifier::print(), and clang::DeclarationNameInfo::printName().
unsigned 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:
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 122 of file PrettyPrinter.h.
Referenced by clang::Decl::printGroup().
unsigned clang::PrintingPolicy::SuppressStrongLifetime |
When true, suppress printing of the __strong lifetime qualifier in ARC.
Definition at line 207 of file PrettyPrinter.h.
Referenced by clang::TemplateArgument::print().
unsigned 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):
Definition at line 133 of file PrettyPrinter.h.
Referenced by adjustForCPlusPlus(), and SYCLKernelNameTypePrinter::VisitTypeTemplateArgument().
unsigned clang::PrintingPolicy::SuppressTemplateArgsInCXXConstructors |
When true, suppresses printing template arguments in names of C++ constructors.
Definition at line 233 of file PrettyPrinter.h.
Referenced by printCXXConstructorDestructorName(), and clang::index::printSymbolName().
unsigned clang::PrintingPolicy::SuppressTypedefs |
When true prints a canonical type instead of an alias.
Also removes preceeding keywords if there is one. E.g.
will be printed as
Definition at line 225 of file PrettyPrinter.h.
Referenced by clang::SYCLIntegrationHeader::emit(), and SYCLFwdDeclEmitter::SYCLFwdDeclEmitter().
unsigned clang::PrintingPolicy::SuppressUnwrittenScope |
Suppress printing parts of scope specifiers that are never written, e.g., for anonymous namespaces.
Definition at line 153 of file PrettyPrinter.h.
Referenced by clang::SYCLIntegrationHeader::emit(), and SYCLFwdDeclEmitter::SYCLFwdDeclEmitter().
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 282 of file PrettyPrinter.h.
Referenced by clang::LocationContext::dumpStack(), and clang::LocationContext::printJson().
unsigned clang::PrintingPolicy::UnderscoreAlignof |
Whether we can use '_Alignof' rather than '__alignof'.
Definition at line 264 of file PrettyPrinter.h.
unsigned clang::PrintingPolicy::UseEnumerators |
Whether to print enumerator non-type template parameters with a matching enumerator name or via cast of an integer.
Definition at line 406 of file PrettyPrinter.h.
Referenced by printIntegral().
unsigned clang::PrintingPolicy::UsePreferredNames |
Whether to use C++ template preferred_name attributes when printing templates.
Definition at line 385 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 269 of file PrettyPrinter.h.
Referenced by adjustForCPlusPlus().