.. index:: pp-trace

==================================
pp-trace User's Manual
==================================

.. toctree::
   :hidden:

:program:`pp-trace` is a standalone tool that traces preprocessor
activity. It's also used as a test of Clang's PPCallbacks interface.
It runs a given source file through the Clang preprocessor, displaying
selected information from callback functions overridden in a
`PPCallbacks <http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html>`_
derivation. The output is in a high-level YAML format, described in
:ref:`OutputFormat`.

.. _Usage:

pp-trace Usage
==============

Command Line Format
-------------------

``pp-trace [<pp-trace-options>] <source-file> [<front-end-options>]``

``<pp-trace-options>`` is a place-holder for options
specific to pp-trace, which are described below in
:ref:`CommandLineOptions`.

``<source-file>`` specifies the source file to run through the preprocessor.

``<front-end-options>`` is a place-holder for regular
`Clang Compiler Options <http://clang.llvm.org/docs/UsersManual.html#command-line-options>`_,
which must follow the <source-file>.

.. _CommandLineOptions:

Command Line Options
--------------------

.. option:: -ignore <callback-name-list>

  This option specifies a comma-separated list of names of callbacks
  that shouldn't be traced. It can be used to eliminate unwanted
  trace output. The callback names are the name of the actual
  callback function names in the PPCallbacks class:

  * FileChanged
  * FileSkipped
  * FileNotFound
  * InclusionDirective
  * moduleImport
  * EndOfMainFile
  * Ident
  * PragmaDirective
  * PragmaComment
  * PragmaDetectMismatch
  * PragmaDebug
  * PragmaMessage
  * PragmaDiagnosticPush
  * PragmaDiagnosticPop
  * PragmaDiagnostic
  * PragmaOpenCLExtension
  * PragmaWarning
  * PragmaWarningPush
  * PragmaWarningPop
  * MacroExpands
  * MacroDefined
  * MacroUndefined
  * Defined
  * SourceRangeSkipped
  * If
  * Elif
  * Ifdef
  * Ifndef
  * Else
  * Endif

.. option:: -output <output-file>

  By default, pp-trace outputs the trace information to stdout. Use this
  option to output the trace information to a file.

.. _OutputFormat:

pp-trace Output Format
======================

The pp-trace output is formatted as YAML. See http://yaml.org/ for general
YAML information. It's arranged as a sequence of information about the
callback call, including the callback name and argument information, for
example:::

  ---
  - Callback: Name
    Argument1: Value1
    Argument2: Value2
  (etc.)
  ...

With real data:::

  ---
  - Callback: FileChanged
    Loc: "c:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-include.cpp:1:1"
    Reason: EnterFile
    FileType: C_User
    PrevFID: (invalid)
    (etc.)
  - Callback: FileChanged
    Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-include.cpp:5:1"
    Reason: ExitFile
    FileType: C_User
    PrevFID: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/Input/Level1B.h"
  - Callback: EndOfMainFile
  ...

In all but one case (MacroDirective) the "Argument" scalars have the same
name as the argument in the corresponding PPCallbacks callback function.

Callback Details
----------------

The following sections describe the pupose and output format for each callback.

Click on the callback name in the section heading to see the Doxygen
documentation for the callback.

The argument descriptions table describes the callback argument information
displayed.

The Argument Name field in most (but not all) cases is the same name as the
callback function parameter.

The Argument Value Syntax field describes the values that will be displayed
for the argument value. It uses an ad hoc representation that mixes literal
and symbolic representations. Enumeration member symbols are shown as the
actual enum member in a (member1|member2|...) form. A name in parentheses
can either represent a place holder for the described value, or confusingly,
it might be a literal, such as (null), for a null pointer.
Locations are shown as quoted only to avoid confusing the documentation generator.

The Clang C++ Type field is the type from the callback function declaration.

The description describes the argument or what is displayed for it.

Note that in some cases, such as when a structure pointer is an argument
value, only some key member or members are shown to represent the value,
instead of trying to display all members of the structure.

`FileChanged <http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#a7cc8cfaf34114fc65e92af621cd6464e>`_ Callback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

FileChanged is called when the preprocessor enters or exits a file, both the
top level file being compiled, as well as any #include directives. It will
also be called as a result of a system header pragma or in internal renaming
of a file.

Argument descriptions:

