Coverage Report

Created: 2023-11-12 09:30

/proc/self/cwd/envoy/common/interval_set.h
Line
Count
Source
1
#pragma once
2
3
#include <utility>
4
#include <vector>
5
6
#include "envoy/common/pure.h"
7
8
namespace Envoy {
9
10
/**
11
 * Maintains sets of numeric intervals. As new intervals are added, existing ones in the
12
 * set are combined so that no overlapping intervals remain in the representation.
13
 *
14
 * Value can be any type that is comparable with <, ==, and >.
15
 */
16
template <typename Value> class IntervalSet {
17
public:
18
2.34M
  virtual ~IntervalSet() = default;
Envoy::IntervalSet<unsigned long>::~IntervalSet()
Line
Count
Source
18
2.34M
  virtual ~IntervalSet() = default;
Unexecuted instantiation: Envoy::IntervalSet<unsigned int>::~IntervalSet()
19
20
  using Interval = std::pair<Value, Value>;
21
22
  /**
23
   * Inserts a new interval into the set, merging any overlaps. The intervals are in
24
   * the form [left_inclusive, right_exclusive). E.g. an interval [3, 5) includes the
25
   * numbers 3 and 4, but not 5.
26
   * @param left_inclusive Value the left-bound, inclusive.
27
   * @param right_exclusive Value the right-bound, which is exclusive.
28
   */
29
  virtual void insert(Value left_inclusive, Value right_exclusive) PURE;
30
31
  /**
32
   * @return std::vector<Interval> the interval-set as a vector.
33
   */
34
  virtual std::vector<Interval> toVector() const PURE;
35
36
  /**
37
   * Clears the contents of the interval set.
38
   */
39
  virtual void clear() PURE;
40
41
  /**
42
   * Determines whether the specified Value is in any of the intervals.
43
   *
44
   * @param value the value
45
   * @return true if value is covered in the inteval set.
46
   */
47
  virtual bool test(Value value) const PURE;
48
};
49
50
} // namespace Envoy