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;
51 const std::string &OutputFileName, llvm::raw_pwrite_stream *OS,
52 std::shared_ptr<PCHBuffer>
Buffer)
const = 0;
67 llvm::BitstreamReader &StreamFile)
const = 0;
72 StringRef getFormat()
const override {
return "raw"; }
76 std::unique_ptr<ASTConsumer> CreatePCHContainerGenerator(
78 const std::string &OutputFileName, llvm::raw_pwrite_stream *OS,
79 std::shared_ptr<PCHBuffer>
Buffer)
const override;
84 StringRef getFormat()
const override {
return "raw"; }
87 void ExtractPCH(llvm::MemoryBufferRef
Buffer,
88 llvm::BitstreamReader &StreamFile)
const override;
93 llvm::StringMap<std::unique_ptr<PCHContainerWriter>> Writers;
94 llvm::StringMap<std::unique_ptr<PCHContainerReader>> Readers;
100 Writers[Writer->getFormat()] = std::move(Writer);
103 Readers[Reader->getFormat()] = std::move(Reader);
106 return Writers[Format].get();
109 return Readers[Format].get();
std::unique_ptr< llvm::MemoryBuffer > Buffer
A registry of PCHContainerWriter and -Reader objects for different formats.
virtual std::unique_ptr< ASTConsumer > CreatePCHContainerGenerator(CompilerInstance &CI, const std::string &MainFileName, const std::string &OutputFileName, 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...
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.
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.