1*fa4b4621SEtienne Carriere // SPDX-License-Identifier: BSD-2-Clause 2*fa4b4621SEtienne Carriere /* 3*fa4b4621SEtienne Carriere * Copyright (c) 2024, STMicroelectronics 4*fa4b4621SEtienne Carriere */ 5*fa4b4621SEtienne Carriere 6*fa4b4621SEtienne Carriere #include <stdlib.h> 7*fa4b4621SEtienne Carriere #include <util.h> 8*fa4b4621SEtienne Carriere 9*fa4b4621SEtienne Carriere #define QSORT_HELPER(name, type) \ 10*fa4b4621SEtienne Carriere static int cmp_ ## name(const void *a, const void *b) \ 11*fa4b4621SEtienne Carriere { \ 12*fa4b4621SEtienne Carriere const type *ia = a; \ 13*fa4b4621SEtienne Carriere const type *ib = b; \ 14*fa4b4621SEtienne Carriere \ 15*fa4b4621SEtienne Carriere return CMP_TRILEAN(*ia, *ib); \ 16*fa4b4621SEtienne Carriere } \ 17*fa4b4621SEtienne Carriere \ 18*fa4b4621SEtienne Carriere void qsort_ ## name(type *aa, size_t n) \ 19*fa4b4621SEtienne Carriere { \ 20*fa4b4621SEtienne Carriere qsort(aa, n, sizeof(*aa), cmp_ ## name); \ 21*fa4b4621SEtienne Carriere } 22*fa4b4621SEtienne Carriere 23*fa4b4621SEtienne Carriere QSORT_HELPER(int, int); 24*fa4b4621SEtienne Carriere QSORT_HELPER(uint, unsigned int); 25*fa4b4621SEtienne Carriere QSORT_HELPER(long, long int); 26*fa4b4621SEtienne Carriere QSORT_HELPER(ul, unsigned long int); 27*fa4b4621SEtienne Carriere QSORT_HELPER(ll, long long int); 28*fa4b4621SEtienne Carriere QSORT_HELPER(ull, unsigned long long int); 29*fa4b4621SEtienne Carriere QSORT_HELPER(s8, int8_t); 30*fa4b4621SEtienne Carriere QSORT_HELPER(u8, uint8_t); 31*fa4b4621SEtienne Carriere QSORT_HELPER(s16, int16_t); 32*fa4b4621SEtienne Carriere QSORT_HELPER(u16, uint16_t); 33*fa4b4621SEtienne Carriere QSORT_HELPER(s32, int32_t); 34*fa4b4621SEtienne Carriere QSORT_HELPER(u32, uint32_t); 35*fa4b4621SEtienne Carriere QSORT_HELPER(s64, int64_t); 36*fa4b4621SEtienne Carriere QSORT_HELPER(u64, uint64_t); 37