|
21 | 21 | #error "No algebra plugin selected! Please link to one of the algebra plugins."
|
22 | 22 | #endif
|
23 | 23 |
|
24 |
| -// Project include(s) |
25 |
| -#include "detray/utils/concepts.hpp" |
26 |
| - |
27 |
| -// System include(s) |
28 |
| -#include <type_traits> |
| 24 | +// Algebra-plugins include(s) |
| 25 | +#include "algebra/utils/print.hpp" |
29 | 26 |
|
30 | 27 | namespace detray {
|
31 | 28 |
|
32 |
| -namespace detail { |
33 |
| -/// The detray scalar types (can be SIMD) |
34 |
| -/// @{ |
35 |
| -template <typename T> |
36 |
| -struct get_scalar {}; |
37 |
| - |
38 |
| -// TODO replace by scalar concept from algebra-plugins |
39 |
| -template <concepts::arithmetic T> |
40 |
| -struct get_scalar<T> { |
41 |
| - using scalar = T; |
42 |
| -}; |
43 |
| - |
44 |
| -template <typename T> |
45 |
| -requires(!std::same_as<typename T::scalar, void>) struct get_scalar<T> { |
46 |
| - using scalar = typename T::scalar; |
47 |
| -}; |
48 |
| -/// @} |
49 |
| - |
50 |
| -/// The detray algebra types (can be SIMD) |
51 |
| -/// @{ |
52 |
| -template <typename T> |
53 |
| -struct get_algebra {}; |
54 |
| - |
55 |
| -template <typename T> |
56 |
| -requires(!std::same_as<typename T::point3D, void>) struct get_algebra<T> { |
57 |
| - using point2D = typename T::point2D; |
58 |
| - using point3D = typename T::point3D; |
59 |
| - using vector3D = typename T::vector3D; |
60 |
| - using transform3D = typename T::transform3D; |
61 |
| -}; |
62 |
| -/// @} |
63 |
| - |
64 |
| -/// The detray matrix types |
65 |
| -/// @{ |
66 |
| -template <typename T> |
67 |
| -struct get_matrix {}; |
68 |
| - |
69 |
| -template <typename T> |
70 |
| -requires( |
71 |
| - !std::same_as<typename T::matrix_operator, void>) struct get_matrix<T> { |
72 |
| - using matrix_operator = typename T::matrix_operator; |
73 |
| - using size_type = typename matrix_operator::size_ty; |
74 |
| - |
75 |
| - template <std::size_t ROWS, std::size_t COLS> |
76 |
| - using matrix = typename matrix_operator::template matrix_type< |
77 |
| - static_cast<size_type>(ROWS), static_cast<size_type>(COLS)>; |
78 |
| -}; |
79 |
| -/// @} |
| 29 | +// Pull in the print operator definitions for the algebra types |
| 30 | +using algebra::operator<<; |
80 | 31 |
|
81 |
| -} // namespace detail |
| 32 | +template <typename A> |
| 33 | +using dvalue = typename algebra::get_value_t<A>; |
82 | 34 |
|
83 |
| -template <template <typename> class A, typename T> |
84 |
| -using dsimd = typename A<float>::template simd<T>; |
| 35 | +template <typename A> |
| 36 | +using dbool = typename algebra::get_boolean_t<A>; |
85 | 37 |
|
86 |
| -template <typename A = detray::scalar> |
87 |
| -using dscalar = typename detail::get_scalar<A>::scalar; |
| 38 | +template <typename A, typename T> |
| 39 | +using dsimd = algebra::get_simd_t<A, T>; |
88 | 40 |
|
89 | 41 | template <typename A>
|
90 |
| -using dpoint2D = typename detail::get_algebra<A>::point2D; |
| 42 | +using dsize_type = algebra::get_size_t<A>; |
91 | 43 |
|
92 | 44 | template <typename A>
|
93 |
| -using dpoint3D = typename detail::get_algebra<A>::point3D; |
| 45 | +using dscalar = algebra::get_scalar_t<A>; |
94 | 46 |
|
95 | 47 | template <typename A>
|
96 |
| -using dvector3D = typename detail::get_algebra<A>::vector3D; |
| 48 | +using dpoint2D = algebra::get_point2D_t<A>; |
97 | 49 |
|
98 | 50 | template <typename A>
|
99 |
| -using dtransform3D = typename detail::get_algebra<A>::transform3D; |
| 51 | +using dpoint3D = algebra::get_point3D_t<A>; |
100 | 52 |
|
101 | 53 | template <typename A>
|
102 |
| -using dmatrix_operator = typename detail::get_matrix<A>::matrix_operator; |
| 54 | +using dvector3D = algebra::get_vector3D_t<A>; |
103 | 55 |
|
104 | 56 | template <typename A>
|
105 |
| -using dsize_type = typename detail::get_matrix<A>::size_type; |
| 57 | +using dtransform3D = algebra::get_transform3D_t<A>; |
106 | 58 |
|
107 | 59 | template <typename A, std::size_t R, std::size_t C>
|
108 |
| -using dmatrix = typename detail::get_matrix<A>::template matrix<R, C>; |
| 60 | +using dmatrix = algebra::get_matrix_t<A, R, C>; |
109 | 61 |
|
110 |
| -namespace concepts { |
| 62 | +namespace detail { |
111 | 63 |
|
112 |
| -/// Check if an algebra has soa layout |
113 |
| -/// @{ |
114 |
| -template <typename A> |
115 |
| -concept soa_algebra = (!concepts::arithmetic<dscalar<A>>); |
| 64 | +using namespace ::algebra::boolean; |
116 | 65 |
|
117 |
| -template <typename A> |
118 |
| -concept aos_algebra = (!concepts::soa_algebra<A>); |
119 |
| -/// @} |
120 |
| - |
121 |
| -} // namespace concepts |
| 66 | +} // namespace detail |
122 | 67 |
|
123 | 68 | } // namespace detray
|
0 commit comments