1//===-- sanitizer_range.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// Contais Range and related utilities.
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef SANITIZER_RANGE_H
14#define SANITIZER_RANGE_H
15
16#include "sanitizer_common.h"
17#include "sanitizer_common/sanitizer_array_ref.h"
18
19namespace __sanitizer {
20
21struct Range {
22 uptr begin;
23 uptr end;
24};
25
26inline bool operator==(const Range &lhs, const Range &rhs) {
27 return lhs.begin == rhs.begin && lhs.end == rhs.end;
28}
29
30inline bool operator!=(const Range &lhs, const Range &rhs) {
31 return !(lhs == rhs);
32}
33
34// Calculates intersection of two sets of regions in O(N log N) time.
35void Intersect(ArrayRef<Range> a, ArrayRef<Range> b,
36 InternalMmapVectorNoCtor<Range> &output);
37
38} // namespace __sanitizer
39
40#endif // SANITIZER_RANGE_H
41