https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Functions
RayTracingPackingUtils::detail Namespace Reference

Functions

template<typename BufferType >
constexpr std::size_t mixedPackSizeHelper (const std::size_t offset, const std::size_t size)
 Helper for mixedPackSize().
 
template<typename BufferType , typename InputType , typename... Rest>
constexpr std::size_t mixedPackSizeHelper (std::size_t offset, std::size_t size)
 Recursive helper for mixedPackSize().
 
template<typename BufferType , typename BufferIter , typename ValueType >
void mixedUnpackHelper (BufferIter &in, const BufferType *&src, std::size_t &src_offset, ValueType &output)
 Helper for mixedUnpack()
 
template<typename BufferIter , typename BufferType , typename ValueType >
void mixedPackHelper (BufferIter &out, BufferType &dest, std::size_t &dest_offset, const ValueType &input)
 Helper for mixedPack()
 

Function Documentation

◆ mixedPackHelper()

template<typename BufferIter , typename BufferType , typename ValueType >
void RayTracingPackingUtils::detail::mixedPackHelper ( BufferIter &  out,
BufferType &  dest,
std::size_t &  dest_offset,
const ValueType &  input 
)

Helper for mixedPack()

Definition at line 161 of file RayTracingPackingUtils.h.

165{
166 static_assert(sizeof(ValueType) <= sizeof(BufferType), "ValueType will not fit into BufferType");
167
168 if (dest_offset + sizeof(ValueType) > sizeof(BufferType))
169 {
170 out++ = dest;
171 dest_offset = 0;
172 }
173
174 std::memcpy((char *)&dest + dest_offset, &input, sizeof(ValueType));
175 dest_offset += sizeof(ValueType);
176}

Referenced by RayTracingPackingUtils::mixedPack().

◆ mixedPackSizeHelper() [1/2]

template<typename BufferType >
constexpr std::size_t RayTracingPackingUtils::detail::mixedPackSizeHelper ( const std::size_t  offset,
const std::size_t  size 
)
constexpr

Helper for mixedPackSize().

Called after evaluating the last InputType, and increases the size if any offset remains

Definition at line 114 of file RayTracingPackingUtils.h.

115{
116 return offset ? size + 1 : size;
117}

Referenced by RayTracingPackingUtils::mixedPackSize(), and mixedPackSizeHelper().

◆ mixedPackSizeHelper() [2/2]

template<typename BufferType , typename InputType , typename... Rest>
constexpr std::size_t RayTracingPackingUtils::detail::mixedPackSizeHelper ( std::size_t  offset,
std::size_t  size 
)
constexpr

Recursive helper for mixedPackSize().

Recurses through the types (in InputType and rest), and increments the offset and size as needed

Definition at line 127 of file RayTracingPackingUtils.h.

128{
129 return offset + sizeof(InputType) > sizeof(BufferType)
130 ? mixedPackSizeHelper<BufferType, Rest...>(sizeof(InputType), ++size)
131 : mixedPackSizeHelper<BufferType, Rest...>(offset + sizeof(InputType), size);
132}
constexpr std::size_t mixedPackSizeHelper(const std::size_t offset, const std::size_t size)
Helper for mixedPackSize().

◆ mixedUnpackHelper()

template<typename BufferType , typename BufferIter , typename ValueType >
void RayTracingPackingUtils::detail::mixedUnpackHelper ( BufferIter &  in,
const BufferType *&  src,
std::size_t &  src_offset,
ValueType &  output 
)

Helper for mixedUnpack()

Definition at line 139 of file RayTracingPackingUtils.h.

143{
144 static_assert(sizeof(ValueType) <= sizeof(BufferType), "ValueType will not fit into BufferType");
145
146 if (src_offset + sizeof(ValueType) > sizeof(BufferType))
147 {
148 src = &(*in++);
149 src_offset = 0;
150 }
151
152 std::memcpy(&output, (char *)src + src_offset, sizeof(ValueType));
153 src_offset += sizeof(ValueType);
154}

Referenced by RayTracingPackingUtils::mixedUnpack().