Home | History | Annotate | Download | only in CodeGen
      1 //===-- CodeGen/ObjectFilePCHContainerOperations.h - ------------*- 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_CODEGEN_OBJECT_FILE_PCH_CONTAINER_OPERATIONS_H
     11 #define LLVM_CLANG_CODEGEN_OBJECT_FILE_PCH_CONTAINER_OPERATIONS_H
     12 
     13 #include "clang/Frontend/PCHContainerOperations.h"
     14 
     15 namespace clang {
     16 
     17 /// A PCHContainerWriter implementation that uses LLVM to
     18 /// wraps Clang modules inside a COFF, ELF, or Mach-O container.
     19 class ObjectFilePCHContainerWriter : public PCHContainerWriter {
     20   StringRef getFormat() const override { return "obj"; }
     21 
     22   /// Return an ASTConsumer that can be chained with a
     23   /// PCHGenerator that produces a wrapper file format
     24   /// that also contains full debug info for the module.
     25   std::unique_ptr<ASTConsumer>
     26   CreatePCHContainerGenerator(CompilerInstance &CI,
     27                               const std::string &MainFileName,
     28                               const std::string &OutputFileName,
     29                               std::unique_ptr<llvm::raw_pwrite_stream> OS,
     30                               std::shared_ptr<PCHBuffer> Buffer) const override;
     31 };
     32 
     33 /// A PCHContainerReader implementation that uses LLVM to
     34 /// wraps Clang modules inside a COFF, ELF, or Mach-O container.
     35 class ObjectFilePCHContainerReader : public PCHContainerReader {
     36   StringRef getFormat() const override { return "obj"; }
     37 
     38   /// Returns the serialized AST inside the PCH container Buffer.
     39   StringRef ExtractPCH(llvm::MemoryBufferRef Buffer) const override;
     40 };
     41 }
     42 
     43 #endif
     44