==============   ==================================================   ============================== ==============================
Argument Name    Argument Value Syntax                                Clang C++ Type                 Description           
==============   ==================================================   ============================== ==============================
Loc              "(file):(line):(col)"                                SourceLocation                 The location of the directive.
Reason           (EnterFile|ExitFile|SystemHeaderPragma|RenameFile)   PPCallbacks::FileChangeReason  Reason for change.
FileType         (C_User|C_System|C_ExternCSystem)                    SrcMgr::CharacteristicKind     Include type.
PrevFID          ((file)|(invalid))                                   FileID                         Previous file, if any.
==============   ==================================================   ============================== ==============================

Example:::

  - Callback: FileChanged
    Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-include.cpp:1:1"
    Reason: EnterFile
    FileType: C_User
    PrevFID: (invalid)

`FileSkipped <http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#ab5b338a0670188eb05fa7685bbfb5128>`_ Callback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

FileSkipped is called when a source file is skipped as the result of header
guard optimization.

Argument descriptions:

==============   ==================================================   ============================== ========================================================
Argument Name    Argument Value Syntax                                Clang C++ Type                 Description           
==============   ==================================================   ============================== ========================================================
ParentFile       ("(file)" or (null))                                 const FileEntry                The file that #included the skipped file.
FilenameTok      (token)                                              const Token                    The token in ParentFile that indicates the skipped file.
FileType         (C_User|C_System|C_ExternCSystem)                    SrcMgr::CharacteristicKind     The file type.
==============   ==================================================   ============================== ========================================================

Example:::

  - Callback: FileSkipped
    ParentFile: "/path/filename.h"
    FilenameTok: "filename.h"
    FileType: C_User

`FileNotFound <http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#a3045151545f987256bfa8d978916ef00>`_ Callback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

FileNotFound is called when an inclusion directive results in a file-not-found error.

Argument descriptions:

==============   ==================================================   ============================== =====================================================================================================================================
Argument Name    Argument Value Syntax                                Clang C++ Type                 Description           
==============   ==================================================   ============================== =====================================================================================================================================
FileName         "(file)"                                             StringRef                      The name of the file being included, as written in the source code.
RecoveryPath     (path)                                               SmallVectorImpl<char>          If this client indicates that it can recover from this missing file, the client should set this as an additional header search patch.
==============   ==================================================   ============================== =====================================================================================================================================

Example:::

  - Callback: FileNotFound
    FileName: "/path/filename.h"
    RecoveryPath:

`InclusionDirective <http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#a557d9738c329793513a6f57d6b60de52>`_ Callback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

