ModuleBuilder.h revision 210299
1//===--- CodeGen/ModuleBuilder.h - Build LLVM from ASTs ---------*- 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//  This file defines the ModuleBuilder interface.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef LLVM_CLANG_CODEGEN_MODULEBUILDER_H
15#define LLVM_CLANG_CODEGEN_MODULEBUILDER_H
16
17#include "clang/AST/ASTConsumer.h"
18#include <string>
19
20namespace llvm {
21  class LLVMContext;
22  class Module;
23}
24
25namespace clang {
26  class Diagnostic;
27  class LangOptions;
28  class CodeGenOptions;
29
30  class CodeGenerator : public ASTConsumer {
31  public:
32    virtual llvm::Module* GetModule() = 0;
33    virtual llvm::Module* ReleaseModule() = 0;
34  };
35
36  /// CreateLLVMCodeGen - Create a CodeGenerator instance.
37  /// It is the responsibility of the caller to call delete on
38  /// the allocated CodeGenerator instance.
39  CodeGenerator *CreateLLVMCodeGen(Diagnostic &Diags,
40                                   const std::string &ModuleName,
41                                   const CodeGenOptions &CGO,
42                                   llvm::LLVMContext& C);
43}
44
45#endif
46