27 #ifndef MLN_CORE_INTERNAL_BOX_IMPL_HH
28 # define MLN_CORE_INTERNAL_BOX_IMPL_HH
36 # include <mln/core/internal/force_exact.hh>
55 template <
unsigned n,
typename C,
typename E>
58 template <
typename C,
typename E>
62 unsigned nslis()
const;
71 unsigned nrows()
const;
80 unsigned ncols()
const;
89 unsigned width()
const;
95 unsigned depth()
const;
98 template <
typename C,
typename E>
102 unsigned nrows()
const;
111 unsigned ncols()
const;
120 unsigned width()
const;
127 template <
typename C,
typename E>
131 unsigned ninds()
const;
141 # ifndef MLN_INCLUDE_ONLY
147 template <
typename C,
typename E>
151 return internal::force_exact<E>(*this).bbox().len(0);
154 template <
typename C,
typename E>
158 return internal::force_exact<E>(*this).bbox().pmin()[0];
161 template <
typename C,
typename E>
165 return internal::force_exact<E>(*this).bbox().pmax()[0];
168 template <
typename C,
typename E>
172 return internal::force_exact<E>(*this).bbox().len(1);
175 template <
typename C,
typename E>
179 return internal::force_exact<E>(*this).bbox().pmin()[1];
182 template <
typename C,
typename E>
186 return internal::force_exact<E>(*this).bbox().pmax()[1];
189 template <
typename C,
typename E>
193 return internal::force_exact<E>(*this).bbox().len(2);
196 template <
typename C,
typename E>
200 return internal::force_exact<E>(*this).bbox().pmin()[2];
203 template <
typename C,
typename E>
207 return internal::force_exact<E>(*this).bbox().pmax()[2];
211 template <
typename C,
typename E>
215 return internal::force_exact<E>(*this).bbox().len(2);
218 template <
typename C,
typename E>
222 return internal::force_exact<E>(*this).bbox().len(1);
225 template <
typename C,
typename E>
229 return internal::force_exact<E>(*this).bbox().len(0);
235 template <
typename C,
typename E>
239 return internal::force_exact<E>(*this).bbox().len(0);
242 template <
typename C,
typename E>
246 return internal::force_exact<E>(*this).bbox().pmin()[0];
249 template <
typename C,
typename E>
253 return internal::force_exact<E>(*this).bbox().pmax()[0];
256 template <
typename C,
typename E>
260 return internal::force_exact<E>(*this).bbox().len(1);
263 template <
typename C,
typename E>
267 return internal::force_exact<E>(*this).bbox().pmin()[1];
270 template <
typename C,
typename E>
274 return internal::force_exact<E>(*this).bbox().pmax()[1];
277 template <
typename C,
typename E>
281 return internal::force_exact<E>(*this).bbox().len(1);
284 template <
typename C,
typename E>
288 return internal::force_exact<E>(*this).bbox().len(0);
293 template <
typename C,
typename E>
297 return internal::force_exact<E>(*this).bbox().len(0);
300 template <
typename C,
typename E>
304 return internal::force_exact<E>(*this).bbox().pmin()[0];
307 template <
typename C,
typename E>
311 return internal::force_exact<E>(*this).bbox().pmax()[0];
314 # endif // ! MLN_INCLUDE_ONLY
321 #endif // ! MLN_CORE_INTERNAL_BOX_IMPL_HH