16 #include "llvm/Bitcode/BitstreamReader.h"
17 #include "llvm/Support/raw_ostream.h"
20 using namespace clang;
25 class RawPCHContainerGenerator :
public ASTConsumer {
26 std::shared_ptr<PCHBuffer>
Buffer;
27 raw_pwrite_stream *OS;
30 RawPCHContainerGenerator(llvm::raw_pwrite_stream *OS,
31 std::shared_ptr<PCHBuffer>
Buffer)
32 : Buffer(Buffer), OS(OS) {}
34 ~RawPCHContainerGenerator()
override =
default;
36 void HandleTranslationUnit(
ASTContext &Ctx)
override {
44 Buffer->Data = std::move(Empty);
50 std::unique_ptr<ASTConsumer> RawPCHContainerWriter::CreatePCHContainerGenerator(
52 const std::string &OutputFileName, llvm::raw_pwrite_stream *OS,
53 std::shared_ptr<PCHBuffer>
Buffer)
const {
54 return llvm::make_unique<RawPCHContainerGenerator>(OS,
Buffer);
57 void RawPCHContainerReader::ExtractPCH(
58 llvm::MemoryBufferRef
Buffer, llvm::BitstreamReader &StreamFile)
const {
59 StreamFile.init((
const unsigned char *)Buffer.getBufferStart(),
60 (
const unsigned char *)Buffer.getBufferEnd());
ASTConsumer - This is an abstract interface that should be implemented by clients that read ASTs...
std::unique_ptr< llvm::MemoryBuffer > Buffer
Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...
void registerReader(std::unique_ptr< PCHContainerReader > Reader)
CompilerInstance - Helper class for managing a single instance of the Clang compiler.
PCHContainerOperations()
Automatically registers a RawPCHContainerWriter and RawPCHContainerReader.
void registerWriter(std::unique_ptr< PCHContainerWriter > Writer)