xref: /freebsd/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_range.h (revision 0ad011ececb978e22a9bff2acf76633b094f1ff6)
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 
19 namespace __sanitizer {
20 
21 struct Range {
22   uptr begin;
23   uptr end;
24 };
25 
26 inline bool operator==(const Range &lhs, const Range &rhs) {
27   return lhs.begin == rhs.begin && lhs.end == rhs.end;
28 }
29 
30 inline 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.
35 void Intersect(ArrayRef<Range> a, ArrayRef<Range> b,
36                InternalMmapVectorNoCtor<Range> &output);
37 
38 }  // namespace __sanitizer
39 
40 #endif  // SANITIZER_RANGE_H
41