25 template<
typename ITEM_INDEX,
int MAX_ORDER >
class RTreeT;
43 template<
typename ITEM_INDEX,
int MAX_ORDER,
typename FT >
47 template<
typename ITEM_INDEX,
int MAX_ORDER,
typename FT >
50 template<
typename ITEM_INDEX,
int MAX_ORDER,
typename FT >
54 template<
typename ITEM_INDEX,
int MAX_ORDER,
typename FT >
63 template<
typename ITEM_INDEX,
int MAX_ORDER,
typename FT,
typename QUERY_SHAPE,
typename ACCEPT_ITEM >
65 ACCEPT_ITEM&& accept_item,
68 const QUERY_SHAPE& query_shape
85 template<
typename ITEM_INDEX,
int MAX_ORDER,
typename FT >
93 template<
typename ITEM_INDEX_REP,
int MAX_ORDER >
105 template<
typename ITEM_INDEX >
108 constexpr
auto operator()(
const ITEM_INDEX i )
const noexcept
114 template<
typename ITEM_INDEX >
117 template<
typename ITEM_INDEX >
128 template<
typename ITEM_INDEX,
int MAX_ORDER >
150 std::unique_ptr< Node[] > myNodes;
156 ItemIndexRep myNumItems;
158 template<
typename FT >
162 template<
typename FT >
165 template<
typename ALT_ITEM_INDEX,
int ALT_MAX_ORDER,
typename FT >
168 template<
typename ALT_ITEM_INDEX,
int ALT_MAX_ORDER,
typename FT >
171 template<
typename ALT_ITEM_INDEX,
int ALT_MAX_ORDER,
typename FT,
typename QUERY_SHAPE,
typename ACCEPT_ITEM >
173 ACCEPT_ITEM&& accept_item,
176 const QUERY_SHAPE& query_shape
179 template<
typename ALT_ITEM_INDEX,
int ALT_MAX_ORDER,
typename FT >
187 template<
typename ALT_ITEM_INDEX,
int ALT_MAX_ORDER >
191 template<
typename FT >
199 template<
typename FT >
210 exint myNodeSlotBoxSize;
211 std::unique_ptr< Box[] > myNodeSlotBox;
215 const exint node_slot_box_size,
216 std::unique_ptr<
Box[] >&& node_slot_box
224 template<
typename ITEM_INDEX,
int MAX_ORDER >
friend class RTreeT;
227 template<
typename ITEM_INDEX,
int MAX_ORDER,
typename ALT_FT >
230 template<
typename ITEM_INDEX,
int MAX_ORDER,
typename ALT_FT,
typename QUERY_SHAPE,
typename ACCEPT_ITEM >
232 ACCEPT_ITEM&& accept_item,
235 const QUERY_SHAPE& query_shape
238 template<
typename ITEM_INDEX,
int MAX_ORDER,
typename ALT_FT >
252 template<
typename ITEM_INDEX,
int MAX_ORDER,
typename FT >
267 template<
typename QUERY_SHAPE,
typename ITEM_INDEX,
int MAX_ORDER,
typename FT >
272 const QUERY_SHAPE& query_shape
280 template<
typename QUERY_SHAPE,
typename ITEM_INDEX,
int MAX_ORDER,
typename FT >
284 const QUERY_SHAPE& query_shape,
285 ITEM_INDEX*
const items_begin
341 template<
typename FT >
344 template<
typename FT >
347 template<
typename FT >
350 template<
typename FT >
353 template<
typename FT >
356 template<
typename FT >
359 template<
typename FT >
362 template<
typename FT >
365 template<
typename FT >
368 template<
typename FT >
371 template<
typename FT >
374 template<
typename FT >
377 template<
typename FT >
380 template<
typename FT >
383 template<
typename FT >
386 template<
typename FT >
389 template<
typename FT >
392 template<
typename FT >
395 template<
typename FT >
400 #endif // __RTree_H__
auto UTmakeUniqueRTree16IntConfiguration(const UT_RTree16Int &tree, const UT_Array< UT_BoxT< FT > > &item_box)
UT_BoxT< fpreal64 > RTreeBoxD
RTreeT< int, 2 > RTreeInt
UT_BoxT< fpreal32 > RTreeBoxF
static constexpr int max_order
auto UTmakeUniqueRTreeInt(const UT_Array< UT_BoxT< FT > > &item_box)
auto UTmakeUniqueRTreeIntConfiguration(const UT_RTreeInt &tree, const UT_Array< UT_BoxT< FT > > &item_box)
friend RTreeConfigurationT< ALT_FT > constructRTreeConfiguration(const RTreeT< ITEM_INDEX, MAX_ORDER > &tree, const UT_BoxT< ALT_FT > item_box[], const ITEM_INDEX num_items)
exint heapMemoryUsage(const RTreeConfigurationT< FT > &configuration)
RTreeConfigurationT< fpreal64 > RTreeConfigurationD
friend RTreeT< ALT_ITEM_INDEX, ALT_MAX_ORDER > constructRTree(const UT_BoxT< FT > item_box[], const ALT_ITEM_INDEX num_items)
friend RTreeConfigurationT< FT > constructRTreeConfiguration(const RTreeT< ALT_ITEM_INDEX, ALT_MAX_ORDER > &tree, const UT_BoxT< FT > item_box[], const ALT_ITEM_INDEX num_items)
UT_RTree2IntConfigurationT< FT > UTconstructRTree2IntConfiguration(const UT_RTree2Int &tree, const UT_Array< UT_BoxT< FT > > &item_box)
friend void forEachIntersecting(ACCEPT_ITEM &&accept_item, const RTreeT< ITEM_INDEX, MAX_ORDER > &tree, const RTreeConfigurationT< ALT_FT > &configuration, const QUERY_SHAPE &query_shape)
auto UTmakeUniqueRTree16Int(const UT_Array< UT_BoxT< FT > > &item_box)
RTreeT< ITEM_INDEX, MAX_ORDER > constructRTree(const UT_BoxT< FT > item_box[], const ITEM_INDEX num_items)
GLboolean GLboolean GLboolean GLboolean a
RTreeConfigurationT< FT > constructRTreeConfiguration(const UT::RTreeT< ITEM_INDEX, MAX_ORDER > &tree, const UT_BoxT< FT > item_box[], const ITEM_INDEX num_items)
auto UTmakeUniqueRTree2Int(const UT_Array< UT_BoxT< FT > > &item_box)
SYS_RemoveCVRef_t< decltype(ItemIndexUnderlyingInteger< ITEM_INDEX >{}(std::declval< ITEM_INDEX >())) > type
friend void updateConfiguration(RTreeConfigurationT< FT > &configuration, const RTreeT< ALT_ITEM_INDEX, ALT_MAX_ORDER > &tree, const UT_BoxT< FT > item_box[], const ALT_ITEM_INDEX num_items)
UT_BoxT< fpreal64 > RTreeBox
UT_RTree16Int UTconstructRTree16Int(const UT_Array< UT_BoxT< FT > > &item_box)
void forEachIntersecting(ACCEPT_ITEM &&accept_item, const RTreeT< ITEM_INDEX, MAX_ORDER > &tree, const RTreeConfigurationT< FT > &configuration, const QUERY_SHAPE &query_shape)
auto UTmakeUniqueRTree2IntConfiguration(const UT_RTree2Int &tree, const UT_Array< UT_BoxT< FT > > &item_box)
UT_RTree16IntConfigurationT< FT > UTconstructRTree16IntConfiguration(const UT_RTree16Int &tree, const UT_Array< UT_BoxT< FT > > &item_box)
void updateConfiguration(RTreeConfigurationT< FT > &configuration, const RTreeT< ITEM_INDEX, MAX_ORDER > &tree, const UT_BoxT< FT > item_box[], const ITEM_INDEX num_items)
RTreeT & operator=(const RTreeT &)=delete
typename ItemIndex_UnderlyingIntegerType< ITEM_INDEX >::type ItemIndex_UnderlyingIntegerType_t
friend void updateConfiguration(RTreeConfigurationT< ALT_FT > &configuration, const RTreeT< ITEM_INDEX, MAX_ORDER > &tree, const UT_BoxT< ALT_FT > item_box[], const ITEM_INDEX num_items)
RTreeT< int, 2 > RTree2Int
UT_RTreeInt UTconstructRTreeInt(const UT_BoxT< FT > item_box[], const UT_RTreeInt::ItemIndex num_items)
RTreeConfigurationT< fpreal32 > RTreeConfigurationF
UT_RTree2Int UTconstructRTree2Int(const UT_Array< UT_BoxT< FT > > &item_box)
friend void forEachIntersecting(ACCEPT_ITEM &&accept_item, const RTreeT< ALT_ITEM_INDEX, ALT_MAX_ORDER > &tree, const RTreeConfigurationT< FT > &configuration, const QUERY_SHAPE &query_shape)
RTreeConfigurationT< fpreal64 > RTreeConfiguration
UT_RTreeConfigurationT< FT > UTconstructRTreeConfiguration(const UT_RTree &tree, const UT_Array< UT_BoxT< FT > > &item_box)
constexpr auto operator()(const ITEM_INDEX i) const noexcept
UT_RTreeIntConfigurationT< FT > UTconstructRTreeIntConfiguration(const UT_RTreeInt &tree, const UT_Array< UT_BoxT< FT > > &item_box)
RTreeT< int, 16 > RTree16Int
void getIntersecting(UT_Array< ITEM_INDEX > &results, const RTreeT< ITEM_INDEX, MAX_ORDER > &tree, const RTreeConfigurationT< FT > &configuration, const QUERY_SHAPE &query_shape)
UT_RTree UTconstructRTree(const UT_BoxT< FT > item_box[], const UT_RTree::ItemIndex num_items)
ITEM_INDEX * getIntersectingRaw(const RTreeT< ITEM_INDEX, MAX_ORDER > &tree, const RTreeConfigurationT< FT > &configuration, const QUERY_SHAPE &query_shape, ITEM_INDEX *const items_begin)
friend exint heapMemoryUsage(const RTreeT< ALT_ITEM_INDEX, ALT_MAX_ORDER > &tree)