Coverage Report

Created: 2020-06-26 05:44

/home/arjun/llvm-project/llvm/include/llvm/ADT/Sequence.h
Line
Count
Source (jump to first uncovered line)
1
//===- Sequence.h - Utility for producing sequences of values ---*- 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
/// \file
9
/// This routine provides some synthesis utilities to produce sequences of
10
/// values. The names are intentionally kept very short as they tend to occur
11
/// in common and widely used contexts.
12
///
13
//===----------------------------------------------------------------------===//
14
15
#ifndef LLVM_ADT_SEQUENCE_H
16
#define LLVM_ADT_SEQUENCE_H
17
18
#include "llvm/ADT/iterator.h"
19
#include "llvm/ADT/iterator_range.h"
20
#include <algorithm>
21
#include <iterator>
22
#include <utility>
23
24
namespace llvm {
25
26
namespace detail {
27
28
template <typename ValueT>
29
class value_sequence_iterator
30
    : public iterator_facade_base<value_sequence_iterator<ValueT>,
31
                                  std::random_access_iterator_tag,
32
                                  const ValueT> {
33
  using BaseT = typename value_sequence_iterator::iterator_facade_base;
34
35
  ValueT Value;
36
37
public:
38
  using difference_type = typename BaseT::difference_type;
39
  using reference = typename BaseT::reference;
40
41
  value_sequence_iterator() = default;
42
  value_sequence_iterator(const value_sequence_iterator &) = default;
43
  value_sequence_iterator(value_sequence_iterator &&Arg)
44
0
      : Value(std::move(Arg.Value)) {}
Unexecuted instantiation: _ZN4llvm6detail23value_sequence_iteratorIlEC2EOS2_
Unexecuted instantiation: _ZN4llvm6detail23value_sequence_iteratorIiEC2EOS2_
Unexecuted instantiation: _ZN4llvm6detail23value_sequence_iteratorIjEC2EOS2_
45
46
  template <typename U, typename Enabler = decltype(ValueT(std::declval<U>()))>
47
0
  value_sequence_iterator(U &&Value) : Value(std::forward<U>(Value)) {}
Unexecuted instantiation: _ZN4llvm6detail23value_sequence_iteratorIlEC2IRllEEOT_
Unexecuted instantiation: _ZN4llvm6detail23value_sequence_iteratorIiEC2IRiiEEOT_
Unexecuted instantiation: _ZN4llvm6detail23value_sequence_iteratorIjEC2IRjjEEOT_
48
49
0
  value_sequence_iterator &operator+=(difference_type N) {
50
0
    Value += N;
51
0
    return *this;
52
0
  }
Unexecuted instantiation: _ZN4llvm6detail23value_sequence_iteratorIlEpLEl
Unexecuted instantiation: _ZN4llvm6detail23value_sequence_iteratorIiEpLEl
Unexecuted instantiation: _ZN4llvm6detail23value_sequence_iteratorIjEpLEl
53
  value_sequence_iterator &operator-=(difference_type N) {
54
    Value -= N;
55
    return *this;
56
  }
57
  using BaseT::operator-;
58
0
  difference_type operator-(const value_sequence_iterator &RHS) const {
59
0
    return Value - RHS.Value;
60
0
  }
61
62
0
  bool operator==(const value_sequence_iterator &RHS) const {
63
0
    return Value == RHS.Value;
64
0
  }
Unexecuted instantiation: _ZNK4llvm6detail23value_sequence_iteratorIiEeqERKS2_
Unexecuted instantiation: _ZNK4llvm6detail23value_sequence_iteratorIjEeqERKS2_
65
  bool operator<(const value_sequence_iterator &RHS) const {
66
    return Value < RHS.Value;
67
  }
68
69
0
  reference operator*() const { return Value; }
Unexecuted instantiation: _ZNK4llvm6detail23value_sequence_iteratorIlEdeEv
Unexecuted instantiation: _ZNK4llvm6detail23value_sequence_iteratorIiEdeEv
Unexecuted instantiation: _ZNK4llvm6detail23value_sequence_iteratorIjEdeEv
70
};
71
72
} // end namespace detail
73
74
template <typename ValueT>
75
iterator_range<detail::value_sequence_iterator<ValueT>> seq(ValueT Begin,
76
0
                                                            ValueT End) {
77
0
  return make_range(detail::value_sequence_iterator<ValueT>(Begin),
78
0
                    detail::value_sequence_iterator<ValueT>(End));
79
0
}
Unexecuted instantiation: _ZN4llvm3seqIlEENS_14iterator_rangeINS_6detail23value_sequence_iteratorIT_EEEES4_S4_
Unexecuted instantiation: _ZN4llvm3seqIiEENS_14iterator_rangeINS_6detail23value_sequence_iteratorIT_EEEES4_S4_
Unexecuted instantiation: _ZN4llvm3seqIjEENS_14iterator_rangeINS_6detail23value_sequence_iteratorIT_EEEES4_S4_
80
81
} // end namespace llvm
82
83
#endif // LLVM_ADT_SEQUENCE_H