Coverage Report

Created: 2019-07-24 05:18

/Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/llvm/tools/clang/lib/Frontend/TestModuleFileExtension.h
Line
Count
Source
1
//===-- TestModuleFileExtension.h - Module Extension Tester -----*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
#ifndef LLVM_CLANG_FRONTEND_TESTMODULEFILEEXTENSION_H
9
#define LLVM_CLANG_FRONTEND_TESTMODULEFILEEXTENSION_H
10
11
#include "clang/Serialization/ModuleFileExtension.h"
12
#include "clang/Basic/LLVM.h"
13
#include "llvm/ADT/StringRef.h"
14
#include "llvm/Bitstream/BitstreamReader.h"
15
#include <string>
16
17
namespace clang {
18
19
/// A module file extension used for testing purposes.
20
class TestModuleFileExtension : public ModuleFileExtension {
21
  std::string BlockName;
22
  unsigned MajorVersion;
23
  unsigned MinorVersion;
24
  bool Hashed;
25
  std::string UserInfo;
26
27
  class Writer : public ModuleFileExtensionWriter {
28
  public:
29
12
    Writer(ModuleFileExtension *Ext) : ModuleFileExtensionWriter(Ext) { }
30
    ~Writer() override;
31
32
    void writeExtensionContents(Sema &SemaRef,
33
                                llvm::BitstreamWriter &Stream) override;
34
  };
35
36
  class Reader : public ModuleFileExtensionReader {
37
    llvm::BitstreamCursor Stream;
38
39
  public:
40
    ~Reader() override;
41
42
    Reader(ModuleFileExtension *Ext, const llvm::BitstreamCursor &InStream);
43
  };
44
45
public:
46
  TestModuleFileExtension(StringRef BlockName,
47
                          unsigned MajorVersion,
48
                          unsigned MinorVersion,
49
                          bool Hashed,
50
                          StringRef UserInfo)
51
    : BlockName(BlockName),
52
      MajorVersion(MajorVersion), MinorVersion(MinorVersion),
53
16
      Hashed(Hashed), UserInfo(UserInfo) { }
54
  ~TestModuleFileExtension() override;
55
56
  ModuleFileExtensionMetadata getExtensionMetadata() const override;
57
58
  llvm::hash_code hashExtension(llvm::hash_code Code) const override;
59
60
  std::unique_ptr<ModuleFileExtensionWriter>
61
  createExtensionWriter(ASTWriter &Writer) override;
62
63
  std::unique_ptr<ModuleFileExtensionReader>
64
  createExtensionReader(const ModuleFileExtensionMetadata &Metadata,
65
                        ASTReader &Reader, serialization::ModuleFile &Mod,
66
                        const llvm::BitstreamCursor &Stream) override;
67
};
68
69
} // end namespace clang
70
71
#endif // LLVM_CLANG_FRONTEND_TESTMODULEFILEEXTENSION_H