27 #ifndef MPBLOCKS_DUBINS_CURVES_CUDA2_PACKEDINDEX_HPP_
28 #define MPBLOCKS_DUBINS_CURVES_CUDA2_PACKEDINDEX_HPP_
34 namespace curves_cuda {
36 template <
typename PunType>
43 template <
typename PunType>
49 template <
typename PunType>
53 const StorageType size =
sizeof(PunType) * 8;
56 const StorageType field = 4;
58 return (
SolutionId)(m_storage >> (size - field));
61 template <
typename PunType>
63 typename PackedIndex<PunType>::StorageType
66 const StorageType size =
sizeof(PunType) * 8;
69 const StorageType field = 4;
70 const StorageType mask = ~(0x0F << (size - field));
72 return (m_storage & mask);
75 template <
typename PunType>
78 const StorageType mask = 0x0FFFFFFF;
79 StorageType idBits = id;
80 m_storage = (idBits << (
sizeof(PunType) * 8 - 4)) | (m_storage & mask);
83 template <
typename PunType>
89 m_storage = (idMask & m_storage) | (idxMask & idx);
92 template <
typename PunType>
95 return reinterpret_cast<PunType&
>(m_storage);
98 template <
typename PunType>
101 reinterpret_cast<PunType&
>(m_storage) = bits;
104 template <
typename PunType>
111 template <
typename PunType>
121 #endif // MPBLOCKS_DUBINS_CURVES_CUDA2_PACKEDINDEX_HPP_
PackedStorage< sizeof(PunType)>::Result StorageType
__device__ __host__ Storage_t getIdx() const
__device__ __host__ SolutionId getId() const
__device__ __host__ Format_t & getPun()
__device__ __host__ void setUnsigned(Storage_t bits)
__device__ __host__ void setIdx(Storage_t idx)
__device__ __host__ PackedIndex(Format_t bits)
__device__ __host__ void setId(SolutionId id)
__device__ __host__ Storage_t getUnsigned()
SolutionId
enumerates solution types
__device__ __host__ void setPun(Format_t bits)