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 HeaderSearchOptions;
32 class PreprocessorOptions;
54 const LangOptions &LO,
const std::string &MainFileName,
55 const std::string &OutputFileName, llvm::raw_pwrite_stream *OS,
56 std::shared_ptr<PCHBuffer> Buffer)
const = 0;
70 virtual void ExtractPCH(llvm::MemoryBufferRef Buffer,
71 llvm::BitstreamReader &StreamFile)
const = 0;
76 StringRef getFormat()
const override {
return "raw"; }
80 std::unique_ptr<ASTConsumer> CreatePCHContainerGenerator(
83 const LangOptions &LO,
const std::string &MainFileName,
84 const std::string &OutputFileName, llvm::raw_pwrite_stream *OS,
85 std::shared_ptr<PCHBuffer> Buffer)
const override;
90 StringRef getFormat()
const override {
return "raw"; }
93 void ExtractPCH(llvm::MemoryBufferRef Buffer,
94 llvm::BitstreamReader &StreamFile)
const override;
99 llvm::StringMap<std::unique_ptr<PCHContainerWriter>> Writers;
100 llvm::StringMap<std::unique_ptr<PCHContainerReader>> Readers;
106 Writers[Writer->getFormat()] = std::move(Writer);
109 Readers[Reader->getFormat()] = std::move(Reader);
112 return Writers[Format].get();
115 return Readers[Format].get();
Options for controlling the target.
A registry of PCHContainerWriter and -Reader objects for different formats.
Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...
const PCHContainerWriter * getWriterOrNull(StringRef Format)
Concrete class used by the front-end to report problems and issues.
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
const PCHContainerReader * getReaderOrNull(StringRef Format)
virtual ~PCHContainerReader()=0
virtual StringRef getFormat() const =0
Equivalent to the format passed to -fmodule-format=.
Implements read operations for a raw pass-through PCH container.
llvm::SmallVector< char, 0 > Data
void registerWriter(std::unique_ptr< PCHContainerWriter > Writer)
virtual std::unique_ptr< ASTConsumer > CreatePCHContainerGenerator(DiagnosticsEngine &Diags, const HeaderSearchOptions &HSO, const PreprocessorOptions &PPO, const TargetOptions &TO, const LangOptions &LO, const std::string &MainFileName, const std::string &OutputFileName, llvm::raw_pwrite_stream *OS, std::shared_ptr< PCHBuffer > Buffer) const =0
virtual ~PCHContainerWriter()=0
Implements write operations for a raw pass-through PCH container.