1.3.64
 
Loading...
Searching...
No Matches
UUIDLookupHelper Class Reference

Safe UUID→Position lookup with automatic bounds checking. More...

#include <BufferIndexing.h>

Public Member Functions

HELIOS_HOST_DEVICE UUIDLookupHelper (const uint *prim_positions, size_t prim_count)
 Construct UUID lookup helper.
 
HELIOS_HOST_DEVICE bool toPosition (uint UUID, uint &position) const
 Convert UUID to position with automatic bounds checking.
 

Detailed Description

Safe UUID→Position lookup with automatic bounds checking.

Encapsulates the UUID→position conversion pattern used throughout CUDA code. Prevents forgetting bounds check or using UUID as direct array index.

This helper makes it impossible to:

  • Use UUID directly as array index (sparse UUIDs cause out-of-bounds)
  • Forget bounds checking (built into toPosition())
  • Access deleted/invalid primitives (returns false for UINT_MAX)

Usage in CUDA ray hit programs:

UUIDLookupHelper lookup(primitive_positions, Nprimitives);
uint position;
if (!lookup.toPosition(hit_UUID, position)) {
return; // Invalid UUID - primitive was deleted or never existed
}
// Safe to use position for all buffer access
bool two_sided = twosided_flag[position];
int2 subdivs = object_subdivisions[position];

Historical bugs prevented (commit 0ec2dc25a):

  • 20+ instances of direct UUID indexing: twosided_flag[UUID], objectID[UUID]

Definition at line 292 of file BufferIndexing.h.

Constructor & Destructor Documentation

◆ UUIDLookupHelper()

HELIOS_HOST_DEVICE UUIDLookupHelper::UUIDLookupHelper ( const uint prim_positions,
size_t  prim_count 
)
inline

Construct UUID lookup helper.

Parameters
prim_positionsPointer to primitive_positions buffer (sparse array indexed by UUID)
prim_countTotal number of primitives (for bounds validation)

Definition at line 304 of file BufferIndexing.h.

Member Function Documentation

◆ toPosition()

HELIOS_HOST_DEVICE bool UUIDLookupHelper::toPosition ( uint  UUID,
uint position 
) const
inline

Convert UUID to position with automatic bounds checking.

Parameters
UUIDPrimitive UUID to look up
[out]positionOutput position (only written if UUID is valid)
Returns
true if UUID is valid and position was written, false if UUID not found

Returns false if:

  • primitive_positions[UUID] == UINT_MAX (deleted/never created)
  • primitive_positions[UUID] >= primitive_count (corrupted data)

Position parameter is unchanged if function returns false.

Definition at line 320 of file BufferIndexing.h.


The documentation for this class was generated from the following file: