diff options
Diffstat (limited to 'clang/docs/ClangPlugins.rst')
-rw-r--r-- | clang/docs/ClangPlugins.rst | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/clang/docs/ClangPlugins.rst b/clang/docs/ClangPlugins.rst index f83bb666a63..1b81bdeb7ac 100644 --- a/clang/docs/ClangPlugins.rst +++ b/clang/docs/ClangPlugins.rst @@ -43,6 +43,26 @@ register a plugin in a library, use ``FrontendPluginRegistry::Add<>``: static FrontendPluginRegistry::Add<MyPlugin> X("my-plugin-name", "my plugin description"); +Defining pragmas +================ + +Plugins can also define pragmas by declaring a ``PragmaHandler`` and +registering it using ``PragmaHandlerRegistry::Add<>``: + +.. code-block:: c++ + + // Define a pragma handler for #pragma example_pragma + class ExamplePragmaHandler : public PragmaHandler { + public: + ExamplePragmaHandler() : PragmaHandler("example_pragma") { } + void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer, + Token &PragmaTok) { + // Handle the pragma + } + }; + + static PragmaHandlerRegistry::Add<ExamplePragmaHandler> Y("example_pragma","example pragma description"); + Putting it all together ======================= |