10 #ifndef LLVM_CLANG_SERIALIZATION_MODULEFILEEXTENSION_H
11 #define LLVM_CLANG_SERIALIZATION_MODULEFILEEXTENSION_H
13 #include "llvm/ADT/IntrusiveRefCntPtr.h"
18 class BitstreamCursor;
19 class BitstreamWriter;
30 namespace serialization {
83 virtual llvm::hash_code
hashExtension(llvm::hash_code c)
const;
88 virtual std::unique_ptr<ModuleFileExtensionWriter>
97 virtual std::unique_ptr<ModuleFileExtensionReader>
100 const llvm::BitstreamCursor &Stream) = 0;
110 : Extension(Extension) { }
125 llvm::BitstreamWriter &Stream) = 0;
137 : Extension(Extension) { }
149 #endif // LLVM_CLANG_FRONTEND_MODULEFILEEXTENSION_H
virtual std::unique_ptr< ModuleFileExtensionWriter > createExtensionWriter(ASTWriter &Writer)=0
Create a new module file extension writer, which will be responsible for writing the extension conten...
virtual ~ModuleFileExtensionReader()
virtual ~ModuleFileExtension()
ModuleFileExtensionWriter(ModuleFileExtension *Extension)
virtual ~ModuleFileExtensionWriter()
virtual std::unique_ptr< ModuleFileExtensionReader > createExtensionReader(const ModuleFileExtensionMetadata &Metadata, ASTReader &Reader, serialization::ModuleFile &Mod, const llvm::BitstreamCursor &Stream)=0
Create a new module file extension reader, given the metadata read from the block and the cursor into...
Sema - This implements semantic analysis and AST building for C.
ModuleFileExtension * getExtension() const
Retrieve the module file extension with which this reader is associated.
Abstract base class that reads a module file extension block from a module file.
Information about a module that has been loaded by the ASTReader.
Abstract base class that writes a module file extension block into a module file. ...
virtual void writeExtensionContents(Sema &SemaRef, llvm::BitstreamWriter &Stream)=0
Write the contents of the extension block into the given bitstream.
ModuleFileExtensionReader(ModuleFileExtension *Extension)
ModuleFileExtension * getExtension() const
Retrieve the module file extension with which this writer is associated.
virtual ModuleFileExtensionMetadata getExtensionMetadata() const =0
Retrieves the metadata for this module file extension.
Reads an AST files chain containing the contents of a translation unit.
virtual llvm::hash_code hashExtension(llvm::hash_code c) const
Hash information about the presence of this extension into the module hash code.
Writes an AST file containing the contents of a translation unit.
An abstract superclass that describes a custom extension to the module/precompiled header file format...