;
20TestModuleFileExtension::Writer::~Writer() { }
22voidTestModuleFileExtension::Writer::writeExtensionContents(
24llvm::BitstreamWriter &Stream) {
25 using namespace llvm;
28 autoAbv = std::make_shared<llvm::BitCodeAbbrev>();
30Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6));
31Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob));
32 autoAbbrev = Stream.EmitAbbrev(std::move(Abv));
38raw_svector_ostream OS(Message);
39OS <<
"Hello from "<< Ext->BlockName <<
" v"<< Ext->MajorVersion <<
"." 43Stream.EmitRecordWithBlob(Abbrev,
Record, Message);
47 constllvm::BitstreamCursor &InStream)
54Stream.advanceSkippingSubblocks();
56(void)MaybeEntry.takeError();
57llvm::BitstreamEntry Entry = MaybeEntry.get();
60 casellvm::BitstreamEntry::SubBlock:
61 casellvm::BitstreamEntry::EndBlock:
62 casellvm::BitstreamEntry::Error:
65 casellvm::BitstreamEntry::Record:
72Stream.readRecord(Entry.ID,
Record, &Blob);
74fprintf(stderr,
"Failed reading rec code: %s\n",
75 toString(MaybeRecCode.takeError()).c_str());
76 switch(MaybeRecCode.get()) {
78StringRef Message = Blob.substr(0,
Record[0]);
79fprintf(stderr,
"Read extension block message: %s\n",
80Message.str().c_str());
87TestModuleFileExtension::Reader::~Reader() { }
93 return{ BlockName, MajorVersion, MinorVersion, UserInfo };
97ExtensionHashBuilder &HBuilder)
const{
99HBuilder.add(BlockName);
100HBuilder.add(MajorVersion);
101HBuilder.add(MinorVersion);
102HBuilder.add(UserInfo);
106std::unique_ptr<ModuleFileExtensionWriter>
108 returnstd::unique_ptr<ModuleFileExtensionWriter>(
newWriter(
this));
111std::unique_ptr<ModuleFileExtensionReader>
115 constllvm::BitstreamCursor &Stream)
117assert(Metadata.
BlockName== BlockName &&
"Wrong block name");
119std::make_pair(MajorVersion, MinorVersion)) {
121diag::err_test_module_file_extension_version)
123<< MajorVersion << MinorVersion;
127 returnstd::unique_ptr<ModuleFileExtensionReader>(
128 newTestModuleFileExtension::Reader(
this, Stream));
133llvm::raw_string_ostream OS(Buffer);
134OS << BlockName <<
":"<< MajorVersion <<
":"<< MinorVersion <<
":"<< Hashed
llvm::MachO::Record Record
static std::string toString(const clang::SanitizerSet &Sanitizers)
Produce a string containing comma-separated names of sanitizers in Sanitizers set.
Reads an AST files chain containing the contents of a translation unit.
DiagnosticsEngine & getDiags() const
Writes an AST file containing the contents of a translation unit.
DiagnosticBuilder Report(SourceLocation Loc, unsigned DiagID)
Issue the message to the client.
Abstract base class that reads a module file extension block from a module file.
An abstract superclass that describes a custom extension to the module/precompiled header file format...
Sema - This implements semantic analysis and AST building for C.
A module file extension used for testing purposes.
ModuleFileExtensionMetadata getExtensionMetadata() const override
~TestModuleFileExtension() override
std::unique_ptr< ModuleFileExtensionWriter > createExtensionWriter(ASTWriter &Writer) override
void hashExtension(ExtensionHashBuilder &HBuilder) const override
std::unique_ptr< ModuleFileExtensionReader > createExtensionReader(const ModuleFileExtensionMetadata &Metadata, ASTReader &Reader, serialization::ModuleFile &Mod, const llvm::BitstreamCursor &Stream) override
Information about a module that has been loaded by the ASTReader.
SourceLocation ImportLoc
The source location where this module was first imported.
@ FIRST_EXTENSION_RECORD_ID
The first record ID allocated to the extensions themselves.
The JSON file list parser is used to communicate input to InstallAPI.
Diagnostic wrappers for TextAPI types for error reporting.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4