clang: include/clang/Serialization/ModuleFileExtension.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9#ifndef LLVM_CLANG_SERIALIZATION_MODULEFILEEXTENSION_H
10#define LLVM_CLANG_SERIALIZATION_MODULEFILEEXTENSION_H
11
12#include "llvm/Support/ExtensibleRTTI.h"
13#include "llvm/Support/HashBuilder.h"
14#include "llvm/Support/MD5.h"
15#include
16#include
17
18namespace llvm {
19class BitstreamCursor;
20class BitstreamWriter;
21class raw_ostream;
22}
23
25
26class ASTReader;
27class ASTWriter;
28class Sema;
29
30namespace serialization {
32}
33
34
36
37
38
39
41
42
44
45
47
48
49
51};
52
55
56
57
58
59
60
61
62
63
64
66 : public llvm::RTTIExtends<ModuleFileExtension, llvm::RTTIRoot> {
67public:
68
70
72
73
75
76
77
78
79
80
81
82
83
84
85
86
88 llvm::HashBuilder<llvm::MD5, llvm::endianness::native>;
90
91
92
93
94 virtual std::unique_ptr
96
97
98
99
100
101
102
103 virtual std::unique_ptr
106 const llvm::BitstreamCursor &Stream) = 0;
107};
108
109
110
113
114protected:
116 : Extension(Extension) { }
117
118public:
120
121
122
124
125
126
127
128
129
131 llvm::BitstreamWriter &Stream) = 0;
132};
133
134
135
136
137
140
141protected:
143 : Extension(Extension) { }
144
145public:
146
147
149
151};
152
153}
154
155#endif
Reads an AST files chain containing the contents of a translation unit.
Writes an AST file containing the contents of a translation unit.
Abstract base class that reads a module file extension block from a module file.
ModuleFileExtension * getExtension() const
Retrieve the module file extension with which this reader is associated.
virtual ~ModuleFileExtensionReader()
ModuleFileExtensionReader(ModuleFileExtension *Extension)
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.
ModuleFileExtension * getExtension() const
Retrieve the module file extension with which this writer is associated.
virtual ~ModuleFileExtensionWriter()
ModuleFileExtensionWriter(ModuleFileExtension *Extension)
An abstract superclass that describes a custom extension to the module/precompiled header file format...
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...
static char ID
Discriminator for LLVM RTTI.
llvm::HashBuilder< llvm::MD5, llvm::endianness::native > ExtensionHashBuilder
Hash information about the presence of this extension into the module hash.
virtual void hashExtension(ExtensionHashBuilder &HBuilder) const
virtual ModuleFileExtensionMetadata getExtensionMetadata() const =0
Retrieves the metadata for this module file extension.
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 ~ModuleFileExtension()
Sema - This implements semantic analysis and AST building for C.
Information about a module that has been loaded by the ASTReader.
The JSON file list parser is used to communicate input to InstallAPI.
Diagnostic wrappers for TextAPI types for error reporting.