14a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown/*
24a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown * Copyright (C) 2012 The Android Open Source Project
34a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown *
44a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown * Licensed under the Apache License, Version 2.0 (the "License");
54a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown * you may not use this file except in compliance with the License.
64a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown * You may obtain a copy of the License at
74a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown *
84a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown *      http://www.apache.org/licenses/LICENSE-2.0
94a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown *
104a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown * Unless required by applicable law or agreed to in writing, software
114a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown * distributed under the License is distributed on an "AS IS" BASIS,
124a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
134a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown * See the License for the specific language governing permissions and
144a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown * limitations under the License.
154a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown */
164a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown
174a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown/*
184a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown * Provides a portable version of qsort_r, called qsort_r_compat, which is a
194a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown * reentrant variant of qsort that passes a user data pointer to its comparator.
204a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown * This implementation follows the BSD parameter convention.
214a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown */
224a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown
234a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown#ifndef _LIBS_CUTILS_QSORT_R_COMPAT_H
244a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown#define _LIBS_CUTILS_QSORT_R_COMPAT_H
254a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown
264a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown#include <stdlib.h>
274a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown
284a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown#ifdef __cplusplus
294a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brownextern "C" {
304a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown#endif
314a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown
324a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brownvoid qsort_r_compat(void* base, size_t nel, size_t width, void* thunk,
334a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown        int (*compar)(void*, const void* , const void* ));
344a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown
354a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown#ifdef __cplusplus
364a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown}
374a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown#endif
384a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown
394a6b384f607feed3755cfcbcdfded55fc2ccce82Jeff Brown#endif // _LIBS_CUTILS_QSORT_R_COMPAT_H
40