/* * Operations on 64 bit address ranges. * Notes: * - Ranges must not wrap around 0, but can include UINT64_MAX. */ struct Range { /* * Do not access members directly, use the functions! * A non-empty range has @lob <= @upb. * An empty range has @lob == @upb + 1. */ uint64_t lob; /* inclusive lower bound */ uint64_t upb; /* inclusive upper bound */ }; typedef struct Range Range;
┌─────┬─────────┬──────── ── ── ── │ │ │ └─────┴─────────┴──────── ── ── ── ↑ ↑ lob upb