+/*!
+@brief
+ Borrows the unsigned integer range at index \bt_p{index} from the
+ unsigned integer range set \bt_p{int_range_set}.
+
+@param[in] int_range_set
+ Unsigned integer range set from which to borrow the unsigned integer
+ range at index \bt_p{index}.
+@param[in] index
+ Index of the unsigned integer range to borrow from
+ \bt_p{int_range_set}.
+
+@returns
+ @parblock
+ \em Borrowed reference of the unsigned integer range of
+ \bt_p{int_range_set} at index \bt_p{index}.
+
+ The returned pointer remains valid until \bt_p{int_range_set} is
+ modified.
+ @endparblock
+
+@bt_pre_not_null{int_range_set}
+@pre
+ \bt_p{index} is less than the number of unsigned integer ranges in
+ \bt_p{int_range_set} (as returned by
+ bt_integer_range_set_get_range_count()).
+*/
+extern const bt_integer_range_unsigned *
+bt_integer_range_set_unsigned_borrow_range_by_index_const(
+ const bt_integer_range_set_unsigned *int_range_set,
+ uint64_t index);
+
+/*!
+@brief
+ Returns whether or not the unsigned integer range set
+ \bt_p{int_range_set_a} is equal to \bt_p{int_range_set_b}.
+
+Two unsigned integer range sets are considered equal if they contain the
+exact same unsigned integer ranges, whatever the order. In other words,
+an unsigned integer range set containing [2, 9] and [10, 15]
+is \em not equal to an unsigned integer range containing [2, 15].
+
+@param[in] int_range_set_a
+ Unsigned integer range set A.
+@param[in] int_range_set_b
+ Unsigned integer range set B.
+
+@returns
+ #BT_TRUE if \bt_p{int_range_set_a} is equal to
+ \bt_p{int_range_set_b}.
+
+@bt_pre_not_null{int_range_set_a}
+@bt_pre_not_null{int_range_set_b}
+*/
+extern bt_bool bt_integer_range_set_unsigned_is_equal(
+ const bt_integer_range_set_unsigned *int_range_set_a,
+ const bt_integer_range_set_unsigned *int_range_set_b);
+
+/*!
+@brief
+ \ref api-fund-c-typing "Upcasts" the unsigned integer range set
+ \bt_p{int_range_set} to the abstract #bt_integer_range_set type.
+
+@param[in] int_range_set
+ @parblock
+ Unsigned integer range set to upcast.
+
+ Can be \c NULL.
+ @endparblock
+
+@returns
+ \bt_p{int_range_set} as an abstract integer range set.
+*/
+static inline
+const bt_integer_range_set *bt_integer_range_set_unsigned_as_range_set_const(
+ const bt_integer_range_set_unsigned *int_range_set)
+{
+ return __BT_UPCAST_CONST(bt_integer_range_set, int_range_set);
+}
+
+/*!
+@brief
+ Increments the \ref api-fund-shared-object "reference count" of
+ the unsigned integer range set \bt_p{int_range_set}.
+
+@param[in] int_range_set
+ @parblock
+ Unsigned integer range set of which to increment the reference
+ count.
+
+ Can be \c NULL.
+ @endparblock
+
+@sa bt_integer_range_set_unsigned_put_ref() —
+ Decrements the reference count of an unsigned integer range set.
+*/
+extern void bt_integer_range_set_unsigned_get_ref(
+ const bt_integer_range_set_unsigned *int_range_set);
+
+/*!
+@brief
+ Decrements the \ref api-fund-shared-object "reference count" of
+ the unsigned integer range set \bt_p{int_range_set}.
+
+@param[in] int_range_set
+ @parblock
+ Unsigned integer range set of which to decrement the reference
+ count.
+
+ Can be \c NULL.
+ @endparblock
+
+@sa bt_integer_range_set_unsigned_get_ref() —
+ Increments the reference count of an unsigned integer range set.
+*/
+extern void bt_integer_range_set_unsigned_put_ref(
+ const bt_integer_range_set_unsigned *int_range_set);
+
+/*!
+@brief
+ Decrements the reference count of the unsigned integer range set
+ \bt_p{_int_range_set}, and then sets \bt_p{_int_range_set} to \c
+ NULL.
+
+@param _int_range_set
+ @parblock
+ Unsigned integer range set of which to decrement the reference
+ count.
+
+ Can contain \c NULL.
+ @endparblock
+
+@bt_pre_assign_expr{_int_range_set}
+*/
+#define BT_INTEGER_RANGE_SET_UNSIGNED_PUT_REF_AND_RESET(_int_range_set) \
+ do { \
+ bt_integer_range_set_unsigned_put_ref(_int_range_set); \
+ (_int_range_set) = NULL; \
+ } while (0)
+
+/*!
+@brief
+ Decrements the reference count of the unsigned integer range set
+ \bt_p{_dst}, sets \bt_p{_dst} to \bt_p{_src}, and then sets
+ \bt_p{_src} to \c NULL.
+
+This macro effectively moves an unsigned integer range set reference
+from the expression \bt_p{_src} to the expression \bt_p{_dst}, putting
+the existing \bt_p{_dst} reference.
+
+@param _dst
+ @parblock
+ Destination expression.
+
+ Can contain \c NULL.
+ @endparblock
+@param _src
+ @parblock
+ Source expression.
+
+ Can contain \c NULL.
+ @endparblock
+
+@bt_pre_assign_expr{_dst}
+@bt_pre_assign_expr{_src}
+*/
+#define BT_INTEGER_RANGE_SET_UNSIGNED_MOVE_REF(_dst, _src) \
+ do { \
+ bt_integer_range_set_unsigned_put_ref(_dst); \
+ (_dst) = (_src); \
+ (_src) = NULL; \
+ } while (0)
+
+/*! @} */
+
+/*!
+@name Signed integer range set
+@{
+*/
+
+/*!
+@brief
+ Creates and returns an empty set of signed 64-bit integer ranges.
+
+@returns
+ New signed integer range set, or \c NULL on memory error.
+*/