Did you know ... Search Documentation:
Predicate uint32_codes_when/2
 uint32_codes_when(?Uint32, ?Codes) is det[private]
Convert between a 32-bit unsigned integer value and its wirestream codes. This is a low-level predicate; normally, you should use template_message/2 and the appropriate template term.

This predicate delays until either Uint32 or Codes is sufficiently instantiated.

There is also a non-delayed uint32_codes/2

SWI-Prolog doesn't have a 32-bit integer type, so 32-bit integer is simulated by doing a range check.

Uint32- an unsigned integer that's in the 32-bit range
Codes- a list of 4 integers (codes)
- Type,Domain if Value or Codes are of the wrong type or out of range.