1"""
2Matching points on the grid to specific grids
3
4
5
6"""
7
8
9import numpy as np
10
11cimport cython
12cimport grid_visitors
13cimport numpy as np
14from grid_visitors cimport (
15    GridTreeNode,
16    GridTreeNodePadded,
17    GridVisitorData,
18    grid_visitor_function,
19)
20from libc.stdlib cimport free, malloc
21
22from yt.geometry.selection_routines cimport SelectorObject, _ensure_code
23from yt.utilities.lib.bitarray cimport bitarray
24from yt.utilities.lib.fp_utils cimport iclip
25
26
27cdef class GridTree:
28    cdef GridTreeNode *grids
29    cdef GridTreeNode *root_grids
30    cdef int num_grids
31    cdef int num_root_grids
32    cdef int num_leaf_grids
33    cdef public bitarray mask
34    cdef void setup_data(self, GridVisitorData *data)
35    cdef void visit_grids(self, GridVisitorData *data,
36                          grid_visitor_function *func,
37                          SelectorObject selector)
38    cdef void recursively_visit_grid(self,
39                          GridVisitorData *data,
40                          grid_visitor_function *func,
41                          SelectorObject selector,
42                          GridTreeNode *grid,
43                          np.uint8_t *buf = ?)
44
45cdef class MatchPointsToGrids:
46
47    cdef int num_points
48    cdef np.float64_t *xp
49    cdef np.float64_t *yp
50    cdef np.float64_t *zp
51    cdef GridTree tree
52    cdef np.int64_t *point_grids
53    cdef np.uint8_t check_position(self,
54                                   np.int64_t pt_index,
55                                   np.float64_t x,
56                                   np.float64_t y,
57                                   np.float64_t z,
58                                   GridTreeNode *grid)
59
60    cdef np.uint8_t is_in_grid(self,
61			 np.float64_t x,
62			 np.float64_t y,
63			 np.float64_t z,
64			 GridTreeNode *grid)
65
66cdef extern from "platform_dep.h" nogil:
67    double rint(double x)
68