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 DiagnosticsEngine;
27  class LangOptions;
28  class CodeGenOptions;
29  class TargetOptions;
30
31  class CodeGenerator : public ASTConsumer {
32    virtual void anchor();
33  public:
34    virtual llvm::Module* GetModule() = 0;
35    virtual llvm::Module* ReleaseModule() = 0;
36  };
37
38  /// CreateLLVMCodeGen - Create a CodeGenerator instance.
39  /// It is the responsibility of the caller to call delete on
40  /// the allocated CodeGenerator instance.
41  CodeGenerator *CreateLLVMCodeGen(DiagnosticsEngine &Diags,
42                                   const std::string &ModuleName,
43                                   const CodeGenOptions &CGO,
44                                   const TargetOptions &TO,
45                                   llvm::LLVMContext& C);
46}
47
48#endif
49