| //===-- sanitizer_range.h ---------------------------------------*- C++ -*-===// |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // Contais Range and related utilities. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef SANITIZER_RANGE_H |
| #define SANITIZER_RANGE_H |
| |
| #include "sanitizer_common.h" |
| #include "sanitizer_common/sanitizer_array_ref.h" |
| |
| namespace __sanitizer { |
| |
| struct Range { |
| uptr begin; |
| uptr end; |
| }; |
| |
| inline bool operator==(const Range &lhs, const Range &rhs) { |
| return lhs.begin == rhs.begin && lhs.end == rhs.end; |
| } |
| |
| inline bool operator!=(const Range &lhs, const Range &rhs) { |
| return !(lhs == rhs); |
| } |
| |
| // Calculates intersection of two sets of regions in O(N log N) time. |
| void Intersect(ArrayRef<Range> a, ArrayRef<Range> b, |
| InternalMmapVectorNoCtor<Range> &output); |
| |
| } // namespace __sanitizer |
| |
| #endif // SANITIZER_RANGE_H |