Coverage Report

Created: 2019-02-21 13:17

/Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/llvm/include/llvm/DebugInfo/CodeView/Formatters.h
Line
Count
Source (jump to first uncovered line)
1
//===- Formatters.h ---------------------------------------------*- 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
9
#ifndef LLVM_DEBUGINFO_CODEVIEW_FORMATTERS_H
10
#define LLVM_DEBUGINFO_CODEVIEW_FORMATTERS_H
11
12
#include "llvm/ADT/ArrayRef.h"
13
#include "llvm/ADT/StringRef.h"
14
#include "llvm/DebugInfo/CodeView/GUID.h"
15
#include "llvm/DebugInfo/CodeView/TypeIndex.h"
16
#include "llvm/Support/FormatAdapters.h"
17
#include "llvm/Support/FormatVariadic.h"
18
#include "llvm/Support/raw_ostream.h"
19
#include <cstdint>
20
21
namespace llvm {
22
23
namespace codeview {
24
25
namespace detail {
26
27
class GuidAdapter final : public FormatAdapter<ArrayRef<uint8_t>> {
28
  ArrayRef<uint8_t> Guid;
29
30
public:
31
  explicit GuidAdapter(ArrayRef<uint8_t> Guid);
32
  explicit GuidAdapter(StringRef Guid);
33
34
  void format(raw_ostream &Stream, StringRef Style) override;
35
};
36
37
} // end namespace detail
38
39
inline detail::GuidAdapter fmt_guid(StringRef Item) {
40
  return detail::GuidAdapter(Item);
41
}
42
43
inline detail::GuidAdapter fmt_guid(ArrayRef<uint8_t> Item) {
44
  return detail::GuidAdapter(Item);
45
}
46
47
} // end namespace codeview
48
49
template <> struct format_provider<codeview::TypeIndex> {
50
public:
51
  static void format(const codeview::TypeIndex &V, raw_ostream &Stream,
52
                     StringRef Style) {
53
    if (V.isNoneType())
54
      Stream << "<no type>";
55
    else {
56
      Stream << formatv("{0:X+4}", V.getIndex());
57
      if (V.isSimple())
58
        Stream << " (" << codeview::TypeIndex::simpleTypeName(V) << ")";
59
    }
60
  }
61
};
62
63
template <> struct format_provider<codeview::GUID> {
64
  static void format(const codeview::GUID &V, llvm::raw_ostream &Stream,
65
0
                     StringRef Style) {
66
0
    Stream << V;
67
0
  }
68
};
69
70
} // end namespace llvm
71
72
#endif // LLVM_DEBUGINFO_CODEVIEW_FORMATTERS_H