70 template<
typename S, 
typename T>
 
   71 struct FCL_EXPORT morton_functor {};
 
   75 struct FCL_EXPORT morton_functor<S, 
uint32>
 
   77   morton_functor(
const AABB<S>& bbox);
 
   81   const Vector3<S> base;
 
   84   static constexpr 
size_t bits();
 
   87 using morton_functoru32f = morton_functor<float, uint32>;
 
   88 using morton_functoru32d = morton_functor<double, uint32>;
 
   92 struct FCL_EXPORT morton_functor<S, 
uint64>
 
   94   morton_functor(
const AABB<S>& bbox);
 
   98   const Vector3<S> base;
 
  101   static constexpr 
size_t bits();
 
  104 using morton_functoru64f = morton_functor<float, uint64>;
 
  105 using morton_functoru64d = morton_functor<double, uint64>;
 
  109 template<
typename S, 
size_t N>
 
  110 struct FCL_EXPORT morton_functor<S, std::bitset<N>>
 
  112   static_assert(N%3==0, 
"Number of bits must be a multiple of 3");
 
  114   morton_functor(
const AABB<S>& bbox);
 
  116   std::bitset<N> operator() (
const Vector3<S>& 
point) 
const;
 
  118   const Vector3<S> base;
 
  119   const Vector3<S> inv;
 
  121   static constexpr 
size_t bits();