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