1 /*
2  * Copyright 2010-2019 Branimir Karadzic. All rights reserved.
3  * License: https://github.com/bkaradzic/bx#license-bsd-2-clause
4  */
5 
6 #ifndef BX_SORT_H_HEADER_GUARD
7 #define BX_SORT_H_HEADER_GUARD
8 
9 #include "bx.h"
10 
11 namespace bx
12 {
13 	///
14 	typedef int32_t (*ComparisonFn)(const void* _lhs, const void* _rhs);
15 
16 	///
17 	void quickSort(
18 		  void* _data
19 		, uint32_t _num
20 		, uint32_t _stride
21 		, const ComparisonFn _fn
22 		);
23 
24 	///
25 	void radixSort(
26 		  uint32_t* _keys
27 		, uint32_t* _tempKeys
28 		, uint32_t _size
29 		);
30 
31 	///
32 	template <typename Ty>
33 	void radixSort(
34 		  uint32_t* _keys
35 		, uint32_t* _tempKeys
36 		, Ty* _values
37 		, Ty* _tempValues
38 		, uint32_t _size
39 		);
40 
41 	///
42 	void radixSort(
43 		  uint64_t* _keys
44 		, uint64_t* _tempKeys
45 		, uint32_t _size
46 		);
47 
48 	///
49 	template <typename Ty>
50 	void radixSort(
51 		  uint64_t* _keys
52 		, uint64_t* _tempKeys
53 		, Ty* _values
54 		, Ty* _tempValues
55 		, uint32_t _size
56 		);
57 
58 } // namespace bx
59 
60 #include "inline/sort.inl"
61 
62 #endif // BX_SORT_H_HEADER_GUARD
63