diff options
-rw-r--r-- | clang-tools-extra/docs/pp-trace.rst | 696 |
1 files changed, 675 insertions, 21 deletions
diff --git a/clang-tools-extra/docs/pp-trace.rst b/clang-tools-extra/docs/pp-trace.rst index 022a9affadc..f64e54e23f4 100644 --- a/clang-tools-extra/docs/pp-trace.rst +++ b/clang-tools-extra/docs/pp-trace.rst @@ -10,7 +10,8 @@ pp-trace User's Manual :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 overidden in a PPCallbacks +selected information from callback functions overidden 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`. @@ -22,7 +23,7 @@ pp-trace Usage Command Line Format ------------------- -``pp-trace [<pp-trace-options>] <source-file> [<front-end-options>...]`` +``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 @@ -30,8 +31,9 @@ specific to pp-trace, which are described below in ``<source-file>`` specifies the source file to run through the preprocessor. -``<front-end-options>`` is a place-holder for regular Clang -front-end arguments, which must follow the <source-file>. +``<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: @@ -88,7 +90,7 @@ 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, include the callback name and argument information, for +callback call, including the callback name and argument information, for example::: --- @@ -121,22 +123,51 @@ name as the argument in the corresponding PPCallbacks callback function. Callback Details ---------------- -The following sections describe the output format for each callback. +The following sections describe the pupose and output format for each callback. -FileChanged Callback -^^^^^^^^^^^^^^^^^^^^ +Click on the callback name in the section heading to see the Doxygen +documentation for the callback. -+----------------+-----------------------------------------------------+------------------------------+-----------------------+ -| Argument Name | Argument Value Syntax | Clang C++ Type | Description | -+----------------+-----------------------------------------------------+------------------------------+-----------------------+ -| Loc | "(file):(line):(col)" | SourceLocation | Where in the file. | -+----------------+-----------------------------------------------------+------------------------------+-----------------------+ -| 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.| -+----------------+-----------------------------------------------------+------------------------------+-----------------------+ +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::: @@ -145,8 +176,631 @@ Example::: Reason: EnterFile
FileType: C_User
PrevFID: (invalid)
-
-(More callback documentation to come...)
+ +`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:3:1" + Path: "Inputs.Level1A" + Imported: Level1A + +`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::Mapping 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 ================= |