4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This is a test application that demonstrates how to use the sorting functions.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This program and the accompanying materials
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync are licensed and made available under the terms and conditions of the BSD License
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync which accompanies this distribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync http://opensource.org/licenses/bsd-license.php
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Uefi.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Library/UefiLib.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Library/DebugLib.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Library/ShellCEntryLib.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Library/SortLib.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Test comparator.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] b1 The first INTN
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] b2 The other INTN
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval 0 They are the same.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval -1 b1 is less than b2
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval 1 b1 is greater then b2
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncINTN
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFIAPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncTest(CONST VOID *b1, CONST VOID *b2)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (*(INTN*)b1 == *(INTN*)b2) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return (0);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (*(INTN*)b1 < *(INTN*)b2) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return(-1);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return (1);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UEFI application entry point which has an interface similar to a
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync standard C main function.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The ShellCEntryLib library instance wrappers the actual UEFI application
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync entry point and calls this ShellAppMain function.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Argc Argument count
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Argv The parsed arguments
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval 0 The application exited normally.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval Other An error occurred.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncINTN
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFIAPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncShellAppMain (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN Argc,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CHAR16 **Argv
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync INTN Array[10];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Array[0] = 2;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Array[1] = 3;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Array[2] = 4;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Array[3] = 1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Array[4] = 5;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Array[5] = 6;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Array[6] = 7;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Array[7] = 8;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Array[8] = 1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Array[9] = 5;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Print(L"Array = %d, %d, %d, %d, %d, %d, %d, %d, %d, %d\r\n", Array[0],Array[1],Array[2],Array[3],Array[4],Array[5],Array[6],Array[7],Array[8],Array[9]);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PerformQuickSort(Array, 10, sizeof(INTN), Test);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Print(L"POST-SORT\r\n");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Print(L"Array = %d, %d, %d, %d, %d, %d, %d, %d, %d, %d\r\n", Array[0],Array[1],Array[2],Array[3],Array[4],Array[5],Array[6],Array[7],Array[8],Array[9]);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return 0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}