YetAnotherCoupler
3.5.2
Loading...
Searching...
No Matches
src
core
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
9
#ifndef INTERVAL_TREE_H
10
#define INTERVAL_TREE_H
11
12
#include <stdlib.h>
13
14
struct
interval
15
{
16
double
left
,
right
;
17
};
18
19
static
inline
int
20
overlap_test
(
struct
interval
a,
struct
interval
b)
21
{
22
return
(a.
left
<= b.
left
&& a.
right
>= b.
left
) ||
23
(a.
left
> b.
left
&& a.
left
<= b.
right
);
24
}
25
26
struct
interval_node
27
{
28
struct
interval
range
;
29
double
max
;
30
size_t
value
;
31
};
32
33
void
34
yac_generate_interval_tree
(
struct
interval_node
intervals[],
size_t
num_nodes);
35
36
struct
overlaps
37
{
38
size_t
num_overlaps
,
a_size
;
39
size_t
*
overlap_iv
;
40
};
41
42
void
43
yac_search_interval_tree
(
struct
interval_node
tree[],
size_t
num_nodes,
44
struct
interval
query,
struct
overlaps
*
overlaps
);
45
46
#endif
47
yac_search_interval_tree
void yac_search_interval_tree(struct interval_node tree[], size_t num_nodes, struct interval query, struct overlaps *overlaps)
Definition
interval_tree.c:77
yac_generate_interval_tree
void yac_generate_interval_tree(struct interval_node intervals[], size_t num_nodes)
Definition
interval_tree.c:39
overlap_test
static int overlap_test(struct interval a, struct interval b)
Definition
interval_tree.h:20
interval_node
Definition
interval_tree.h:27
interval_node::value
size_t value
Definition
interval_tree.h:30
interval_node::range
struct interval range
Definition
interval_tree.h:28
interval_node::max
double max
Definition
interval_tree.h:29
interval
Definition
interval_tree.h:15
interval::right
double right
Definition
interval_tree.h:16
interval::left
double left
Definition
interval_tree.h:16
overlaps
Definition
interval_tree.h:37
overlaps::overlap_iv
size_t * overlap_iv
Definition
interval_tree.h:39
overlaps::num_overlaps
size_t num_overlaps
Definition
interval_tree.h:38
overlaps::a_size
size_t a_size
Definition
interval_tree.h:38
Generated on Wed Dec 4 2024 11:31:43 for YetAnotherCoupler by
1.11.0