10 #ifndef LLVM_CLANG_PCH_CONTAINER_OPERATIONS_H
11 #define LLVM_CLANG_PCH_CONTAINER_OPERATIONS_H
13 #include "llvm/ADT/SmallVector.h"
14 #include "llvm/ADT/StringMap.h"
15 #include "llvm/Support/MemoryBuffer.h"
19 class raw_pwrite_stream;
20 class BitstreamReader;
23 using llvm::StringRef;
29 class DiagnosticsEngine;
30 class CompilerInstance;
49 virtual std::unique_ptr<ASTConsumer>
51 const std::string &MainFileName,
52 const std::string &OutputFileName,
53 std::unique_ptr<llvm::raw_pwrite_stream> OS,
54 std::shared_ptr<PCHBuffer>
Buffer)
const = 0;
69 llvm::BitstreamReader &StreamFile)
const = 0;
74 StringRef getFormat()
const override {
return "raw"; }
78 std::unique_ptr<ASTConsumer>
80 const std::string &MainFileName,
81 const std::string &OutputFileName,
82 std::unique_ptr<llvm::raw_pwrite_stream> OS,
83 std::shared_ptr<PCHBuffer>
Buffer)
const override;
88 StringRef getFormat()
const override {
return "raw"; }
91 void ExtractPCH(llvm::MemoryBufferRef
Buffer,
92 llvm::BitstreamReader &StreamFile)
const override;
97 llvm::StringMap<std::unique_ptr<PCHContainerWriter>> Writers;
98 llvm::StringMap<std::unique_ptr<PCHContainerReader>> Readers;
104 Writers[Writer->getFormat()] = std::move(Writer);
107 Readers[Reader->getFormat()] = std::move(Reader);
110 return Writers[Format].get();
113 return Readers[Format].get();
std::unique_ptr< llvm::MemoryBuffer > Buffer
A registry of PCHContainerWriter and -Reader objects for different formats.
This abstract interface provides operations for creating containers for serialized ASTs (precompiled ...
const PCHContainerWriter * getWriterOrNull(StringRef Format)
This abstract interface provides operations for unwrapping containers for serialized ASTs (precompile...
void registerReader(std::unique_ptr< PCHContainerReader > Reader)
virtual StringRef getFormat() const =0
const PCHContainerReader & getRawReader()
virtual void ExtractPCH(llvm::MemoryBufferRef Buffer, llvm::BitstreamReader &StreamFile) const =0
Initialize an llvm::BitstreamReader with the serialized AST inside the PCH container Buffer...
CompilerInstance - Helper class for managing a single instance of the Clang compiler.
const PCHContainerReader * getReaderOrNull(StringRef Format)
virtual ~PCHContainerReader()=0
virtual StringRef getFormat() const =0
Equivalent to the format passed to -fmodule-format=.
PCHContainerOperations()
Automatically registers a RawPCHContainerWriter and RawPCHContainerReader.
virtual std::unique_ptr< ASTConsumer > CreatePCHContainerGenerator(CompilerInstance &CI, const std::string &MainFileName, const std::string &OutputFileName, std::unique_ptr< llvm::raw_pwrite_stream > OS, std::shared_ptr< PCHBuffer > Buffer) const =0
Return an ASTConsumer that can be chained with a PCHGenerator that produces a wrapper file format con...
Implements read operations for a raw pass-through PCH container.
llvm::SmallVector< char, 0 > Data
void registerWriter(std::unique_ptr< PCHContainerWriter > Writer)
virtual ~PCHContainerWriter()=0
Implements write operations for a raw pass-through PCH container.