InclusionDirective is called when an inclusion directive of any kind (#include</code>, #import</code>, etc.) has been processed, regardless of whether the inclusion will actually result in an inclusion.

Argument descriptions:

==============   ==================================================   ============================== ============================================================================================================
Argument Name    Argument Value Syntax                                Clang C++ Type                 Description           
==============   ==================================================   ============================== ============================================================================================================
HashLoc          "(file):(line):(col)"                                SourceLocation                 The location of the '#' that starts the inclusion directive.
IncludeTok       (token)                                              const Token                    The token that indicates the kind of inclusion directive, e.g., 'include' or 'import'.
FileName         "(file)"                                             StringRef                      The name of the file being included, as written in the source code.
IsAngled         (true|false)                                         bool                           Whether the file name was enclosed in angle brackets; otherwise, it was enclosed in quotes.
FilenameRange    "(file)"                                             CharSourceRange                The character range of the quotes or angle brackets for the written file name.
File             "(file)"                                             const FileEntry                The actual file that may be included by this inclusion directive.
SearchPath       "(path)"                                             StringRef                      Contains the search path which was used to find the file in the file system.
RelativePath     "(path)"                                             StringRef                      The path relative to SearchPath, at which the include file was found.
Imported         ((module name)|(null))                               const Module                   The module, whenever an inclusion directive was automatically turned into a module import or null otherwise.
==============   ==================================================   ============================== ============================================================================================================

Example:::

  - Callback: InclusionDirective
    IncludeTok: include
    FileName: "Input/Level1B.h"
    IsAngled: false
    FilenameRange: "Input/Level1B.h"
    File: "D:/Clang/llvmnewmod/tools/clang/tools/extra/test/pp-trace/Input/Level1B.h"
    SearchPath: "D:/Clang/llvmnewmod/tools/clang/tools/extra/test/pp-trace"
    RelativePath: "Input/Level1B.h"
    Imported: (null)

`moduleImport <http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#af32dcf1b8b7c179c7fcd3e24e89830fe>`_ Callback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

moduleImport is called when there was an explicit module-import syntax.

Argument descriptions:

==============   ==================================================   ============================== ===========================================================
Argument Name    Argument Value Syntax                                Clang C++ Type                 Description           
==============   ==================================================   ============================== ===========================================================
ImportLoc        "(file):(line):(col)"                                SourceLocation                 The location of import directive token.
Path             "(path)"                                             ModuleIdPath                   The identifiers (and their locations) of the module "path".
Imported         ((module name)|(null))                               const Module                   The imported module; can be null if importing failed.
==============   ==================================================   ============================== ===========================================================

Example:::

  - Callback: moduleImport
    ImportLoc: "d:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-modules.cpp:4:2"
    Path: [{Name: Level1B, Loc: "d:/Clang/llvmnewmod/tools/clang/tools/extra/test/pp-trace/pp-trace-modules.cpp:4:9"}, {Name: Level2B, Loc: "d:/Clang/llvmnewmod/tools/clang/tools/extra/test/pp-trace/pp-trace-modules.cpp:4:17"}]
    Imported: Level2B

`EndOfMainFile <http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#a63e170d069e99bc1c9c7ea0f3bed8bcc>`_ Callback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

EndOfMainFile is called when the end of the main file is reached.

Argument descriptions:

==============   ==================================================   ============================== ======================
Argument Name    Argument Value Syntax                                Clang C++ Type                 Description           
==============   ==================================================   ============================== ======================
(no arguments)
==============   ==================================================   ============================== ======================

Example:::

  - Callback: EndOfMainFile

`Ident <http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#a3683f1d1fa513e9b6193d446a5cc2b66>`_ Callback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Ident is called when a #ident or #sccs directive is read.

Argument descriptions:

==============   ==================================================   ============================== ==============================
Argument Name    Argument Value Syntax                                Clang C++ Type                 Description           
==============   ==================================================   ============================== ==============================
Loc              "(file):(line):(col)"                                SourceLocation                 The location of the directive.
str              (name)                                               const std::string              The text of the directive.
==============   ==================================================   ============================== ==============================

Example:::

  - Callback: Ident
    Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-ident.cpp:3:1"
    str: "$Id$"

`PragmaDirective <http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#a0a2d7a72c62184b3cbde31fb62c6f2f7>`_ Callback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

PragmaDirective is called when start reading any pragma directive.

Argument descriptions:

==============   ==================================================   ============================== =================================
Argument Name    Argument Value Syntax                                Clang C++ Type                 Description           
==============   ==================================================   ============================== =================================
Loc              "(file):(line):(col)"                                SourceLocation                 The location of the directive.
Introducer       (PIK_HashPragma|PIK__Pragma|PIK___pragma)            PragmaIntroducerKind           The type of the pragma directive.
==============   ==================================================   ============================== =================================

Example:::

  - Callback: PragmaDirective
    Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-pragma.cpp:3:1"
    Introducer: PIK_HashPragma

`PragmaComment <http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#ace0d940fc2c12ab76441466aab58dc37>`_ Callback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

PragmaComment is called when a #pragma comment directive is read.

Argument descriptions:

==============   ==================================================   ============================== ==============================
Argument Name    Argument Value Syntax                                Clang C++ Type                 Description           
==============   ==================================================   ============================== ==============================
Loc              "(file):(line):(col)"                                SourceLocation                 The location of the directive.
Kind             ((name)|(null))                                      const IdentifierInfo           The comment kind symbol.
Str              (message directive)                                  const std::string              The comment message directive.
==============   ==================================================   ============================== ==============================

Example:::

  - Callback: PragmaComment
    Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-pragma.cpp:3:1"
    Kind: library
    Str: kernel32.lib

`PragmaDetectMismatch <http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#ab11158c9149fb8ad8af1903f4a6cd65d>`_ Callback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

PragmaDetectMismatch is called when a #pragma detect_mismatch directive is read.

Argument descriptions:

==============   ==================================================   ============================== ==============================
Argument Name    Argument Value Syntax                                Clang C++ Type                 Description           
==============   ==================================================   ============================== ==============================
Loc              "(file):(line):(col)"                                SourceLocation                 The location of the directive.
Name             "(name)"                                             const std::string              The name.
Value            (string)                                             const std::string              The value.
==============   ==================================================   ============================== ==============================

Example:::

  - Callback: PragmaDetectMismatch
    Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-pragma.cpp:3:1"
    Name: name
    Value: value

`PragmaDebug <http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#a57cdccb6dcc07e926513ac3d5b121466>`_ Callback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

PragmaDebug is called when a #pragma clang __debug directive is read.

Argument descriptions:

==============   ==================================================   ============================== ================================
Argument Name    Argument Value Syntax                                Clang C++ Type                 Description           
==============   ==================================================   ============================== ================================
Loc              "(file):(line):(col)"                                SourceLocation                 The location of the directive.
DebugType        (string)                                             StringRef                      Indicates type of debug message.
==============   ==================================================   ============================== ================================

Example:::

  - Callback: PragmaDebug
    Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-pragma.cpp:3:1"
    DebugType: warning

`PragmaMessage <http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#abb42935d9a9fd8e2c4f51cfdc4ea2ae1>`_ Callback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

PragmaMessage is called when a #pragma message directive is read.

Argument descriptions:

==============   ==================================================   ============================== =======================================
Argument Name    Argument Value Syntax                                Clang C++ Type                 Description           
==============   ==================================================   ============================== =======================================
Loc              "(file):(line):(col)"                                SourceLocation                 The location of the directive.
Namespace        (name)                                               StringRef                      The namespace of the message directive.
Kind             (PMK_Message|PMK_Warning|PMK_Error)                  PPCallbacks::PragmaMessageKind The type of the message directive.
Str              (string)                                             StringRef                      The text of the message directive.
==============   ==================================================   ============================== =======================================

Example:::

  - Callback: PragmaMessage
    Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-pragma.cpp:3:1"
    Namespace: "GCC"
    Kind: PMK_Message
    Str: The message text.

`PragmaDiagnosticPush <http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#a0f3ff19762baa38fe6c5c58022d32979>`_ Callback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

PragmaDiagnosticPush is called when a #pragma gcc dianostic push directive is read.

Argument descriptions:

==============   ==================================================   ============================== ==============================
Argument Name    Argument Value Syntax                                Clang C++ Type                 Description           
==============   ==================================================   ============================== ==============================
Loc              "(file):(line):(col)"                                SourceLocation                 The location of the directive.
Namespace        (name)                                               StringRef                      Namespace name.
==============   ==================================================   ============================== ==============================

Example:::

  - Callback: PragmaDiagnosticPush
    Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-pragma.cpp:3:1"
    Namespace: "GCC"

`PragmaDiagnosticPop <http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#ac94d789873122221fba8d76f6c5ea45e>`_ Callback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

PragmaDiagnosticPop is called when a #pragma gcc dianostic pop directive is read.

Argument descriptions:

==============   ==================================================   ============================== ==============================
Argument Name    Argument Value Syntax                                Clang C++ Type                 Description           
==============   ==================================================   ============================== ==============================
Loc              "(file):(line):(col)"                                SourceLocation                 The location of the directive.
Namespace        (name)                                               StringRef                      Namespace name.
==============   ==================================================   ============================== ==============================

Example:::

  - Callback: PragmaDiagnosticPop
    Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-pragma.cpp:3:1"
    Namespace: "GCC"

`PragmaDiagnostic <http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#afe7938f38a83cb7b4b25a13edfdd7bdd>`_ Callback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

PragmaDiagnostic is called when a #pragma gcc dianostic directive is read.

Argument descriptions:

==============   ==================================================   ============================== ==============================
Argument Name    Argument Value Syntax                                Clang C++ Type                 Description           
==============   ==================================================   ============================== ==============================
Loc              "(file):(line):(col)"                                SourceLocation                 The location of the directive.
Namespace        (name)                                               StringRef                      Namespace name.
mapping          (0|MAP_IGNORE|MAP_WARNING|MAP_ERROR|MAP_FATAL)       diag::Severity                 Mapping type.
Str              (string)                                             StringRef                      Warning/error name.
==============   ==================================================   ============================== ==============================

Example:::

  - Callback: PragmaDiagnostic
    Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-pragma.cpp:3:1"
    Namespace: "GCC"
    mapping: MAP_WARNING
    Str: WarningName

`PragmaOpenCLExtension <http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#a92a20a21fadbab4e2c788f4e27fe07e7>`_ Callback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

PragmaOpenCLExtension is called when OpenCL extension is either disabled or enabled with a pragma.

Argument descriptions:

==============   ==================================================   ============================== ==========================
Argument Name    Argument Value Syntax                                Clang C++ Type                 Description           
==============   ==================================================   ============================== ==========================
NameLoc          "(file):(line):(col)"                                SourceLocation                 The location of the name.
Name             (name)                                               const IdentifierInfo           Name symbol.
StateLoc         "(file):(line):(col)"                                SourceLocation                 The location of the state.
State            (1|0)                                                unsigned                       Enabled/disabled state.
==============   ==================================================   ============================== ==========================

Example:::

  - Callback: PragmaOpenCLExtension
    NameLoc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-pragma.cpp:3:10"
    Name: Name
    StateLoc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-pragma.cpp:3:18"
    State: 1

`PragmaWarning <http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#aa17169d25fa1cf0a6992fc944d1d8730>`_ Callback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

PragmaWarning is called when a #pragma warning directive is read.

Argument descriptions:

==============   ==================================================   ============================== ==============================
Argument Name    Argument Value Syntax                                Clang C++ Type                 Description           
==============   ==================================================   ============================== ==============================
Loc              "(file):(line):(col)"                                SourceLocation                 The location of the directive.
WarningSpec      (string)                                             StringRef                      The warning specifier.
Ids              [(number)[, ...]]                                    ArrayRef<int>                  The warning numbers.
==============   ==================================================   ============================== ==============================

Example:::

  - Callback: PragmaWarning
    Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-pragma.cpp:3:1"
    WarningSpec: disable
    Ids: 1,2,3

`PragmaWarningPush <http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#ae5626ef70502687a859f323a809ed0b6>`_ Callback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

PragmaWarningPush is called when a #pragma warning(push) directive is read.

Argument descriptions:

==============   ==================================================   ============================== ==============================
Argument Name    Argument Value Syntax                                Clang C++ Type                 Description           
==============   ==================================================   ============================== ==============================
Loc              "(file):(line):(col)"                                SourceLocation                 The location of the directive.
Level            (number)                                             int                            Warning level.
==============   ==================================================   ============================== ==============================

Example:::

  - Callback: PragmaWarningPush
    Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-pragma.cpp:3:1"
    Level: 1

`PragmaWarningPop <http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#ac98d502af8811b8a6e7342d7cd2b3b95>`_ Callback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

PragmaWarningPop is called when a #pragma warning(pop) directive is read.

Argument descriptions:

==============   ==================================================   ============================== ==============================
Argument Name    Argument Value Syntax                                Clang C++ Type                 Description           
==============   ==================================================   ============================== ==============================
Loc              "(file):(line):(col)"                                SourceLocation                 The location of the directive.
==============   ==================================================   ============================== ==============================

Example:::

  - Callback: PragmaWarningPop
    Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-pragma.cpp:3:1"

`MacroExpands <http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#a9bc725209d3a071ea649144ab996d515>`_ Callback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

MacroExpands is called when ::HandleMacroExpandedIdentifier when a macro invocation is found.

Argument descriptions:

==============   ==================================================   ============================== ======================================================================================================
Argument Name    Argument Value Syntax                                Clang C++ Type                 Description           
==============   ==================================================   ============================== ======================================================================================================
MacroNameTok     (token)                                              const Token                    The macro name token.
MacroDirective   (MD_Define|MD_Undefine|MD_Visibility)                const MacroDirective           The kind of macro directive from the MacroDirective structure.
Range            ["(file):(line):(col)", "(file):(line):(col)"]       SourceRange                    The source range for the expansion.
Args             [(name)|(number)|<(token name)>[, ...]]              const MacroArgs                The argument tokens. Names and numbers are literal, everything else is of the form '<' tokenName '>'.
==============   ==================================================   ============================== ======================================================================================================

Example:::

  - Callback: MacroExpands
    MacroNameTok: X_IMPL
    MacroDirective: MD_Define
    Range: [(nonfile), (nonfile)]
    Args: [a <plus> y, b]

`MacroDefined <http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#a8448fc9f96f22ad1b93ff393cffc5a76>`_ Callback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

MacroDefined is called when a macro definition is seen.

Argument descriptions:

==============   ==================================================   ============================== ==============================================================
Argument Name    Argument Value Syntax                                Clang C++ Type                 Description           
==============   ==================================================   ============================== ==============================================================
MacroNameTok     (token)                                              const Token                    The macro name token.
MacroDirective   (MD_Define|MD_Undefine|MD_Visibility)                const MacroDirective           The kind of macro directive from the MacroDirective structure.
==============   ==================================================   ============================== ==============================================================

Example:::

  - Callback: MacroDefined
    MacroNameTok: X_IMPL
    MacroDirective: MD_Define

`MacroUndefined <http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#acb80fc6171a839db8e290945bf2c9d7a>`_ Callback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

MacroUndefined is called when a macro #undef is seen.

Argument descriptions:

==============   ==================================================   ============================== ==============================================================
Argument Name    Argument Value Syntax                                Clang C++ Type                 Description           
==============   ==================================================   ============================== ==============================================================
MacroNameTok     (token)                                              const Token                    The macro name token.
MacroDirective   (MD_Define|MD_Undefine|MD_Visibility)                const MacroDirective           The kind of macro directive from the MacroDirective structure.
==============   ==================================================   ============================== ==============================================================

Example:::

  - Callback: MacroUndefined
    MacroNameTok: X_IMPL
    MacroDirective: MD_Define

`Defined <http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#a3cc2a644533d0e4088a13d2baf90db94>`_ Callback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Defined is called when the 'defined' operator is seen.

Argument descriptions:

==============   ==================================================   ============================== ==============================================================
Argument Name    Argument Value Syntax                                Clang C++ Type                 Description           
==============   ==================================================   ============================== ==============================================================
MacroNameTok     (token)                                              const Token                    The macro name token.
MacroDirective   (MD_Define|MD_Undefine|MD_Visibility)                const MacroDirective           The kind of macro directive from the MacroDirective structure.
Range            ["(file):(line):(col)", "(file):(line):(col)"]       SourceRange                    The source range for the directive.
==============   ==================================================   ============================== ==============================================================

Example:::

  - Callback: Defined
    MacroNameTok: MACRO
    MacroDirective: (null)
    Range: ["D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-macro.cpp:8:5", "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-macro.cpp:8:19"]

`SourceRangeSkipped <http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#abdb4ebe11610f079ac33515965794b46>`_ Callback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

SourceRangeSkipped is called when a source range is skipped.

Argument descriptions:

==============   ==================================================   ============================== =========================
Argument Name    Argument Value Syntax                                Clang C++ Type                 Description           
==============   ==================================================   ============================== =========================
Range            ["(file):(line):(col)", "(file):(line):(col)"]       SourceRange                    The source range skipped.
==============   ==================================================   ============================== =========================

Example:::

  - Callback: SourceRangeSkipped
    Range: [":/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-macro.cpp:8:2", ":/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-macro.cpp:9:2"]

`If <http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#a645edcb0d6becbc6f256f02fd1287778>`_ Callback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

If is called when an #if is seen.

Argument descriptions:

==============   ==================================================   ============================== ===================================
Argument Name    Argument Value Syntax                                Clang C++ Type                 Description           
==============   ==================================================   ============================== ===================================
Loc              "(file):(line):(col)"                                SourceLocation                 The location of the directive.
ConditionRange   ["(file):(line):(col)", "(file):(line):(col)"]       SourceRange                    The source range for the condition.
ConditionValue   (true|false)                                         bool                           The condition value.
==============   ==================================================   ============================== ===================================

Example:::

  - Callback: If
    Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-macro.cpp:8:2"
    ConditionRange: ["D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-macro.cpp:8:4", "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-macro.cpp:9:1"]
    ConditionValue: false

`Elif <http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#a180c9e106a28d60a6112e16b1bb8302a>`_ Callback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Elif is called when an #elif is seen.

Argument descriptions:

==============   ==================================================   ============================== ===================================
Argument Name    Argument Value Syntax                                Clang C++ Type                 Description           
==============   ==================================================   ============================== ===================================
Loc              "(file):(line):(col)"                                SourceLocation                 The location of the directive.
ConditionRange   ["(file):(line):(col)", "(file):(line):(col)"]       SourceRange                    The source range for the condition.
ConditionValue   (true|false)                                         bool                           The condition value.
IfLoc            "(file):(line):(col)"                                SourceLocation                 The location of the directive.
==============   ==================================================   ============================== ===================================

Example:::

  - Callback: Elif
    Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-macro.cpp:10:2"
    ConditionRange: ["D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-macro.cpp:10:4", "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-macro.cpp:11:1"]
    ConditionValue: false
    IfLoc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-macro.cpp:8:2"

`Ifdef <http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#a0ce79575dda307784fd51a6dd4eec33d>`_ Callback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Ifdef is called when an #ifdef is seen.

Argument descriptions:

==============   ==================================================   ============================== ==============================================================
Argument Name    Argument Value Syntax                                Clang C++ Type                 Description           
==============   ==================================================   ============================== ==============================================================
Loc              "(file):(line):(col)"                                SourceLocation                 The location of the directive.
MacroNameTok     (token)                                              const Token                    The macro name token.
MacroDirective   (MD_Define|MD_Undefine|MD_Visibility)                const MacroDirective           The kind of macro directive from the MacroDirective structure.
==============   ==================================================   ============================== ==============================================================

Example:::

  - Callback: Ifdef
    Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-conditional.cpp:3:1"
    MacroNameTok: MACRO
    MacroDirective: MD_Define

`Ifndef <http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#a767af69f1cdcc4cd880fa2ebf77ad3ad>`_ Callback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Ifndef is called when an #ifndef is seen.

Argument descriptions:

==============   ==================================================   ============================== ==============================================================
Argument Name    Argument Value Syntax                                Clang C++ Type                 Description           
==============   ==================================================   ============================== ==============================================================
Loc              "(file):(line):(col)"                                SourceLocation                 The location of the directive.
MacroNameTok     (token)                                              const Token                    The macro name token.
MacroDirective   (MD_Define|MD_Undefine|MD_Visibility)                const MacroDirective           The kind of macro directive from the MacroDirective structure.
==============   ==================================================   ============================== ==============================================================

Example:::

  - Callback: Ifndef
    Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-conditional.cpp:3:1"
    MacroNameTok: MACRO
    MacroDirective: MD_Define

`Else <http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#ad57f91b6d9c3cbcca326a2bfb49e0314>`_ Callback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Else is called when an #else is seen.

Argument descriptions:

==============   ==================================================   ============================== ===================================
Argument Name    Argument Value Syntax                                Clang C++ Type                 Description           
==============   ==================================================   ============================== ===================================
Loc              "(file):(line):(col)"                                SourceLocation                 The location of the else directive.
IfLoc            "(file):(line):(col)"                                SourceLocation                 The location of the if directive.
==============   ==================================================   ============================== ===================================

Example:::

  - Callback: Else
    Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-macro.cpp:10:2"
    IfLoc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-macro.cpp:8:2"

`Endif <http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#afc62ca1401125f516d58b1629a2093ce>`_ Callback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Endif is called when an #endif is seen.

Argument descriptions:

==============   ==================================================   ============================== ====================================
Argument Name    Argument Value Syntax                                Clang C++ Type                 Description           
==============   ==================================================   ============================== ====================================
Loc              "(file):(line):(col)"                                SourceLocation                 The location of the endif directive.
IfLoc            "(file):(line):(col)"                                SourceLocation                 The location of the if directive.
==============   ==================================================   ============================== ====================================

Example:::

  - Callback: Endif
    Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-macro.cpp:10:2"
    IfLoc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-macro.cpp:8:2"

Building pp-trace
=================

To build from source:

1. Read `Getting Started with the LLVM System`_ and `Clang Tools
   Documentation`_ for information on getting sources for LLVM, Clang, and
   Clang Extra Tools.

2. `Getting Started with the LLVM System`_ and `Building LLVM with CMake`_ give
   directions for how to build. With sources all checked out into the
   right place the LLVM build will build Clang Extra Tools and their
   dependencies automatically.

   * If using CMake, you can also use the ``pp-trace`` target to build
     just the pp-trace tool and its dependencies.

.. _Getting Started with the LLVM System: http://llvm.org/docs/GettingStarted.html
.. _Building LLVM with CMake: http://llvm.org/docs/CMake.html
.. _Clang Tools Documentation: http://clang.llvm.org/docs/ClangTools.html

