Files
test/source/blender/blenlib/intern/sort_utils.cc
Brecht Van Lommel e2e1984e60 Refactor: Convert remainder of blenlib to C++
A few headers like BLI_math_constants.h and BLI_utildefines.h keep working
for C code, for remaining makesdna and userdef defaults code in C.

Pull Request: https://projects.blender.org/blender/blender/pulls/134406
2025-02-12 23:01:08 +01:00

80 lines
1.6 KiB
C++

/* SPDX-FileCopyrightText: 2013 Blender Authors
*
* SPDX-License-Identifier: GPL-2.0-or-later */
/** \file
* \ingroup bli
*
* Utility functions for sorting common types.
*/
#include "BLI_sort_utils.h" /* own include */
struct SortAnyByFloat {
float sort_value;
};
struct SortAnyByInt {
int sort_value;
};
struct SortAnyByPtr {
const void *sort_value;
};
int BLI_sortutil_cmp_float(const void *a_, const void *b_)
{
const SortAnyByFloat *a = static_cast<const SortAnyByFloat *>(a_);
const SortAnyByFloat *b = static_cast<const SortAnyByFloat *>(b_);
if (a->sort_value > b->sort_value) {
return 1;
}
if (a->sort_value < b->sort_value) {
return -1;
}
return 0;
}
int BLI_sortutil_cmp_float_reverse(const void *a_, const void *b_)
{
const SortAnyByFloat *a = static_cast<const SortAnyByFloat *>(a_);
const SortAnyByFloat *b = static_cast<const SortAnyByFloat *>(b_);
if (a->sort_value < b->sort_value) {
return 1;
}
if (a->sort_value > b->sort_value) {
return -1;
}
return 0;
}
int BLI_sortutil_cmp_int(const void *a_, const void *b_)
{
const SortAnyByInt *a = static_cast<const SortAnyByInt *>(a_);
const SortAnyByInt *b = static_cast<const SortAnyByInt *>(b_);
if (a->sort_value > b->sort_value) {
return 1;
}
if (a->sort_value < b->sort_value) {
return -1;
}
return 0;
}
int BLI_sortutil_cmp_int_reverse(const void *a_, const void *b_)
{
const SortAnyByInt *a = static_cast<const SortAnyByInt *>(a_);
const SortAnyByInt *b = static_cast<const SortAnyByInt *>(b_);
if (a->sort_value < b->sort_value) {
return 1;
}
if (a->sort_value > b->sort_value) {
return -1;
}
return 0;
}