38#if !defined(SORT_IMPL_LINKTYPE) || !defined(SORT_IMPL_FUNC)
39# error "This file can't be compiled directly, include in another source file"
42#define list_node SORT_IMPL_LINKTYPE
43#define list_sort_do SORT_IMPL_FUNC
45#ifdef SORT_IMPL_LINKTYPE_DATA
46# define SORT_ARG(n) ((n)->SORT_IMPL_LINKTYPE_DATA)
48# define SORT_ARG(n) (n)
51#ifdef SORT_IMPL_USE_THUNK
52# define BLI_LIST_THUNK_APPEND1(a, thunk) a, thunk
53# define BLI_LIST_THUNK_PREPEND2(thunk, a, b) thunk, a, b
55# define BLI_LIST_THUNK_APPEND1(a, thunk) a
56# define BLI_LIST_THUNK_PREPEND2(thunk, a, b) a, b
59#define _BLI_LIST_SORT_CONCAT_AUX(MACRO_ARG1, MACRO_ARG2) MACRO_ARG1##MACRO_ARG2
60#define _BLI_LIST_SORT_CONCAT(MACRO_ARG1, MACRO_ARG2) \
61 _BLI_LIST_SORT_CONCAT_AUX(MACRO_ARG1, MACRO_ARG2)
62#define _BLI_LIST_SORT_PREFIX(id) _BLI_LIST_SORT_CONCAT(SORT_IMPL_FUNC, _##id)
65#define SortInfo _BLI_LIST_SORT_PREFIX(SortInfo)
66#define CompareFn _BLI_LIST_SORT_PREFIX(CompareFn)
67#define init_sort_info _BLI_LIST_SORT_PREFIX(init_sort_info)
68#define merge_lists _BLI_LIST_SORT_PREFIX(merge_lists)
69#define sweep_up _BLI_LIST_SORT_PREFIX(sweep_up)
70#define insert_list _BLI_LIST_SORT_PREFIX(insert_list)
73#ifdef SORT_IMPL_USE_THUNK
115#define FLOOR_LOG2(x) \
116 (((x) >= 2) + ((x) >= 4) + ((x) >= 8) + ((x) >= 16) + ((x) >= 32) + ((x) >= 64) + ((x) >= 128))
117#define MAX_RANKS ((sizeof(size_t) * 8) - FLOOR_LOG2(sizeof(list_node)) - 1)
123#ifdef SORT_IMPL_USE_THUNK
145#ifdef SORT_IMPL_USE_THUNK
162 while (first && second) {
165 second = second->next;
171 pos = &((*pos)->next);
173 *
pos = first ? first : second;
184 for (i = si->
min_rank; i < upto; i++) {
231 for (i = si->
n_ranks; i < rank; i++) {
283 while (list && list->next) {
302#undef _BLI_LIST_SORT_CONCAT_AUX
303#undef _BLI_LIST_SORT_CONCAT
316#undef BLI_LIST_THUNK_APPEND1
317#undef BLI_LIST_THUNK_PREPEND2
#define SORT_IMPL_USE_THUNK
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
#define BLI_LIST_THUNK_PREPEND2(thunk, a, b)
#define BLI_LIST_THUNK_APPEND1(a, thunk)
list_node * ranks[MAX_RANKS]