YAC 3.18.0
Yet Another Coupler
Loading...
Searching...
No Matches
interval_tree.h
Go to the documentation of this file.
1// Copyright (c) 2024 The YAC Authors
2//
3// SPDX-License-Identifier: BSD-3-Clause
4
5#ifndef INTERVAL_TREE_H
6#define INTERVAL_TREE_H
7
8#include <stdlib.h>
9
11{
12 double left, right;
13};
14
15static inline int
16overlap_test(struct interval a, struct interval b)
17{
18 return (a.left <= b.left && a.right >= b.left) ||
19 (a.left > b.left && a.left <= b.right);
20}
21
23{
25 double max;
26 size_t value;
27};
28
29void
30yac_generate_interval_tree(struct interval_node intervals[], size_t num_nodes);
31
33{
35 size_t *overlap_iv;
36};
37
38void
39yac_search_interval_tree(struct interval_node tree[], size_t num_nodes,
40 struct interval query, struct overlaps *overlaps);
41
42#endif
43
void yac_search_interval_tree(struct interval_node tree[], size_t num_nodes, struct interval query, struct overlaps *overlaps)
void yac_generate_interval_tree(struct interval_node intervals[], size_t num_nodes)
static int overlap_test(struct interval a, struct interval b)
struct interval range
double right
double left
size_t * overlap_iv
size_t num_overlaps
size_t a_size