]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Library/BaseSortLib/BaseSortLib.c
MdeModulePkg: Apply uncrustify changes
[mirror_edk2.git] / MdeModulePkg / Library / BaseSortLib / BaseSortLib.c
CommitLineData
4983ca93 1/** @file\r
2 Library used for sorting routines.\r
3\r
99325a8b 4 Copyright (c) 2009 - 2021, Intel Corporation. All rights reserved. <BR>\r
9d510e61 5 SPDX-License-Identifier: BSD-2-Clause-Patent\r
4983ca93 6\r
7**/\r
4983ca93 8#include <Uefi.h>\r
9\r
10#include <Library/BaseLib.h>\r
11#include <Library/BaseMemoryLib.h>\r
12#include <Library/DebugLib.h>\r
13#include <Library/MemoryAllocationLib.h>\r
1e6e84c7 14#include <Library/SortLib.h>\r
4983ca93 15\r
4983ca93 16/**\r
17 Function to perform a Quick Sort alogrithm on a buffer of comparable elements.\r
18\r
19 Each element must be equal sized.\r
20\r
21 if BufferToSort is NULL, then ASSERT.\r
22 if CompareFunction is NULL, then ASSERT.\r
23\r
24 if Count is < 2 then perform no action.\r
25 if Size is < 1 then perform no action.\r
26\r
4ff7e37b
ED
27 @param[in, out] BufferToSort on call a Buffer of (possibly sorted) elements\r
28 on return a buffer of sorted elements\r
29 @param[in] Count the number of elements in the buffer to sort\r
30 @param[in] ElementSize Size of an element in bytes\r
31 @param[in] CompareFunction The function to call to perform the comparison\r
32 of any 2 elements\r
4983ca93 33**/\r
34VOID\r
35EFIAPI\r
36PerformQuickSort (\r
1436aea4
MK
37 IN OUT VOID *BufferToSort,\r
38 IN CONST UINTN Count,\r
39 IN CONST UINTN ElementSize,\r
40 IN SORT_COMPARE CompareFunction\r
125c2cf4 41 )\r
42{\r
4983ca93 43 VOID *Buffer;\r
44\r
1436aea4
MK
45 ASSERT (BufferToSort != NULL);\r
46 ASSERT (CompareFunction != NULL);\r
4983ca93 47\r
1436aea4
MK
48 Buffer = AllocateZeroPool (ElementSize);\r
49 ASSERT (Buffer != NULL);\r
4983ca93 50\r
99325a8b 51 QuickSort (\r
4983ca93 52 BufferToSort,\r
53 Count,\r
54 ElementSize,\r
55 CompareFunction,\r
99325a8b
IK
56 Buffer\r
57 );\r
4983ca93 58\r
1436aea4 59 FreePool (Buffer);\r
4983ca93 60 return;\r
61}\r
125c2cf4 62\r
63/**\r
64 Not supported in Base version.\r
1e6e84c7 65\r
a405b86d 66 @param[in] Buffer1 Ignored.\r
67 @param[in] Buffer2 Ignored.\r
68\r
125c2cf4 69 ASSERT and return 0.\r
70**/\r
71INTN\r
21ecdf15 72EFIAPI\r
125c2cf4 73DevicePathCompare (\r
1436aea4
MK
74 IN CONST VOID *Buffer1,\r
75 IN CONST VOID *Buffer2\r
125c2cf4 76 )\r
77{\r
1436aea4 78 ASSERT (FALSE);\r
125c2cf4 79 return 0;\r
70328967 80}\r
11d2decf 81\r
82/**\r
a653a525 83 Not supported in Base version.\r
11d2decf 84\r
a653a525
JC
85 @param[in] Buffer1 Ignored.\r
86 @param[in] Buffer2 Ignored.\r
11d2decf 87\r
a653a525 88 ASSERT and return 0.\r
11d2decf 89**/\r
90INTN\r
91EFIAPI\r
92StringNoCaseCompare (\r
1436aea4
MK
93 IN CONST VOID *Buffer1,\r
94 IN CONST VOID *Buffer2\r
11d2decf 95 )\r
96{\r
1436aea4 97 ASSERT (FALSE);\r
11d2decf 98 return 0;\r
99}\r
100\r
a405b86d 101/**\r
a653a525 102 Not supported in Base version.\r
a405b86d 103\r
a653a525
JC
104 @param[in] Buffer1 Ignored.\r
105 @param[in] Buffer2 Ignored.\r
a405b86d 106\r
a653a525 107 ASSERT and return 0.\r
a405b86d 108**/\r
109INTN\r
110EFIAPI\r
111StringCompare (\r
1436aea4
MK
112 IN CONST VOID *Buffer1,\r
113 IN CONST VOID *Buffer2\r
a405b86d 114 )\r
115{\r
1436aea4 116 ASSERT (FALSE);\r
a405b86d 117 return 0;\r
118}\r