1 //===--- PreprocessorOutputOptions.h ----------------------------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLVM_CLANG_FRONTEND_PREPROCESSOROUTPUTOPTIONS_H 10 #define LLVM_CLANG_FRONTEND_PREPROCESSOROUTPUTOPTIONS_H 11 12 namespace clang { 13 14 /// PreprocessorOutputOptions - Options for controlling the C preprocessor 15 /// output (e.g., -E). 16 class PreprocessorOutputOptions { 17 public: 18 unsigned ShowCPP : 1; ///< Print normal preprocessed output. 19 unsigned ShowComments : 1; ///< Show comments. 20 unsigned ShowLineMarkers : 1; ///< Show \#line markers. 21 unsigned UseLineDirectives : 1; ///< Use \#line instead of GCC-style \# N. 22 unsigned ShowMacroComments : 1; ///< Show comments, even in macros. 23 unsigned ShowMacros : 1; ///< Print macro definitions. 24 unsigned ShowIncludeDirectives : 1; ///< Print includes, imports etc. within preprocessed output. 25 unsigned RewriteIncludes : 1; ///< Preprocess include directives only. 26 unsigned RewriteImports : 1; ///< Include contents of transitively-imported modules. 27 unsigned MinimizeWhitespace : 1; ///< Ignore whitespace from input. 28 unsigned DirectivesOnly : 1; ///< Process directives but do not expand macros. 29 30 public: PreprocessorOutputOptions()31 PreprocessorOutputOptions() { 32 ShowCPP = 0; 33 ShowComments = 0; 34 ShowLineMarkers = 1; 35 UseLineDirectives = 0; 36 ShowMacroComments = 0; 37 ShowMacros = 0; 38 ShowIncludeDirectives = 0; 39 RewriteIncludes = 0; 40 RewriteImports = 0; 41 MinimizeWhitespace = 0; 42 DirectivesOnly = 0; 43 } 44 }; 45 46 } // end namespace clang 47 48 #endif 49