annotate clang/lib/Frontend/TestModuleFileExtension.h @ 207:2e18cbf3894f

LLVM12
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 08 Jun 2021 06:07:14 +0900
parents 1d019706d866
children c4bab56944e8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 //===-- TestModuleFileExtension.h - Module Extension Tester -----*- C++ -*-===//
anatofuz
parents:
diff changeset
2 //
anatofuz
parents:
diff changeset
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
anatofuz
parents:
diff changeset
4 // See https://llvm.org/LICENSE.txt for license information.
anatofuz
parents:
diff changeset
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
anatofuz
parents:
diff changeset
6 //
anatofuz
parents:
diff changeset
7 //===----------------------------------------------------------------------===//
anatofuz
parents:
diff changeset
8 #ifndef LLVM_CLANG_FRONTEND_TESTMODULEFILEEXTENSION_H
anatofuz
parents:
diff changeset
9 #define LLVM_CLANG_FRONTEND_TESTMODULEFILEEXTENSION_H
anatofuz
parents:
diff changeset
10
anatofuz
parents:
diff changeset
11 #include "clang/Serialization/ModuleFileExtension.h"
anatofuz
parents:
diff changeset
12 #include "clang/Basic/LLVM.h"
anatofuz
parents:
diff changeset
13 #include "llvm/ADT/StringRef.h"
anatofuz
parents:
diff changeset
14 #include "llvm/Bitstream/BitstreamReader.h"
anatofuz
parents:
diff changeset
15 #include <string>
anatofuz
parents:
diff changeset
16
anatofuz
parents:
diff changeset
17 namespace clang {
anatofuz
parents:
diff changeset
18
anatofuz
parents:
diff changeset
19 /// A module file extension used for testing purposes.
207
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
20 class TestModuleFileExtension
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
21 : public llvm::RTTIExtends<TestModuleFileExtension, ModuleFileExtension> {
150
anatofuz
parents:
diff changeset
22 std::string BlockName;
anatofuz
parents:
diff changeset
23 unsigned MajorVersion;
anatofuz
parents:
diff changeset
24 unsigned MinorVersion;
anatofuz
parents:
diff changeset
25 bool Hashed;
anatofuz
parents:
diff changeset
26 std::string UserInfo;
anatofuz
parents:
diff changeset
27
anatofuz
parents:
diff changeset
28 class Writer : public ModuleFileExtensionWriter {
anatofuz
parents:
diff changeset
29 public:
anatofuz
parents:
diff changeset
30 Writer(ModuleFileExtension *Ext) : ModuleFileExtensionWriter(Ext) { }
anatofuz
parents:
diff changeset
31 ~Writer() override;
anatofuz
parents:
diff changeset
32
anatofuz
parents:
diff changeset
33 void writeExtensionContents(Sema &SemaRef,
anatofuz
parents:
diff changeset
34 llvm::BitstreamWriter &Stream) override;
anatofuz
parents:
diff changeset
35 };
anatofuz
parents:
diff changeset
36
anatofuz
parents:
diff changeset
37 class Reader : public ModuleFileExtensionReader {
anatofuz
parents:
diff changeset
38 llvm::BitstreamCursor Stream;
anatofuz
parents:
diff changeset
39
anatofuz
parents:
diff changeset
40 public:
anatofuz
parents:
diff changeset
41 ~Reader() override;
anatofuz
parents:
diff changeset
42
anatofuz
parents:
diff changeset
43 Reader(ModuleFileExtension *Ext, const llvm::BitstreamCursor &InStream);
anatofuz
parents:
diff changeset
44 };
anatofuz
parents:
diff changeset
45
anatofuz
parents:
diff changeset
46 public:
207
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
47 static char ID;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
48
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
49 TestModuleFileExtension(StringRef BlockName, unsigned MajorVersion,
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
50 unsigned MinorVersion, bool Hashed,
150
anatofuz
parents:
diff changeset
51 StringRef UserInfo)
207
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
52 : BlockName(BlockName), MajorVersion(MajorVersion),
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
53 MinorVersion(MinorVersion), Hashed(Hashed), UserInfo(UserInfo) {}
150
anatofuz
parents:
diff changeset
54 ~TestModuleFileExtension() override;
anatofuz
parents:
diff changeset
55
anatofuz
parents:
diff changeset
56 ModuleFileExtensionMetadata getExtensionMetadata() const override;
anatofuz
parents:
diff changeset
57
anatofuz
parents:
diff changeset
58 llvm::hash_code hashExtension(llvm::hash_code Code) const override;
anatofuz
parents:
diff changeset
59
anatofuz
parents:
diff changeset
60 std::unique_ptr<ModuleFileExtensionWriter>
anatofuz
parents:
diff changeset
61 createExtensionWriter(ASTWriter &Writer) override;
anatofuz
parents:
diff changeset
62
anatofuz
parents:
diff changeset
63 std::unique_ptr<ModuleFileExtensionReader>
anatofuz
parents:
diff changeset
64 createExtensionReader(const ModuleFileExtensionMetadata &Metadata,
anatofuz
parents:
diff changeset
65 ASTReader &Reader, serialization::ModuleFile &Mod,
anatofuz
parents:
diff changeset
66 const llvm::BitstreamCursor &Stream) override;
207
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
67
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
68 std::string str() const;
150
anatofuz
parents:
diff changeset
69 };
anatofuz
parents:
diff changeset
70
anatofuz
parents:
diff changeset
71 } // end namespace clang
anatofuz
parents:
diff changeset
72
anatofuz
parents:
diff changeset
73 #endif // LLVM_CLANG_FRONTEND_TESTMODULEFILEEXTENSION_H