1 #ifndef _SERIAL_ADT_UTILS
2 #define _SERIAL_ADT_UTILS
4 #include <MultiThreadKDTreeFactory.h>
5 #include <SimpleKDTreeGeometricStrategy.h>
6 #include <SAHKDTreeGeometricStrategy.h>
7 #include <AxisSAHKDTreeGeometricStrategy.h>
8 #include <FastSAHKDTreeGeometricStrategy.h>
12 using std::dynamic_pointer_cast;
16 char KDTREE_FACTORY_EXTRACT_GSTYPE(
21 void KDTREE_FACTORY_INPLACE_CONSTRUCT (
23 std::shared_ptr<SimpleKDTreeFactory> kdtf,
25 size_t const geomJobs,
29 std::shared_ptr<SimpleKDTreeGeometricStrategy> gs = \
30 std::make_shared<SimpleKDTreeGeometricStrategy>(*kdtf);
31 ::new(mtkdtf)T(kdtf, gs, numJobs, geomJobs);
34 std::shared_ptr<SAHKDTreeGeometricStrategy> gs = \
35 std::make_shared<SAHKDTreeGeometricStrategy>(
36 *std::dynamic_pointer_cast<SAHKDTreeFactory>(kdtf)
38 ::new(mtkdtf)T(kdtf, gs, numJobs, geomJobs);
41 std::shared_ptr<AxisSAHKDTreeGeometricStrategy> gs = \
42 std::make_shared<AxisSAHKDTreeGeometricStrategy>(
43 *std::dynamic_pointer_cast<AxisSAHKDTreeFactory>(kdtf)
45 ::new(mtkdtf)T(kdtf, gs, numJobs, geomJobs);
48 std::shared_ptr<FastSAHKDTreeGeometricStrategy> gs = \
49 std::make_shared<FastSAHKDTreeGeometricStrategy>(
50 *std::dynamic_pointer_cast<FastSAHKDTreeFactory>(kdtf)
52 ::new(mtkdtf)T(kdtf, gs, numJobs, geomJobs);
55 ::new(mtkdtf)T(kdtf,
nullptr, numJobs, geomJobs);
Decorator for any KDTree factory which provides support for multi thread KDTree building.
Definition: MultiThreadKDTreeFactory.h:34