You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.3 KiB
72 lines
2.3 KiB
//===-- TestModuleFileExtension.h - Module Extension Tester -----*- C++ -*-===// |
|
// |
|
// The LLVM Compiler Infrastructure |
|
// |
|
// This file is distributed under the University of Illinois Open Source |
|
// License. See LICENSE.TXT for details. |
|
// |
|
//===----------------------------------------------------------------------===// |
|
#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/Bitcode/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
|
|
|