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

69 static char ID;

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.