/** @file\r
- Print Library.\r
+ Base Print Library instance implementation.\r
\r
- Copyright (c) 2006 - 2007, Intel Corporation<BR>\r
+ Copyright (c) 2006 - 2008, Intel Corporation<BR>\r
All rights reserved. This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
\r
- Module Name: PrintLib.c\r
-\r
**/\r
\r
-//\r
-// Include common header file for this module.\r
-//\r
-\r
-\r
#include "PrintLibInternal.h"\r
\r
-#define WARNING_STATUS_NUMBER 4\r
-#define ERROR_STATUS_NUMBER 24\r
#define ASSERT_UNICODE_BUFFER(Buffer) ASSERT ((((UINTN) (Buffer)) & 0x01) == 0)\r
\r
-GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 *StatusString [] = {\r
- "Success", // RETURN_SUCCESS = 0\r
- "Warning Unknown Glyph", // RETURN_WARN_UNKNOWN_GLYPH = 1\r
- "Warning Delete Failure", // RETURN_WARN_DELETE_FAILURE = 2\r
- "Warning Write Failure", // RETURN_WARN_WRITE_FAILURE = 3\r
- "Warning Buffer Too Small", // RETURN_WARN_BUFFER_TOO_SMALL = 4\r
- "Load Error", // RETURN_LOAD_ERROR = 1 | MAX_BIT\r
- "Invalid Parameter", // RETURN_INVALID_PARAMETER = 2 | MAX_BIT\r
- "Unsupported", // RETURN_UNSUPPORTED = 3 | MAX_BIT\r
- "Bad Buffer Size", // RETURN_BAD_BUFFER_SIZE = 4 | MAX_BIT\r
- "Buffer Too Small", // RETURN_BUFFER_TOO_SMALL, = 5 | MAX_BIT\r
- "Not Ready", // RETURN_NOT_READY = 6 | MAX_BIT\r
- "Device Error", // RETURN_DEVICE_ERROR = 7 | MAX_BIT\r
- "Write Protected", // RETURN_WRITE_PROTECTED = 8 | MAX_BIT\r
- "Out of Resources", // RETURN_OUT_OF_RESOURCES = 9 | MAX_BIT\r
- "Volume Corrupt", // RETURN_VOLUME_CORRUPTED = 10 | MAX_BIT\r
- "Volume Full", // RETURN_VOLUME_FULL = 11 | MAX_BIT\r
- "No Media", // RETURN_NO_MEDIA = 12 | MAX_BIT\r
- "Media changed", // RETURN_MEDIA_CHANGED = 13 | MAX_BIT\r
- "Not Found", // RETURN_NOT_FOUND = 14 | MAX_BIT\r
- "Access Denied", // RETURN_ACCESS_DENIED = 15 | MAX_BIT\r
- "No Response", // RETURN_NO_RESPONSE = 16 | MAX_BIT\r
- "No mapping", // RETURN_NO_MAPPING = 17 | MAX_BIT\r
- "Time out", // RETURN_TIMEOUT = 18 | MAX_BIT\r
- "Not started", // RETURN_NOT_STARTED = 19 | MAX_BIT\r
- "Already started", // RETURN_ALREADY_STARTED = 20 | MAX_BIT\r
- "Aborted", // RETURN_ABORTED = 21 | MAX_BIT\r
- "ICMP Error", // RETURN_ICMP_ERROR = 22 | MAX_BIT\r
- "TFTP Error", // RETURN_TFTP_ERROR = 23 | MAX_BIT\r
- "Protocol Error" // RETURN_PROTOCOL_ERROR = 24 | MAX_BIT\r
-};\r
-\r
-/**\r
- Worker function that produces a Null-terminated string in an output buffer \r
- based on a Null-terminated format string and a VA_LIST argument list.\r
-\r
- VSPrint function to process format and place the results in Buffer. Since a \r
- VA_LIST is used this rountine allows the nesting of Vararg routines. Thus \r
- this is the main print working routine.\r
-\r
- @param Buffer Character buffer to print the results of the parsing\r
- of Format into.\r
- @param BufferSize Maximum number of characters to put into buffer.\r
- @param Flags Intial flags value.\r
- Can only have FORMAT_UNICODE and OUTPUT_UNICODE set.\r
- @param Format Null-terminated format string.\r
- @param Marker Vararg list consumed by processing Format.\r
-\r
- @return Number of characters printed not including the Null-terminator.\r
-\r
-**/\r
-UINTN\r
-BasePrintLibVSPrint (\r
- OUT CHAR8 *Buffer,\r
- IN UINTN BufferSize,\r
- IN UINTN Flags,\r
- IN CONST CHAR8 *Format,\r
- IN VA_LIST Marker\r
- )\r
-{\r
- CHAR8 *OriginalBuffer;\r
- CHAR8 *EndBuffer;\r
- CHAR8 ValueBuffer[MAXIMUM_VALUE_CHARACTERS];\r
- UINTN BytesPerOutputCharacter;\r
- UINTN BytesPerFormatCharacter;\r
- UINTN FormatMask;\r
- UINTN FormatCharacter;\r
- UINTN Width;\r
- UINTN Precision;\r
- INT64 Value;\r
- CONST CHAR8 *ArgumentString;\r
- UINTN Character;\r
- GUID *TmpGuid;\r
- TIME *TmpTime;\r
- UINTN Count;\r
- UINTN ArgumentMask;\r
- INTN BytesPerArgumentCharacter;\r
- UINTN ArgumentCharacter;\r
- BOOLEAN Done;\r
- UINTN Index;\r
- CHAR8 Prefix;\r
- BOOLEAN ZeroPad;\r
- BOOLEAN Comma;\r
- UINTN Digits;\r
- UINTN Radix;\r
- RETURN_STATUS Status;\r
-\r
- if (BufferSize == 0) {\r
- return 0;\r
- }\r
- ASSERT (Buffer != NULL);\r
-\r
- if ((Flags & OUTPUT_UNICODE) != 0) {\r
- BytesPerOutputCharacter = 2;\r
- } else {\r
- BytesPerOutputCharacter = 1;\r
- }\r
-\r
- //\r
- // Reserve space for the Null terminator.\r
- //\r
- BufferSize--;\r
- OriginalBuffer = Buffer;\r
- //\r
- // Set the tag for the end of the input Buffer.\r
- //\r
- EndBuffer = Buffer + BufferSize * BytesPerOutputCharacter;\r
-\r
- if ((Flags & FORMAT_UNICODE) != 0) {\r
- //\r
- // Make sure format string cannot contain more than PcdMaximumUnicodeStringLength\r
- // Unicode characters if PcdMaximumUnicodeStringLength is not zero. \r
- //\r
- ASSERT (StrSize ((CHAR16 *) Format) != 0);\r
- BytesPerFormatCharacter = 2;\r
- FormatMask = 0xffff;\r
- } else {\r
- //\r
- // Make sure format string cannot contain more than PcdMaximumAsciiStringLength\r
- // Ascii characters if PcdMaximumAsciiStringLength is not zero. \r
- //\r
- ASSERT (AsciiStrSize (Format) != 0);\r
- BytesPerFormatCharacter = 1;\r
- FormatMask = 0xff;\r
- }\r
-\r
-\r
-\r
- //\r
- // Get the first character from the format string\r
- //\r
- FormatCharacter = (*Format | (*(Format + 1) << 8)) & FormatMask;\r
-\r
- //\r
- // Loop until the end of the format string is reached or the output buffer is full\r
- //\r
- while (FormatCharacter != 0 && Buffer < EndBuffer) {\r
- //\r
- // Clear all the flag bits except those that may have been passed in\r
- //\r
- Flags &= (OUTPUT_UNICODE | FORMAT_UNICODE);\r
-\r
- //\r
- // Set the default width to zero, and the default precision to 1\r
- //\r
- Width = 0;\r
- Precision = 1;\r
- Prefix = 0;\r
- Comma = FALSE;\r
- ZeroPad = FALSE;\r
- Count = 0;\r
- Digits = 0;\r
-\r
- switch (FormatCharacter) {\r
- case '%':\r
- //\r
- // Parse Flags and Width\r
- //\r
- for (Done = FALSE; !Done; ) {\r
- Format += BytesPerFormatCharacter;\r
- FormatCharacter = (*Format | (*(Format + 1) << 8)) & FormatMask;\r
- switch (FormatCharacter) {\r
- case '.': \r
- Flags |= PRECISION; \r
- break;\r
- case '-': \r
- Flags |= LEFT_JUSTIFY; \r
- break;\r
- case '+': \r
- Flags |= PREFIX_SIGN; \r
- break;\r
- case ' ': \r
- Flags |= PREFIX_BLANK; \r
- break;\r
- case ',': \r
- Flags |= COMMA_TYPE; \r
- break;\r
- case 'L':\r
- case 'l': \r
- Flags |= LONG_TYPE; \r
- break;\r
- case '*':\r
- if ((Flags & PRECISION) == 0) {\r
- Flags |= PAD_TO_WIDTH;\r
- Width = VA_ARG (Marker, UINTN);\r
- } else {\r
- Precision = VA_ARG (Marker, UINTN);\r
- }\r
- break;\r
- case '0':\r
- if ((Flags & PRECISION) == 0) {\r
- Flags |= PREFIX_ZERO;\r
- }\r
- case '1':\r
- case '2':\r
- case '3':\r
- case '4':\r
- case '5':\r
- case '6':\r
- case '7':\r
- case '8':\r
- case '9':\r
- for (Count = 0; ((FormatCharacter >= '0') && (FormatCharacter <= '9')); ){\r
- Count = (Count * 10) + FormatCharacter - '0';\r
- Format += BytesPerFormatCharacter;\r
- FormatCharacter = (*Format | (*(Format + 1) << 8)) & FormatMask;\r
- }\r
- Format -= BytesPerFormatCharacter;\r
- if ((Flags & PRECISION) == 0) {\r
- Flags |= PAD_TO_WIDTH;\r
- Width = Count;\r
- } else {\r
- Precision = Count;\r
- }\r
- break;\r
- \r
- case '\0':\r
- //\r
- // Make no output if Format string terminates unexpectedly when\r
- // looking up for flag, width, precision and type. \r
- //\r
- Format -= BytesPerFormatCharacter;\r
- Precision = 0;\r
- //\r
- // break skipped on purpose.\r
- //\r
- default:\r
- Done = TRUE;\r
- break;\r
- }\r
- } \r
-\r
- //\r
- // Handle each argument type\r
- //\r
- switch (FormatCharacter) {\r
- case 'p':\r
- //\r
- // Flag space, +, 0, L & l are invalid for type p.\r
- //\r
- Flags &= ~(PREFIX_BLANK | PREFIX_SIGN | PREFIX_ZERO | LONG_TYPE);\r
- if (sizeof (VOID *) > 4) {\r
- Flags |= LONG_TYPE;\r
- }\r
- case 'X':\r
- Flags |= PREFIX_ZERO;\r
- //\r
- // break skipped on purpose\r
- //\r
- case 'x':\r
- Flags |= RADIX_HEX;\r
- //\r
- // break skipped on purpose\r
- //\r
- case 'd':\r
- if ((Flags & LONG_TYPE) == 0) {\r
- Value = (VA_ARG (Marker, int));\r
- } else {\r
- Value = VA_ARG (Marker, INT64);\r
- }\r
- if ((Flags & PREFIX_BLANK) != 0) {\r
- Prefix = ' ';\r
- }\r
- if ((Flags & PREFIX_SIGN) != 0) {\r
- Prefix = '+';\r
- }\r
- if ((Flags & COMMA_TYPE) != 0) {\r
- Comma = TRUE;\r
- }\r
- if ((Flags & RADIX_HEX) == 0) {\r
- Radix = 10;\r
- if (Comma) {\r
- Flags &= (~PREFIX_ZERO);\r
- Precision = 1;\r
- }\r
- if (Value < 0) {\r
- Flags |= PREFIX_SIGN;\r
- Prefix = '-';\r
- Value = -Value;\r
- }\r
- } else {\r
- Radix = 16;\r
- Comma = FALSE;\r
- if ((Flags & LONG_TYPE) == 0 && Value < 0) {\r
- Value = (unsigned int)Value;\r
- }\r
- }\r
- //\r
- // Convert Value to a reversed string\r
- //\r
- Count = BasePrintLibValueToString (ValueBuffer, Value, Radix);\r
- if (Value == 0 && Precision == 0) {\r
- Count = 0;\r
- }\r
- ArgumentString = (CHAR8 *)ValueBuffer + Count;\r
- \r
- Digits = Count % 3;\r
- if (Digits != 0) {\r
- Digits = 3 - Digits;\r
- }\r
- if (Comma && Count != 0) {\r
- Count += ((Count - 1) / 3);\r
- }\r
- if (Prefix != 0) {\r
- Count++;\r
- Precision++;\r
- }\r
- Flags |= ARGUMENT_REVERSED;\r
- ZeroPad = TRUE;\r
- if ((Flags & PREFIX_ZERO) != 0) {\r
- if ((Flags & LEFT_JUSTIFY) == 0) {\r
- if ((Flags & PAD_TO_WIDTH) != 0) {\r
- if ((Flags & PRECISION) == 0) {\r
- Precision = Width;\r
- }\r
- }\r
- }\r
- }\r
- break;\r
-\r
- case 's':\r
- case 'S':\r
- Flags |= ARGUMENT_UNICODE;\r
- //\r
- // break skipped on purpose\r
- //\r
- case 'a':\r
- ArgumentString = (CHAR8 *)VA_ARG (Marker, CHAR8 *);\r
- if (ArgumentString == NULL) {\r
- Flags &= (~ARGUMENT_UNICODE);\r
- ArgumentString = "<null string>";\r
- }\r
- break;\r
-\r
- case 'c':\r
- Character = VA_ARG (Marker, UINTN) & 0xffff;\r
- ArgumentString = (CHAR8 *)&Character;\r
- Flags |= ARGUMENT_UNICODE;\r
- break;\r
-\r
- case 'g':\r
- TmpGuid = VA_ARG (Marker, GUID *);\r
- if (TmpGuid == NULL) {\r
- ArgumentString = "<null guid>";\r
- } else {\r
- BasePrintLibSPrint (\r
- ValueBuffer,\r
- MAXIMUM_VALUE_CHARACTERS, \r
- 0,\r
- "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",\r
- TmpGuid->Data1,\r
- TmpGuid->Data2,\r
- TmpGuid->Data3,\r
- TmpGuid->Data4[0],\r
- TmpGuid->Data4[1],\r
- TmpGuid->Data4[2],\r
- TmpGuid->Data4[3],\r
- TmpGuid->Data4[4],\r
- TmpGuid->Data4[5],\r
- TmpGuid->Data4[6],\r
- TmpGuid->Data4[7]\r
- );\r
- ArgumentString = ValueBuffer;\r
- }\r
- break;\r
-\r
- case 't':\r
- TmpTime = VA_ARG (Marker, TIME *); \r
- if (TmpTime == NULL) {\r
- ArgumentString = "<null time>";\r
- } else {\r
- BasePrintLibSPrint (\r
- ValueBuffer,\r
- MAXIMUM_VALUE_CHARACTERS,\r
- 0,\r
- "%02d/%02d/%04d %02d:%02d",\r
- TmpTime->Month,\r
- TmpTime->Day,\r
- TmpTime->Year,\r
- TmpTime->Hour,\r
- TmpTime->Minute\r
- );\r
- ArgumentString = ValueBuffer;\r
- }\r
- break;\r
-\r
- case 'r':\r
- Status = VA_ARG (Marker, RETURN_STATUS);\r
- ArgumentString = ValueBuffer;\r
- if (RETURN_ERROR (Status)) {\r
- //\r
- // Clear error bit\r
- //\r
- Index = Status & ~MAX_BIT;\r
- if (Index > 0 && Index <= ERROR_STATUS_NUMBER) {\r
- ArgumentString = StatusString [Index + WARNING_STATUS_NUMBER];\r
- }\r
- } else {\r
- Index = Status;\r
- if (Index <= WARNING_STATUS_NUMBER) {\r
- ArgumentString = StatusString [Index];\r
- }\r
- }\r
- if (ArgumentString == ValueBuffer) {\r
- BasePrintLibSPrint ((CHAR8 *) ValueBuffer, MAXIMUM_VALUE_CHARACTERS, 0, "%08X", Status);\r
- }\r
- break;\r
-\r
- case '\n':\r
- ArgumentString = "\n\r";\r
- break;\r
-\r
- case '%':\r
- default:\r
- //\r
- // if the type is '%' or unknown, then print it to the screen\r
- //\r
- ArgumentString = (CHAR8 *)&FormatCharacter;\r
- Flags |= ARGUMENT_UNICODE;\r
- break;\r
- }\r
- break;\r
- \r
- case '\n':\r
- ArgumentString = "\n\r";\r
- break;\r
-\r
- default:\r
- ArgumentString = (CHAR8 *)&FormatCharacter;\r
- Flags |= ARGUMENT_UNICODE;\r
- break;\r
- }\r
-\r
- //\r
- // Retrieve the ArgumentString attriubutes\r
- //\r
- if ((Flags & ARGUMENT_UNICODE) != 0) {\r
- ArgumentMask = 0xffff;\r
- BytesPerArgumentCharacter = 2;\r
- } else {\r
- ArgumentMask = 0xff;\r
- BytesPerArgumentCharacter = 1;\r
- }\r
- if ((Flags & ARGUMENT_REVERSED) != 0) {\r
- BytesPerArgumentCharacter = -BytesPerArgumentCharacter;\r
- } else {\r
- //\r
- // Compute the number of characters in ArgumentString and store it in Count\r
- // ArgumentString is either null-terminated, or it contains Precision characters\r
- //\r
- for (Count = 0; Count < Precision || ((Flags & PRECISION) == 0); Count++) {\r
- ArgumentCharacter = ((ArgumentString[Count * BytesPerArgumentCharacter] & 0xff) | ((ArgumentString[Count * BytesPerArgumentCharacter + 1]) << 8)) & ArgumentMask;\r
- if (ArgumentCharacter == 0) {\r
- break;\r
- }\r
- }\r
- }\r
-\r
- if (Precision < Count) {\r
- Precision = Count;\r
- }\r
-\r
- //\r
- // Pad before the string\r
- //\r
- if ((Flags & (PAD_TO_WIDTH | LEFT_JUSTIFY)) == (PAD_TO_WIDTH)) {\r
- Buffer = BasePrintLibFillBuffer (Buffer, EndBuffer, Width - Precision, ' ', BytesPerOutputCharacter);\r
- }\r
-\r
- if (ZeroPad) {\r
- if (Prefix != 0) {\r
- Buffer = BasePrintLibFillBuffer (Buffer, EndBuffer, 1, Prefix, BytesPerOutputCharacter);\r
- }\r
- Buffer = BasePrintLibFillBuffer (Buffer, EndBuffer, Precision - Count, '0', BytesPerOutputCharacter);\r
- } else {\r
- Buffer = BasePrintLibFillBuffer (Buffer, EndBuffer, Precision - Count, ' ', BytesPerOutputCharacter);\r
- if (Prefix != 0) {\r
- Buffer = BasePrintLibFillBuffer (Buffer, EndBuffer, 1, Prefix, BytesPerOutputCharacter);\r
- }\r
- }\r
-\r
- //\r
- // Output the Prefix character if it is present\r
- //\r
- Index = 0;\r
- if (Prefix != 0) {\r
- Index++;\r
- }\r
-\r
- //\r
- // Copy the string into the output buffer performing the required type conversions\r
- //\r
- while (Index < Count) {\r
- ArgumentCharacter = ((*ArgumentString & 0xff) | (*(ArgumentString + 1) << 8)) & ArgumentMask;\r
-\r
- Buffer = BasePrintLibFillBuffer (Buffer, EndBuffer, 1, ArgumentCharacter, BytesPerOutputCharacter);\r
- ArgumentString += BytesPerArgumentCharacter;\r
- Index++;\r
- if (Comma) {\r
- Digits++;\r
- if (Digits == 3) {\r
- Digits = 0;\r
- Index++;\r
- if (Index < Count) {\r
- Buffer = BasePrintLibFillBuffer (Buffer, EndBuffer, 1, ',', BytesPerOutputCharacter);\r
- }\r
- }\r
- }\r
- }\r
-\r
- //\r
- // Pad after the string\r
- //\r
- if ((Flags & (PAD_TO_WIDTH | LEFT_JUSTIFY)) == (PAD_TO_WIDTH | LEFT_JUSTIFY)) {\r
- Buffer = BasePrintLibFillBuffer (Buffer, EndBuffer, Width - Precision, ' ', BytesPerOutputCharacter);\r
- }\r
-\r
- //\r
- // Get the next character from the format string\r
- //\r
- Format += BytesPerFormatCharacter;\r
-\r
- //\r
- // Get the next character from the format string\r
- //\r
- FormatCharacter = (*Format | (*(Format + 1) << 8)) & FormatMask;\r
- }\r
-\r
- //\r
- // Null terminate the Unicode or ASCII string\r
- //\r
- BasePrintLibFillBuffer (Buffer, EndBuffer + BytesPerOutputCharacter, 1, 0, BytesPerOutputCharacter);\r
- //\r
- // Make sure output buffer cannot contain more than PcdMaximumUnicodeStringLength\r
- // Unicode characters if PcdMaximumUnicodeStringLength is not zero. \r
- //\r
- ASSERT ((((Flags & OUTPUT_UNICODE) == 0)) || (StrSize ((CHAR16 *) OriginalBuffer) != 0));\r
- //\r
- // Make sure output buffer cannot contain more than PcdMaximumAsciiStringLength\r
- // ASCII characters if PcdMaximumAsciiStringLength is not zero. \r
- //\r
- ASSERT ((((Flags & OUTPUT_UNICODE) != 0)) || (AsciiStrSize (OriginalBuffer) != 0));\r
-\r
- return ((Buffer - OriginalBuffer) / BytesPerOutputCharacter);\r
-}\r
-\r
-/**\r
- Worker function that produces a Null-terminated string in an output buffer \r
- based on a Null-terminated format string and variable argument list.\r
-\r
- VSPrint function to process format and place the results in Buffer. Since a \r
- VA_LIST is used this rountine allows the nesting of Vararg routines. Thus \r
- this is the main print working routine.\r
-\r
- @param Buffer Character buffer to print the results of the parsing\r
- of Format into.\r
- @param BufferSize Maximum number of characters to put into buffer.\r
- Zero means no limit.\r
- @param Flags Intial flags value.\r
- Can only have FORMAT_UNICODE and OUTPUT_UNICODE set\r
- @param FormatString Null-terminated format string.\r
-\r
- @return Number of characters printed not including the Null-terminator.\r
-\r
-**/\r
-UINTN\r
-BasePrintLibSPrint (\r
- OUT CHAR8 *StartOfBuffer,\r
- IN UINTN BufferSize,\r
- IN UINTN Flags,\r
- IN CONST CHAR8 *FormatString,\r
- ...\r
- )\r
-{\r
- VA_LIST Marker;\r
-\r
- VA_START (Marker, FormatString);\r
- return BasePrintLibVSPrint (StartOfBuffer, BufferSize, Flags, FormatString, Marker);\r
-}\r
-\r
/**\r
Produces a Null-terminated Unicode string in an output buffer based on \r
a Null-terminated Unicode format string and a VA_LIST argument list\r
Unicode string.\r
@param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.\r
@param FormatString Null-terminated Unicode format string.\r
- \r
+ @param ... Variable argument list whose contents are accessed based on the \r
+ format string specified by FormatString.\r
@return The number of Unicode characters in the produced output buffer not including the\r
Null-terminator.\r
\r
@param StartOfBuffer A pointer to the output buffer for the produced Null-terminated \r
Unicode string.\r
@param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.\r
- @param FormatString Null-terminated Unicode format string.\r
+ @param FormatString Null-terminated ASCII format string.\r
@param Marker VA_LIST marker for the variable argument list.\r
\r
@return The number of Unicode characters in the produced output buffer not including the\r
@param StartOfBuffer A pointer to the output buffer for the produced Null-terminated \r
Unicode string.\r
@param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.\r
- @param FormatString Null-terminated Unicode format string.\r
+ @param FormatString Null-terminated ASCII format string.\r
+ @param ... Variable argument list whose contents are accessed based on the \r
+ format string specified by FormatString.\r
\r
@return The number of Unicode characters in the produced output buffer not including the\r
Null-terminator.\r
@param StartOfBuffer A pointer to the output buffer for the produced Null-terminated \r
ASCII string.\r
@param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.\r
- @param FormatString Null-terminated Unicode format string.\r
+ @param FormatString Null-terminated ASCII format string.\r
@param Marker VA_LIST marker for the variable argument list.\r
\r
@return The number of ASCII characters in the produced output buffer not including the\r
@param StartOfBuffer A pointer to the output buffer for the produced Null-terminated \r
ASCII string.\r
@param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.\r
- @param FormatString Null-terminated Unicode format string.\r
+ @param FormatString Null-terminated ASCII format string.\r
+ @param ... Variable argument list whose contents are accessed based on the \r
+ format string specified by FormatString.\r
\r
@return The number of ASCII characters in the produced output buffer not including the\r
Null-terminator.\r
\r
/**\r
Produces a Null-terminated ASCII string in an output buffer based on a Null-terminated\r
- ASCII format string and a VA_LIST argument list.\r
+ Unicode format string and a VA_LIST argument list.\r
\r
Produces a Null-terminated ASCII string in the output buffer specified by StartOfBuffer\r
and BufferSize.\r
\r
/**\r
Produces a Null-terminated ASCII string in an output buffer based on a Null-terminated\r
- ASCII format string and variable argument list.\r
+ Unicode format string and variable argument list.\r
\r
Produces a Null-terminated ASCII string in the output buffer specified by StartOfBuffer\r
and BufferSize.\r
ASCII string.\r
@param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.\r
@param FormatString Null-terminated Unicode format string.\r
+ @param ... Variable argument list whose contents are accessed based on the \r
+ format string specified by FormatString.\r
\r
@return The number of ASCII characters in the produced output buffer not including the\r
Null-terminator.\r
UINTN\r
EFIAPI\r
AsciiValueToString (\r
- IN OUT CHAR8 *Buffer,\r
- IN UINTN Flags,\r
- IN INT64 Value,\r
- IN UINTN Width\r
+ OUT CHAR8 *Buffer,\r
+ IN UINTN Flags,\r
+ IN INT64 Value,\r
+ IN UINTN Width\r
)\r
{\r
return BasePrintLibConvertValueToString (Buffer, Flags, Value, Width, 1);\r