Path: blob/main/contrib/llvm-project/clang/lib/Frontend/TestModuleFileExtension.h
35232 views
//===-- TestModuleFileExtension.h - Module Extension Tester -----*- C++ -*-===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//7#ifndef LLVM_CLANG_FRONTEND_TESTMODULEFILEEXTENSION_H8#define LLVM_CLANG_FRONTEND_TESTMODULEFILEEXTENSION_H910#include "clang/Serialization/ModuleFileExtension.h"11#include "clang/Basic/LLVM.h"12#include "llvm/ADT/StringRef.h"13#include "llvm/Bitstream/BitstreamReader.h"14#include <string>1516namespace clang {1718/// A module file extension used for testing purposes.19class TestModuleFileExtension20: public llvm::RTTIExtends<TestModuleFileExtension, ModuleFileExtension> {21std::string BlockName;22unsigned MajorVersion;23unsigned MinorVersion;24bool Hashed;25std::string UserInfo;2627class Writer : public ModuleFileExtensionWriter {28public:29Writer(ModuleFileExtension *Ext) : ModuleFileExtensionWriter(Ext) { }30~Writer() override;3132void writeExtensionContents(Sema &SemaRef,33llvm::BitstreamWriter &Stream) override;34};3536class Reader : public ModuleFileExtensionReader {37llvm::BitstreamCursor Stream;3839public:40~Reader() override;4142Reader(ModuleFileExtension *Ext, const llvm::BitstreamCursor &InStream);43};4445public:46static char ID;4748TestModuleFileExtension(StringRef BlockName, unsigned MajorVersion,49unsigned MinorVersion, bool Hashed,50StringRef UserInfo)51: BlockName(BlockName), MajorVersion(MajorVersion),52MinorVersion(MinorVersion), Hashed(Hashed), UserInfo(UserInfo) {}53~TestModuleFileExtension() override;5455ModuleFileExtensionMetadata getExtensionMetadata() const override;5657void hashExtension(ExtensionHashBuilder &HBuilder) const override;5859std::unique_ptr<ModuleFileExtensionWriter>60createExtensionWriter(ASTWriter &Writer) override;6162std::unique_ptr<ModuleFileExtensionReader>63createExtensionReader(const ModuleFileExtensionMetadata &Metadata,64ASTReader &Reader, serialization::ModuleFile &Mod,65const llvm::BitstreamCursor &Stream) override;6667std::string str() const;68};6970} // end namespace clang7172#endif // LLVM_CLANG_FRONTEND_TESTMODULEFILEEXTENSION_H737475