zcov: / include/clang/Frontend/CompilerInvocation.h


Files: 1 Branches Taken: 0.0% 0 / 0
Generated: 2010-02-10 01:31 Branches Executed: 0.0% 0 / 0
Line Coverage: 100.0% 14 / 14


Programs: 10 Runs 17866


       1                 : //===-- CompilerInvocation.h - Compiler Invocation Helper Data --*- C++ -*-===//
       2                 : //
       3                 : //                     The LLVM Compiler Infrastructure
       4                 : //
       5                 : // This file is distributed under the University of Illinois Open Source
       6                 : // License. See LICENSE.TXT for details.
       7                 : //
       8                 : //===----------------------------------------------------------------------===//
       9                 : 
      10                 : #ifndef LLVM_CLANG_FRONTEND_COMPILERINVOCATION_H_
      11                 : #define LLVM_CLANG_FRONTEND_COMPILERINVOCATION_H_
      12                 : 
      13                 : #include "clang/Basic/LangOptions.h"
      14                 : #include "clang/Basic/TargetOptions.h"
      15                 : #include "clang/CodeGen/CodeGenOptions.h"
      16                 : #include "clang/Frontend/AnalysisConsumer.h"
      17                 : #include "clang/Frontend/DependencyOutputOptions.h"
      18                 : #include "clang/Frontend/DiagnosticOptions.h"
      19                 : #include "clang/Frontend/FrontendOptions.h"
      20                 : #include "clang/Frontend/HeaderSearchOptions.h"
      21                 : #include "clang/Frontend/PreprocessorOptions.h"
      22                 : #include "clang/Frontend/PreprocessorOutputOptions.h"
      23                 : #include "llvm/ADT/StringRef.h"
      24                 : #include "llvm/ADT/StringMap.h"
      25                 : #include <string>
      26                 : #include <vector>
      27                 : 
      28                 : namespace llvm {
      29                 :   template<typename T> class SmallVectorImpl;
      30                 : }
      31                 : 
      32                 : namespace clang {
      33                 : 
      34                 : class Diagnostic;
      35                 : 
      36                 : /// CompilerInvocation - Helper class for holding the data necessary to invoke
      37                 : /// the compiler.
      38                 : ///
      39                 : /// This class is designed to represent an abstract "invocation" of the
      40                 : /// compiler, including data such as the include paths, the code generation
      41                 : /// options, the warning flags, and so on.
      42             2532: class CompilerInvocation {
      43                 :   /// Options controlling the static analyzer.
      44                 :   AnalyzerOptions AnalyzerOpts;
      45                 : 
      46                 :   /// Options controlling IRgen and the backend.
      47                 :   CodeGenOptions CodeGenOpts;
      48                 : 
      49                 :   /// Options controlling dependency output.
      50                 :   DependencyOutputOptions DependencyOutputOpts;
      51                 : 
      52                 :   /// Options controlling the diagnostic engine.
      53                 :   DiagnosticOptions DiagnosticOpts;
      54                 : 
      55                 :   /// Options controlling the frontend itself.
      56                 :   FrontendOptions FrontendOpts;
      57                 : 
      58                 :   /// Options controlling the #include directive.
      59                 :   HeaderSearchOptions HeaderSearchOpts;
      60                 : 
      61                 :   /// Options controlling the language variant.
      62                 :   LangOptions LangOpts;
      63                 : 
      64                 :   /// Options controlling the preprocessor (aside from #include handling).
      65                 :   PreprocessorOptions PreprocessorOpts;
      66                 : 
      67                 :   /// Options controlling preprocessed output.
      68                 :   PreprocessorOutputOptions PreprocessorOutputOpts;
      69                 : 
      70                 :   /// Options controlling the target.
      71                 :   TargetOptions TargetOpts;
      72                 : 
      73                 : public:
      74             2532:   CompilerInvocation() {}
      75                 : 
      76                 :   /// @name Utility Methods
      77                 :   /// @{
      78                 : 
      79                 :   /// CreateFromArgs - Create a compiler invocation from a list of input
      80                 :   /// options.
      81                 :   ///
      82                 :   /// \param Res [out] - The resulting invocation.
      83                 :   /// \param ArgBegin - The first element in the argument vector.
      84                 :   /// \param ArgEnd - The last element in the argument vector.
      85                 :   /// \param Diags - The diagnostic engine to use for errors.
      86                 :   static void CreateFromArgs(CompilerInvocation &Res, const char **ArgBegin,
      87                 :                              const char **ArgEnd, Diagnostic &Diags);
      88                 : 
      89                 :   /// GetBuiltinIncludePath - Get the directory where the compiler headers
      90                 :   /// reside, relative to the compiler binary (found by the passed in
      91                 :   /// arguments).
      92                 :   ///
      93                 :   /// \param Argv0 - The program path (from argv[0]), for finding the builtin
      94                 :   /// compiler path.
      95                 :   /// \param MainAddr - The address of main (or some other function in the main
      96                 :   /// executable), for finding the builtin compiler path.
      97                 :   static std::string GetResourcesPath(const char *Argv0, void *MainAddr);
      98                 : 
      99                 :   /// toArgs - Convert the CompilerInvocation to a list of strings suitable for
     100                 :   /// passing to CreateFromArgs.
     101                 :   void toArgs(std::vector<std::string> &Res);
     102                 : 
     103                 :   /// @}
     104                 :   /// @name Option Subgroups
     105                 :   /// @{
     106                 : 
     107             2711:   AnalyzerOptions &getAnalyzerOpts() { return AnalyzerOpts; }
     108                 :   const AnalyzerOptions &getAnalyzerOpts() const {
     109                 :     return AnalyzerOpts;
     110                 :   }
     111                 : 
     112             3148:   CodeGenOptions &getCodeGenOpts() { return CodeGenOpts; }
     113                 :   const CodeGenOptions &getCodeGenOpts() const {
     114                 :     return CodeGenOpts;
     115                 :   }
     116                 : 
     117             5043:   DependencyOutputOptions &getDependencyOutputOpts() {
     118             5043:     return DependencyOutputOpts;
     119                 :   }
     120                 :   const DependencyOutputOptions &getDependencyOutputOpts() const {
     121                 :     return DependencyOutputOpts;
     122                 :   }
     123                 : 
     124            10114:   DiagnosticOptions &getDiagnosticOpts() { return DiagnosticOpts; }
     125                 :   const DiagnosticOptions &getDiagnosticOpts() const { return DiagnosticOpts; }
     126                 : 
     127            15044:   HeaderSearchOptions &getHeaderSearchOpts() { return HeaderSearchOpts; }
     128                 :   const HeaderSearchOptions &getHeaderSearchOpts() const {
     129                 :     return HeaderSearchOpts;
     130                 :   }
     131                 : 
     132            50699:   FrontendOptions &getFrontendOpts() { return FrontendOpts; }
     133                 :   const FrontendOptions &getFrontendOpts() const {
     134                 :     return FrontendOpts;
     135                 :   }
     136                 : 
     137            13008:   LangOptions &getLangOpts() { return LangOpts; }
     138                 :   const LangOptions &getLangOpts() const { return LangOpts; }
     139                 : 
     140             7317:   PreprocessorOptions &getPreprocessorOpts() { return PreprocessorOpts; }
     141                 :   const PreprocessorOptions &getPreprocessorOpts() const {
     142                 :     return PreprocessorOpts;
     143                 :   }
     144                 : 
     145             2768:   PreprocessorOutputOptions &getPreprocessorOutputOpts() {
     146             2768:     return PreprocessorOutputOpts;
     147                 :   }
     148                 :   const PreprocessorOutputOptions &getPreprocessorOutputOpts() const {
     149                 :     return PreprocessorOutputOpts;
     150                 :   }
     151                 : 
     152             5670:   TargetOptions &getTargetOpts() { return TargetOpts; }
     153                 :   const TargetOptions &getTargetOpts() const {
     154                 :     return TargetOpts;
     155                 :   }
     156                 : 
     157                 :   /// @}
     158                 : };
     159                 : 
     160                 : } // end namespace clang
     161                 : 
     162                 : #endif

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