X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=ShellPkg%2FInclude%2FLibrary%2FSortLib.h;h=a3e0fd9bec877f10eb09c0c5169936561d06850c;hp=ecc538e4b379099b0722872629ee116813482ded;hb=4ff7e37b4f7e336a8ecb7080b8f48eef4b52d396;hpb=4983ca934c85ed80b15264d3a7ee10a4d3c0d51f diff --git a/ShellPkg/Include/Library/SortLib.h b/ShellPkg/Include/Library/SortLib.h index ecc538e4b3..a3e0fd9bec 100644 --- a/ShellPkg/Include/Library/SortLib.h +++ b/ShellPkg/Include/Library/SortLib.h @@ -1,35 +1,35 @@ /** @file - Library used for sorting routines. + Library used for sorting and comparison routines. -Copyright (c) 2009, Intel Corporation -All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php + Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.
+ This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ -#if !defined(__SORT_LIB_H__) +#ifndef __SORT_LIB_H__ #define __SORT_LIB_H__ /** - Prototype for comparison function for any 2 element types. + Prototype for comparison function for any two element types. - @param[in] Buffer1 pointer to first buffer - @param[in] Buffer2 pointer to second buffer + @param[in] Buffer1 The pointer to first buffer. + @param[in] Buffer2 The pointer to second buffer. - @retval 0 Buffer1 equal to Buffer2 - @return < 0 Buffer1 is less than Buffer2 - @return > 0 Buffer1 is greater than Buffer2 + @retval 0 Buffer1 equal to Buffer2. + @return <0 Buffer1 is less than Buffer2. + @return >0 Buffer1 is greater than Buffer2. **/ typedef INTN (EFIAPI *SORT_COMPARE)( - IN VOID *Buffer1, - IN VOID *Buffer2 + IN CONST VOID *Buffer1, + IN CONST VOID *Buffer2 ); /** @@ -37,26 +37,78 @@ INTN Each element must be equally sized. - if BufferToSort is NULL, then ASSERT. - if CompareFunction is NULL, then ASSERT. + If BufferToSort is NULL, then ASSERT. + If CompareFunction is NULL, then ASSERT. - if Count is < 2 then perform no action. - if Size is < 1 then perform no action. + If Count is < 2 , then perform no action. + If Size is < 1 , then perform no action. - @param[in,out] BufferToSort on call a Buffer of (possibly sorted) elements - on return a buffer of sorted elements - @param[in] Count the number of elements in the buffer to sort - @param[in] ElementSize Size of an element in bytes - @param[in] CompareFunction The function to call to perform the comparison - of any 2 elements + @param[in, out] BufferToSort On call, a Buffer of (possibly sorted) elements; + on return, a buffer of sorted elements. + @param[in] Count The number of elements in the buffer to sort. + @param[in] ElementSize The size of an element in bytes. + @param[in] CompareFunction The function to call to perform the comparison + of any two elements. **/ VOID EFIAPI PerformQuickSort ( - IN OUT VOID *BufferToSort, - IN CONST UINTN Count, - IN CONST UINTN ElementSize, - IN SORT_COMPARE CompareFunction + IN OUT VOID *BufferToSort, + IN CONST UINTN Count, + IN CONST UINTN ElementSize, + IN SORT_COMPARE CompareFunction + ); + + +/** + Function to compare 2 device paths for use as CompareFunction. + + @param[in] Buffer1 The pointer to Device Path to compare. + @param[in] Buffer2 The pointer to second DevicePath to compare. + + @retval 0 Buffer1 equal to Buffer2. + @return < 0 Buffer1 is less than Buffer2. + @return > 0 Buffer1 is greater than Buffer2. +**/ +INTN +EFIAPI +DevicePathCompare ( + IN CONST VOID *Buffer1, + IN CONST VOID *Buffer2 + ); + +/** + Function to compare 2 strings without regard to case of the characters. + + @param[in] Buffer1 The pointer to String to compare (CHAR16**). + @param[in] Buffer2 The pointer to second String to compare (CHAR16**). + + @retval 0 Buffer1 equal to Buffer2. + @return < 0 Buffer1 is less than Buffer2. + @return > 0 Buffer1 is greater than Buffer2. +**/ +INTN +EFIAPI +StringNoCaseCompare ( + IN CONST VOID *Buffer1, + IN CONST VOID *Buffer2 + ); + +/** + Function to compare 2 strings. + + @param[in] Buffer1 The pointer to String to compare (CHAR16**). + @param[in] Buffer2 The pointer to second String to compare (CHAR16**). + + @retval 0 Buffer1 equal to Buffer2. + @return < 0 Buffer1 is less than Buffer2. + @return > 0 Buffer1 is greater than Buffer2. +**/ +INTN +EFIAPI +StringCompare ( + IN CONST VOID *Buffer1, + IN CONST VOID *Buffer2 ); #endif //__SORT_LIB_H__