Files

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

108 lines
3.2 KiB
C
Raw Permalink Normal View History

2009-07-13 19:33:35 +00:00
/** @file
2009-11-18 21:36:50 +00:00
Library used for sorting and comparison routines.
2009-07-13 19:33:35 +00:00
Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved. <BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
2009-07-13 19:33:35 +00:00
**/
2021-12-05 14:54:02 -08:00
2010-09-14 05:18:09 +00:00
#ifndef __SORT_LIB_H__
2009-07-13 19:33:35 +00:00
#define __SORT_LIB_H__
/**
2010-09-14 05:18:09 +00:00
Prototype for comparison function for any two element types.
2009-07-13 19:33:35 +00:00
2010-09-14 05:18:09 +00:00
@param[in] Buffer1 The pointer to first buffer.
@param[in] Buffer2 The pointer to second buffer.
2009-07-13 19:33:35 +00:00
2009-11-20 18:21:03 +00:00
@retval 0 Buffer1 equal to Buffer2.
2010-09-14 05:18:09 +00:00
@return <0 Buffer1 is less than Buffer2.
@return >0 Buffer1 is greater than Buffer2.
2009-07-13 19:33:35 +00:00
**/
typedef
INTN
(EFIAPI *SORT_COMPARE)(
IN CONST VOID *Buffer1,
IN CONST VOID *Buffer2
2009-07-13 19:33:35 +00:00
);
/**
Function to perform a Quick Sort on a buffer of comparable elements.
Each element must be equally sized.
2009-11-20 18:21:03 +00:00
If BufferToSort is NULL, then ASSERT.
If CompareFunction is NULL, then ASSERT.
2009-07-13 19:33:35 +00:00
2010-09-14 05:18:09 +00:00
If Count is < 2 , then perform no action.
If Size is < 1 , then perform no action.
2009-07-13 19:33:35 +00:00
2011-09-02 08:05:34 +00:00
@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.
2009-07-13 19:33:35 +00:00
**/
VOID
EFIAPI
PerformQuickSort (
IN OUT VOID *BufferToSort,
IN CONST UINTN Count,
IN CONST UINTN ElementSize,
IN SORT_COMPARE CompareFunction
2009-07-13 19:33:35 +00:00
);
2009-11-18 21:36:50 +00:00
/**
Function to compare 2 device paths for use as CompareFunction.
2010-09-14 05:18:09 +00:00
@param[in] Buffer1 The pointer to Device Path to compare.
@param[in] Buffer2 The pointer to second DevicePath to compare.
2009-11-18 21:36:50 +00:00
2009-12-07 18:04:03 +00:00
@retval 0 Buffer1 equal to Buffer2.
@return < 0 Buffer1 is less than Buffer2.
@return > 0 Buffer1 is greater than Buffer2.
2009-11-18 21:36:50 +00:00
**/
INTN
2009-12-07 18:04:03 +00:00
EFIAPI
2009-11-18 21:36:50 +00:00
DevicePathCompare (
IN CONST VOID *Buffer1,
IN CONST VOID *Buffer2
2009-11-18 21:36:50 +00:00
);
2009-12-07 18:04:03 +00:00
/**
Function to compare 2 strings without regard to case of the characters.
2010-09-14 05:18:09 +00:00
@param[in] Buffer1 The pointer to String to compare (CHAR16**).
@param[in] Buffer2 The pointer to second String to compare (CHAR16**).
2009-12-07 18:04:03 +00:00
@retval 0 Buffer1 equal to Buffer2.
@return < 0 Buffer1 is less than Buffer2.
@return > 0 Buffer1 is greater than Buffer2.
2009-12-07 18:04:03 +00:00
**/
INTN
EFIAPI
StringNoCaseCompare (
IN CONST VOID *Buffer1,
IN CONST VOID *Buffer2
2009-12-07 18:04:03 +00:00
);
2010-09-14 05:18:09 +00:00
/**
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
);
2009-07-13 19:33:35 +00:00
#endif //__SORT_LIB_H__