Files
test/source/blender/blenlib/intern/sort_utils.c

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

107 lines
2.0 KiB
C
Raw Normal View History

/* SPDX-License-Identifier: GPL-2.0-or-later
* Copyright 2013 Blender Foundation. All rights reserved. */
/** \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 struct SortAnyByFloat *a = a_;
const struct SortAnyByFloat *b = b_;
2019-03-27 13:16:10 +11:00
if (a->sort_value > b->sort_value) {
return 1;
}
if (a->sort_value < b->sort_value) {
2019-03-27 13:16:10 +11:00
return -1;
}
return 0;
}
int BLI_sortutil_cmp_float_reverse(const void *a_, const void *b_)
{
const struct SortAnyByFloat *a = a_;
const struct SortAnyByFloat *b = b_;
2019-03-27 13:16:10 +11:00
if (a->sort_value < b->sort_value) {
return 1;
}
if (a->sort_value > b->sort_value) {
2019-03-27 13:16:10 +11:00
return -1;
}
return 0;
}
int BLI_sortutil_cmp_int(const void *a_, const void *b_)
{
const struct SortAnyByInt *a = a_;
const struct SortAnyByInt *b = b_;
2019-03-27 13:16:10 +11:00
if (a->sort_value > b->sort_value) {
return 1;
}
if (a->sort_value < b->sort_value) {
2019-03-27 13:16:10 +11:00
return -1;
}
return 0;
}
int BLI_sortutil_cmp_int_reverse(const void *a_, const void *b_)
{
const struct SortAnyByInt *a = a_;
const struct SortAnyByInt *b = b_;
2019-03-27 13:16:10 +11:00
if (a->sort_value < b->sort_value) {
return 1;
}
if (a->sort_value > b->sort_value) {
2019-03-27 13:16:10 +11:00
return -1;
}
return 0;
}
int BLI_sortutil_cmp_ptr(const void *a_, const void *b_)
{
const struct SortAnyByPtr *a = a_;
const struct SortAnyByPtr *b = b_;
2019-03-27 13:16:10 +11:00
if (a->sort_value > b->sort_value) {
return 1;
}
if (a->sort_value < b->sort_value) {
2019-03-27 13:16:10 +11:00
return -1;
}
return 0;
}
int BLI_sortutil_cmp_ptr_reverse(const void *a_, const void *b_)
{
const struct SortAnyByPtr *a = a_;
const struct SortAnyByPtr *b = b_;
2019-03-27 13:16:10 +11:00
if (a->sort_value < b->sort_value) {
return 1;
}
if (a->sort_value > b->sort_value) {
2019-03-27 13:16:10 +11:00
return -1;
}
return 0;
}