diff options
Diffstat (limited to 'include/clang/AST/PrettyPrinter.h')
-rw-r--r-- | include/clang/AST/PrettyPrinter.h | 62 |
1 files changed, 35 insertions, 27 deletions
diff --git a/include/clang/AST/PrettyPrinter.h b/include/clang/AST/PrettyPrinter.h index b49f5be1b1e6e..3c877f5ea19c5 100644 --- a/include/clang/AST/PrettyPrinter.h +++ b/include/clang/AST/PrettyPrinter.h @@ -38,21 +38,20 @@ public: struct PrintingPolicy { /// Create a default printing policy for the specified language. PrintingPolicy(const LangOptions &LO) - : Indentation(2), SuppressSpecifiers(false), - SuppressTagKeyword(LO.CPlusPlus), - IncludeTagDefinition(false), SuppressScope(false), - SuppressUnwrittenScope(false), SuppressInitializers(false), - ConstantArraySizeAsWritten(false), AnonymousTagLocations(true), - SuppressStrongLifetime(false), SuppressLifetimeQualifiers(false), - SuppressTemplateArgsInCXXConstructors(false), - Bool(LO.Bool), Restrict(LO.C99), - Alignof(LO.CPlusPlus11), UnderscoreAlignof(LO.C11), - UseVoidForZeroParams(!LO.CPlusPlus), - TerseOutput(false), PolishForDeclaration(false), - Half(LO.Half), MSWChar(LO.MicrosoftExt && !LO.WChar), - IncludeNewlines(true), MSVCFormatting(false), - ConstantsAsWritten(false), SuppressImplicitBase(false), - FullyQualifiedName(false) { } + : Indentation(2), SuppressSpecifiers(false), + SuppressTagKeyword(LO.CPlusPlus), IncludeTagDefinition(false), + SuppressScope(false), SuppressUnwrittenScope(false), + SuppressInitializers(false), ConstantArraySizeAsWritten(false), + AnonymousTagLocations(true), SuppressStrongLifetime(false), + SuppressLifetimeQualifiers(false), + SuppressTemplateArgsInCXXConstructors(false), Bool(LO.Bool), + Restrict(LO.C99), Alignof(LO.CPlusPlus11), UnderscoreAlignof(LO.C11), + UseVoidForZeroParams(!LO.CPlusPlus), TerseOutput(false), + PolishForDeclaration(false), Half(LO.Half), + MSWChar(LO.MicrosoftExt && !LO.WChar), IncludeNewlines(true), + MSVCFormatting(false), ConstantsAsWritten(false), + SuppressImplicitBase(false), FullyQualifiedName(false), + RemapFilePaths(false), PrintCanonicalTypes(false) {} /// 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 @@ -81,7 +80,7 @@ struct PrintingPolicy { /// declaration for "x", so that we will print "int *x"; it will be /// \c true when we print "y", so that we suppress printing the /// "const int" type specifier and instead only print the "*y". - bool SuppressSpecifiers : 1; + unsigned SuppressSpecifiers : 1; /// Whether type printing should skip printing the tag keyword. /// @@ -91,7 +90,7 @@ struct PrintingPolicy { /// \code /// struct Geometry::Point; /// \endcode - bool SuppressTagKeyword : 1; + unsigned SuppressTagKeyword : 1; /// When true, include the body of a tag definition. /// @@ -101,14 +100,14 @@ struct PrintingPolicy { /// \code /// typedef struct { int x, y; } Point; /// \endcode - bool IncludeTagDefinition : 1; + unsigned IncludeTagDefinition : 1; /// Suppresses printing of scope specifiers. - bool SuppressScope : 1; + unsigned SuppressScope : 1; /// Suppress printing parts of scope specifiers that don't need /// to be written, e.g., for inline or anonymous namespaces. - bool SuppressUnwrittenScope : 1; + unsigned SuppressUnwrittenScope : 1; /// Suppress printing of variable initializers. /// @@ -121,7 +120,7 @@ struct PrintingPolicy { /// /// SuppressInitializers will be true when printing "auto x", so that the /// internal initializer constructed for x will not be printed. - bool SuppressInitializers : 1; + unsigned SuppressInitializers : 1; /// Whether we should print the sizes of constant array expressions as written /// in the sources. @@ -139,12 +138,12 @@ struct PrintingPolicy { /// int a[104]; /// char a[9] = "A string"; /// \endcode - bool ConstantArraySizeAsWritten : 1; + unsigned ConstantArraySizeAsWritten : 1; /// 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. - bool AnonymousTagLocations : 1; + unsigned AnonymousTagLocations : 1; /// When true, suppress printing of the __strong lifetime qualifier in ARC. unsigned SuppressStrongLifetime : 1; @@ -199,7 +198,7 @@ struct PrintingPolicy { /// Use whitespace and punctuation like MSVC does. In particular, this prints /// anonymous namespaces as `anonymous namespace' and does not insert spaces /// after template arguments. - bool MSVCFormatting : 1; + unsigned MSVCFormatting : 1; /// Whether we should print the constant expressions as written in the /// sources. @@ -217,14 +216,23 @@ struct PrintingPolicy { /// 0x10 /// 2.5e3 /// \endcode - bool ConstantsAsWritten : 1; + unsigned ConstantsAsWritten : 1; /// When true, don't print the implicit 'self' or 'this' expressions. - bool SuppressImplicitBase : 1; + unsigned SuppressImplicitBase : 1; /// When true, print the fully qualified name of function declarations. /// This is the opposite of SuppressScope and thus overrules it. - bool FullyQualifiedName : 1; + unsigned FullyQualifiedName : 1; + + /// Whether to apply -fdebug-prefix-map to any file paths. + unsigned RemapFilePaths : 1; + + /// Whether to print types as written or canonically. + unsigned PrintCanonicalTypes : 1; + + /// When RemapFilePaths is true, this function performs the action. + std::function<std::string(StringRef)> remapPath; }; } // end namespace clang |