mdbx-doc: документирование mdbx_cursor_compare().

This commit is contained in:
Леонид Юрьев (Leonid Yuriev) 2024-03-21 21:28:12 +03:00
parent 183d1e1a44
commit f8836aefa0
2 changed files with 24 additions and 4 deletions

24
mdbx.h
View File

@ -5024,10 +5024,30 @@ LIBMDBX_API MDBX_dbi mdbx_cursor_dbi(const MDBX_cursor *cursor);
* \returns A non-zero error value on failure and 0 on success. */
LIBMDBX_API int mdbx_cursor_copy(const MDBX_cursor *src, MDBX_cursor *dest);
/** FIXME */
/** \brief Сравнивает позицию курсоров.
* \ingroup c_cursors
*
* Функция предназначена для сравнения позиций двух
* инициализированных/установленных курсоров, связанных с одной транзакцией и
* одной таблицей (DBI-дескриптором).
* Если же курсоры связаны с разными транзакциями, либо с разными таблицами,
* либо один из них не инициализирован, то результат сравнения не определен
* (поведением может быть изменено в последующих версиях).
*
* \param [in] left Левый курсор для сравнения позиций.
* \param [in] right Правый курсор для сравнения позиций.
* \param [in] ignore_multival Булевой флаг, влияющий на результат только при
* сравнении курсоров для таблиц с мульти-значениями, т.е. с флагом
* \ref MDBX_DUPSORT. В случае `true`, позиции курсоров сравниваются
* только по ключам, без учета позиционирования среди мульти-значений.
* Иначе, в случае `false`, при совпадении позиций по ключам,
* сравниваются также позиции по мульти-значениям.
*
* \retval Значение со знаком в семантике оператора `<=>` (меньше нуля, ноль,
* либо больше нуля) как результат сравнения позиций курсоров. */
LIBMDBX_API int mdbx_cursor_compare(const MDBX_cursor *left,
const MDBX_cursor *right,
bool ignore_nested);
bool ignore_multival);
/** \brief Retrieve by cursor.
* \ingroup c_crud

View File

@ -19806,7 +19806,7 @@ int mdbx_cursor_renew(const MDBX_txn *txn, MDBX_cursor *mc) {
}
int mdbx_cursor_compare(const MDBX_cursor *l, const MDBX_cursor *r,
bool ignore_nested) {
bool ignore_multival) {
const int incomparable = INT16_MAX + 1;
if (unlikely(!l))
return r ? -incomparable * 9 : 0;
@ -19847,7 +19847,7 @@ int mdbx_cursor_compare(const MDBX_cursor *l, const MDBX_cursor *r,
assert((l->mc_xcursor != nullptr) == (r->mc_xcursor != nullptr));
if (unlikely((l->mc_xcursor != nullptr) != (r->mc_xcursor != nullptr)))
return l->mc_xcursor ? incomparable * 2 : -incomparable * 2;
if (ignore_nested || !l->mc_xcursor)
if (ignore_multival || !l->mc_xcursor)
return 0;
#if MDBX_DEBUG