summaryrefslogtreecommitdiff
path: root/external/apache2/llvm/dist/clang/lib/Frontend/TestModuleFileExtension.h
diff options
context:
space:
mode:
authorjoerg <joerg@NetBSD.org>2019-11-08 14:28:07 +0000
committerjoerg <joerg@NetBSD.org>2019-11-08 14:28:07 +0000
commit06f32e7ed0e1e34c680117c640fa1a15cb3b1c68 (patch)
treea8ccc0d5a51ecf6c13cbe2bc43d4a6b01303d9a1 /external/apache2/llvm/dist/clang/lib/Frontend/TestModuleFileExtension.h
parent9e0c3fe94901b8278eec6ee629bac2a9937b6a84 (diff)
Import 01f3a59fb3e2542fce74c768718f594d0debd0da from the LLVM mono-repo:
clang (without test/, unittests/, www/) llvm (without test/, unittests/)
Diffstat (limited to 'external/apache2/llvm/dist/clang/lib/Frontend/TestModuleFileExtension.h')
-rw-r--r--external/apache2/llvm/dist/clang/lib/Frontend/TestModuleFileExtension.h71
1 files changed, 71 insertions, 0 deletions
diff --git a/external/apache2/llvm/dist/clang/lib/Frontend/TestModuleFileExtension.h b/external/apache2/llvm/dist/clang/lib/Frontend/TestModuleFileExtension.h
new file mode 100644
index 00000000000..13e090783b1
--- /dev/null
+++ b/external/apache2/llvm/dist/clang/lib/Frontend/TestModuleFileExtension.h
@@ -0,0 +1,71 @@
+//===-- TestModuleFileExtension.h - Module Extension Tester -----*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+#ifndef LLVM_CLANG_FRONTEND_TESTMODULEFILEEXTENSION_H
+#define LLVM_CLANG_FRONTEND_TESTMODULEFILEEXTENSION_H
+
+#include "clang/Serialization/ModuleFileExtension.h"
+#include "clang/Basic/LLVM.h"
+#include "llvm/ADT/StringRef.h"
+#include "llvm/Bitstream/BitstreamReader.h"
+#include <string>
+
+namespace clang {
+
+/// A module file extension used for testing purposes.
+class TestModuleFileExtension : public ModuleFileExtension {
+ std::string BlockName;
+ unsigned MajorVersion;
+ unsigned MinorVersion;
+ bool Hashed;
+ std::string UserInfo;
+
+ class Writer : public ModuleFileExtensionWriter {
+ public:
+ Writer(ModuleFileExtension *Ext) : ModuleFileExtensionWriter(Ext) { }
+ ~Writer() override;
+
+ void writeExtensionContents(Sema &SemaRef,
+ llvm::BitstreamWriter &Stream) override;
+ };
+
+ class Reader : public ModuleFileExtensionReader {
+ llvm::BitstreamCursor Stream;
+
+ public:
+ ~Reader() override;
+
+ Reader(ModuleFileExtension *Ext, const llvm::BitstreamCursor &InStream);
+ };
+
+public:
+ TestModuleFileExtension(StringRef BlockName,
+ unsigned MajorVersion,
+ unsigned MinorVersion,
+ bool Hashed,
+ StringRef UserInfo)
+ : BlockName(BlockName),
+ MajorVersion(MajorVersion), MinorVersion(MinorVersion),
+ Hashed(Hashed), UserInfo(UserInfo) { }
+ ~TestModuleFileExtension() override;
+
+ ModuleFileExtensionMetadata getExtensionMetadata() const override;
+
+ llvm::hash_code hashExtension(llvm::hash_code Code) const override;
+
+ std::unique_ptr<ModuleFileExtensionWriter>
+ createExtensionWriter(ASTWriter &Writer) override;
+
+ std::unique_ptr<ModuleFileExtensionReader>
+ createExtensionReader(const ModuleFileExtensionMetadata &Metadata,
+ ASTReader &Reader, serialization::ModuleFile &Mod,
+ const llvm::BitstreamCursor &Stream) override;
+};
+
+} // end namespace clang
+
+#endif // LLVM_CLANG_FRONTEND_TESTMODULEFILEEXTENSION_H