|  | /* | 
|  | *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. | 
|  | * | 
|  | *  Use of this source code is governed by a BSD-style license | 
|  | *  that can be found in the LICENSE file in the root of the source | 
|  | *  tree. An additional intellectual property rights grant can be found | 
|  | *  in the file PATENTS.  All contributing project authors may | 
|  | *  be found in the AUTHORS file in the root of the source tree. | 
|  | */ | 
|  |  | 
|  | // Generic unstable sorting routines. | 
|  |  | 
|  | #ifndef WEBRTC_SYSTEM_WRAPPERS_INCLUDE_SORT_H_ | 
|  | #define WEBRTC_SYSTEM_WRAPPERS_INCLUDE_SORT_H_ | 
|  |  | 
|  | #include "webrtc/common_types.h" | 
|  | #include "webrtc/typedefs.h" | 
|  |  | 
|  | namespace webrtc { | 
|  |  | 
|  | enum Type { | 
|  | TYPE_Word8, | 
|  | TYPE_UWord8, | 
|  | TYPE_Word16, | 
|  | TYPE_UWord16, | 
|  | TYPE_Word32, | 
|  | TYPE_UWord32, | 
|  | TYPE_Word64, | 
|  | TYPE_UWord64, | 
|  | TYPE_Float32, | 
|  | TYPE_Float64 | 
|  | }; | 
|  |  | 
|  | // Sorts intrinsic data types. | 
|  | // | 
|  | // data            [in/out] A pointer to an array of intrinsic type. | 
|  | //                 Upon return it will be sorted in ascending order. | 
|  | // num_of_elements The number of elements in the array. | 
|  | // data_type       Enum corresponding to the type of the array. | 
|  | // | 
|  | // returns 0 on success, -1 on failure. | 
|  | int32_t Sort(void* data, uint32_t num_of_elements, Type data_type); | 
|  |  | 
|  | // Sorts arbitrary data types. This requires an array of intrinsically typed | 
|  | // key values which will be used to sort the data array. There must be a | 
|  | // one-to-one correspondence between data elements and key elements, with | 
|  | // corresponding elements sharing the same position in their respective | 
|  | // arrays. | 
|  | // | 
|  | // data            [in/out] A pointer to an array of arbitrary type. | 
|  | //                 Upon return it will be sorted in ascending order. | 
|  | // key             [in] A pointer to an array of keys used to sort the | 
|  | //                 data array. | 
|  | // num_of_elements The number of elements in the arrays. | 
|  | // size_of_element The size, in bytes, of the data array. | 
|  | // key_type        Enum corresponding to the type of the key array. | 
|  | // | 
|  | // returns 0 on success, -1 on failure. | 
|  | // | 
|  | int32_t KeySort(void* data, void* key, uint32_t num_of_elements, | 
|  | uint32_t size_of_element, Type key_type); | 
|  |  | 
|  | }  // namespace webrtc | 
|  |  | 
|  | #endif  // WEBRTC_SYSTEM_WRAPPERS_INCLUDE_SORT_H_ |