| /*++ | |
| Copyright (c) 2006, 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. | |
| Module Name: | |
| PrintLib.c | |
| Abstract: | |
| Print Library | |
| --*/ | |
| static EFI_PRINT_PROTOCOL *gPrintProtocol = NULL; | |
| UINTN | |
| UnicodeVSPrint ( | |
| OUT CHAR16 *StartOfBuffer, | |
| IN UINTN BufferSize, | |
| IN const CHAR16 *FormatString, | |
| IN VA_LIST Marker | |
| ) | |
| /*++ | |
| Routine Description: | |
| VSPrint function to process format and place the results in Buffer. Since a | |
| VA_LIST is used this rountine allows the nesting of Vararg routines. Thus | |
| this is the main print working routine | |
| Arguments: | |
| StartOfBuffer - Unicode buffer to print the results of the parsing of Format into. | |
| BufferSize - Maximum number of characters to put into buffer. Zero means | |
| no limit. | |
| FormatString - Unicode format string see file header for more details. | |
| Marker - Vararg list consumed by processing Format. | |
| Returns: | |
| Number of characters printed. | |
| --*/ | |
| { | |
| EFI_STATUS Status; | |
| if (gPrintProtocol == NULL) { | |
| Status = gBS->LocateProtocol ( | |
| &gEfiPrintProtocolGuid, | |
| NULL, | |
| (VOID **)&gPrintProtocol | |
| ); | |
| if (EFI_ERROR (Status)) { | |
| gPrintProtocol = NULL; | |
| } | |
| if (gPrintProtocol == NULL) { | |
| return 0; | |
| } | |
| } | |
| return gPrintProtocol->VSPrint (StartOfBuffer, BufferSize, FormatString, Marker); | |
| } | |
| UINTN | |
| UnicodeSPrint ( | |
| OUT CHAR16 *StartOfBuffer, | |
| IN UINTN BufferSize, | |
| IN const CHAR16 *FormatString, | |
| ... | |
| ) | |
| { | |
| UINTN Return; | |
| VA_LIST Marker; | |
| VA_START (Marker, FormatString); | |
| Return = UnicodeVSPrint (StartOfBuffer, BufferSize, FormatString, Marker); | |
| VA_END (Marker); | |
| return Return; | |
| } | |
| UINTN | |
| AsciiVSPrint ( | |
| OUT CHAR8 *StartOfBuffer, | |
| IN UINTN BufferSize, | |
| IN const CHAR8 *FormatString, | |
| IN VA_LIST Marker | |
| ) | |
| /*++ | |
| Routine Description: | |
| VSPrint function to process format and place the results in Buffer. Since a | |
| VA_LIST is used this rountine allows the nesting of Vararg routines. Thus | |
| this is the main print working routine | |
| Arguments: | |
| StartOfBuffer - Unicode buffer to print the results of the parsing of Format into. | |
| BufferSize - Maximum number of characters to put into buffer. Zero means | |
| no limit. | |
| FormatString - Unicode format string see file header for more details. | |
| Marker - Vararg list consumed by processing Format. | |
| Returns: | |
| Number of characters printed. | |
| --*/ | |
| { | |
| return 0; | |
| } | |
| UINTN | |
| AsciiSPrint ( | |
| OUT CHAR8 *StartOfBuffer, | |
| IN UINTN BufferSize, | |
| IN const CHAR8 *FormatString, | |
| ... | |
| ) | |
| { | |
| UINTN Return; | |
| VA_LIST Marker; | |
| VA_START (Marker, FormatString); | |
| Return = AsciiVSPrint (StartOfBuffer, BufferSize, FormatString, Marker); | |
| VA_END (Marker); | |
| return Return; | |
| } |