zcov: / include/clang/AST/PrettyPrinter.h


Files: 1 Branches Taken: 0.0% 0 / 0
Generated: 2010-02-10 01:31 Branches Executed: 0.0% 0 / 0
Line Coverage: 66.7% 2 / 3


Programs: 23 Runs 41647


       1                 : //===--- PrettyPrinter.h - Classes for aiding with AST printing -*- C++ -*-===//
       2                 : //
       3                 : //                     The LLVM Compiler Infrastructure
       4                 : //
       5                 : // This file is distributed under the University of Illinois Open Source
       6                 : // License. See LICENSE.TXT for details.
       7                 : //
       8                 : //===----------------------------------------------------------------------===//
       9                 : //
      10                 : //  This file defines the PrinterHelper interface.
      11                 : //
      12                 : //===----------------------------------------------------------------------===//
      13                 : 
      14                 : #ifndef LLVM_CLANG_AST_PRETTY_PRINTER_H
      15                 : #define LLVM_CLANG_AST_PRETTY_PRINTER_H
      16                 : 
      17                 : namespace llvm {
      18                 :   class raw_ostream;
      19                 : }
      20                 : 
      21                 : namespace clang {
      22                 : 
      23                 : class Stmt;
      24                 : class TagDecl;
      25                 : class LangOptions;
      26                 : 
      27                0: class PrinterHelper {
      28                 : public:
      29                 :   virtual ~PrinterHelper();
      30                 :   virtual bool handledStmt(Stmt* E, llvm::raw_ostream& OS) = 0;
      31                 : };
      32                 : 
      33                 : /// \brief Describes how types, statements, expressions, and
      34                 : /// declarations should be printed.
      35                 : struct PrintingPolicy {
      36                 :   /// \brief Create a default printing policy for C.
      37             4988:   PrintingPolicy(const LangOptions &LO)
      38                 :     : Indentation(2), LangOpts(LO), SuppressSpecifiers(false),
      39                 :       SuppressTag(false), SuppressTagKind(false), SuppressScope(false),
      40             4988:       Dump(false), ConstantArraySizeAsWritten(false) { }
      41                 : 
      42                 :   /// \brief The number of spaces to use to indent each line.
      43                 :   unsigned Indentation : 8;
      44                 : 
      45                 :   /// \brief What language we're printing.
      46                 :   const LangOptions &LangOpts;
      47                 : 
      48                 :   /// \brief Whether we should suppress printing of the actual specifiers for
      49                 :   /// the given type or declaration.
      50                 :   ///
      51                 :   /// This flag is only used when we are printing declarators beyond
      52                 :   /// the first declarator within a declaration group. For example, given:
      53                 :   ///
      54                 :   /// \code
      55                 :   /// const int *x, *y;
      56                 :   /// \endcode
      57                 :   ///
      58                 :   /// SuppressSpecifiers will be false when printing the
      59                 :   /// declaration for "x", so that we will print "int *x"; it will be
      60                 :   /// \c true when we print "y", so that we suppress printing the
      61                 :   /// "const int" type specifier and instead only print the "*y".
      62                 :   bool SuppressSpecifiers : 1;
      63                 : 
      64                 :   /// \brief Whether type printing should skip printing the actual tag type.
      65                 :   ///
      66                 :   /// This is used when the caller needs to print a tag definition in front
      67                 :   /// of the type, as in constructs like the following:
      68                 :   ///
      69                 :   /// \code
      70                 :   /// typedef struct { int x, y; } Point;
      71                 :   /// \endcode
      72                 :   bool SuppressTag : 1;
      73                 : 
      74                 :   /// \brief If we are printing a tag type, suppresses printing of the
      75                 :   /// kind of tag, e.g., "struct", "union", "enum".
      76                 :   bool SuppressTagKind : 1;
      77                 : 
      78                 :   /// \brief Suppresses printing of scope specifiers.
      79                 :   bool SuppressScope : 1;
      80                 : 
      81                 :   /// \brief True when we are "dumping" rather than "pretty-printing",
      82                 :   /// where dumping involves printing the internal details of the AST
      83                 :   /// and pretty-printing involves printing something similar to
      84                 :   /// source code.
      85                 :   bool Dump : 1;
      86                 : 
      87                 :   /// \brief Whether we should print the sizes of constant array expressions
      88                 :   /// as written in the sources.
      89                 :   ///
      90                 :   /// This flag is determines whether arrays types declared as
      91                 :   ///
      92                 :   /// \code
      93                 :   /// int a[4+10*10];
      94                 :   /// char a[] = "A string";
      95                 :   /// \endcode
      96                 :   ///
      97                 :   /// will be printed as written or as follows:
      98                 :   ///
      99                 :   /// \code
     100                 :   /// int a[104];
     101                 :   /// char a[9] = "A string";
     102                 :   /// \endcode
     103                 :   bool ConstantArraySizeAsWritten : 1;
     104                 : };
     105                 : 
     106                 : } // end namespace clang
     107                 : 
     108                 : #endif

Generated: 2010-02-10 01:31 by zcov