15eb6b827SSiva Chandra Reddy //===-- Implementation of qsort -------------------------------------------===// 25eb6b827SSiva Chandra Reddy // 35eb6b827SSiva Chandra Reddy // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 45eb6b827SSiva Chandra Reddy // See https://llvm.org/LICENSE.txt for license information. 55eb6b827SSiva Chandra Reddy // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 65eb6b827SSiva Chandra Reddy // 75eb6b827SSiva Chandra Reddy //===----------------------------------------------------------------------===// 85eb6b827SSiva Chandra Reddy 95eb6b827SSiva Chandra Reddy #include "src/stdlib/qsort.h" 105eb6b827SSiva Chandra Reddy #include "src/__support/common.h" 115ff3ff33SPetr Hosek #include "src/__support/macros/config.h" 12d3074f16SMichael Jones #include "src/stdlib/qsort_util.h" 135eb6b827SSiva Chandra Reddy 145eb6b827SSiva Chandra Reddy #include <stdint.h> 155eb6b827SSiva Chandra Reddy 165ff3ff33SPetr Hosek namespace LIBC_NAMESPACE_DECL { 175eb6b827SSiva Chandra Reddy 185eb6b827SSiva Chandra Reddy LLVM_LIBC_FUNCTION(void, qsort, 195eb6b827SSiva Chandra Reddy (void *array, size_t array_size, size_t elem_size, 205eb6b827SSiva Chandra Reddy int (*compare)(const void *, const void *))) { 21a6d2da8bSlntue 22*a738d81cSLukas Bergdoll const auto is_less = [compare](const void *a, const void *b) -> bool { 23*a738d81cSLukas Bergdoll return compare(a, b) < 0; 24*a738d81cSLukas Bergdoll }; 25a6d2da8bSlntue 26*a738d81cSLukas Bergdoll internal::unstable_sort(array, array_size, elem_size, is_less); 275eb6b827SSiva Chandra Reddy } 285eb6b827SSiva Chandra Reddy 295ff3ff33SPetr Hosek } // namespace LIBC_NAMESPACE_DECL 30