]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Library/PrintLib.h
Function headers and comments have been checked with spec.
[mirror_edk2.git] / MdePkg / Include / Library / PrintLib.h
index 004bc9f926bf0cef882f48b2a377fbbdaf2da390..1158a47b156efbc987e39bb6ff19357e5210c338 100644 (file)
@@ -1,16 +1,15 @@
 /** @file\r
-  Library that provides print services\r
+  Provides services to print a formatted string to a buffer. All combinations of\r
+  Unicode and ASCII strings are supported.\r
 \r
-  Copyright (c) 2006, Intel Corporation                                                         \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
-  http://opensource.org/licenses/bsd-license.php                                            \r
+Copyright (c) 2006 - 2008, Intel Corporation\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
+http://opensource.org/licenses/bsd-license.php\r
 \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.h\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
 **/\r
 \r
 \r
 ///\r
 /// Flags bitmask values use in UnicodeValueToString() and \r
-/// AcsiiValueToString()\r
+/// AsciiValueToString()\r
 ///\r
 #define LEFT_JUSTIFY      0x01\r
 #define COMMA_TYPE        0x08\r
 #define PREFIX_ZERO       0x20\r
+#define RADIX_HEX         0x80\r
 \r
 /**\r
   Produces a Null-terminated Unicode string in an output buffer based on \r
@@ -55,7 +55,9 @@
   If BufferSize is 0 or 1, then no output buffer is produced and 0 is returned.\r
 \r
   If BufferSize > 1 and StartOfBuffer is NULL, then ASSERT().\r
+  If BufferSize > 1 and StartOfBuffer is not aligned on a 16-bit boundary, then ASSERT().\r
   If BufferSize > 1 and FormatString is NULL, then ASSERT().\r
+  If BufferSize > 1 and FormatString is not aligned on a 16-bit boundary, then ASSERT().\r
   If PcdMaximumUnicodeStringLength is not zero, and FormatString contains more than \r
   PcdMaximumUnicodeStringLength Unicode characters not including the Null-terminator, then\r
   ASSERT().\r
@@ -95,7 +97,9 @@ UnicodeVSPrint (
   If BufferSize is 0 or 1, then no output buffer is produced and 0 is returned.\r
 \r
   If BufferSize > 1 and StartOfBuffer is NULL, then ASSERT().\r
+  If BufferSize > 1 and StartOfBuffer is not aligned on a 16-bit boundary, then ASSERT().\r
   If BufferSize > 1 and FormatString is NULL, then ASSERT().\r
+  If BufferSize > 1 and FormatString is not aligned on a 16-bit boundary, then ASSERT().\r
   If PcdMaximumUnicodeStringLength is not zero, and FormatString contains more than \r
   PcdMaximumUnicodeStringLength Unicode characters not including the Null-terminator, then\r
   ASSERT().\r
@@ -107,6 +111,8 @@ UnicodeVSPrint (
                           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  ...             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
@@ -135,6 +141,7 @@ UnicodeSPrint (
   If BufferSize is 0 or 1, then no output buffer is produced and 0 is returned.\r
 \r
   If BufferSize > 1 and StartOfBuffer is NULL, then ASSERT().\r
+  If BufferSize > 1 and StartOfBuffer is not aligned on a 16-bit boundary, then ASSERT().\r
   If BufferSize > 1 and FormatString is NULL, then ASSERT().\r
   If PcdMaximumAsciiStringLength is not zero, and FormatString contains more than\r
   PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator, then\r
@@ -146,7 +153,7 @@ UnicodeSPrint (
   @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
@@ -176,6 +183,7 @@ UnicodeVSPrintAsciiFormat (
   If BufferSize is 0 or 1, then no output buffer is produced and 0 is returned.\r
 \r
   If BufferSize > 1 and StartOfBuffer is NULL, then ASSERT().\r
+  If BufferSize > 1 and StartOfBuffer is not aligned on a 16-bit boundary, then ASSERT().\r
   If BufferSize > 1 and FormatString is NULL, then ASSERT().\r
   If PcdMaximumAsciiStringLength is not zero, and FormatString contains more than\r
   PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator, then\r
@@ -187,7 +195,9 @@ UnicodeVSPrintAsciiFormat (
   @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
@@ -202,6 +212,56 @@ UnicodeSPrintAsciiFormat (
   ...\r
   );\r
 \r
+/**\r
+  Converts a decimal value to a Null-terminated Unicode string.\r
+  \r
+  Converts the decimal number specified by Value to a Null-terminated Unicode \r
+  string specified by Buffer containing at most Width characters. No padding of spaces \r
+  is ever performed. If Width is 0 then a width of MAXIMUM_VALUE_CHARACTERS is assumed.\r
+  The number of Unicode characters in Buffer is returned not including the Null-terminator.\r
+  If the conversion contains more than Width characters, then only the first\r
+  Width characters are returned, and the total number of characters \r
+  required to perform the conversion is returned.\r
+  Additional conversion parameters are specified in Flags.  \r
+  \r
+  The Flags bit LEFT_JUSTIFY is always ignored.\r
+  All conversions are left justified in Buffer.\r
+  If Width is 0, PREFIX_ZERO is ignored in Flags.\r
+  If COMMA_TYPE is set in Flags, then PREFIX_ZERO is ignored in Flags, and commas\r
+  are inserted every 3rd digit starting from the right.\r
+  If HEX_RADIX is set in Flags, then the output buffer will be \r
+  formatted in hexadecimal format.\r
+  If Value is < 0 and HEX_RADIX is not set in Flags, then the fist character in Buffer is a '-'.\r
+  If PREFIX_ZERO is set in Flags and PREFIX_ZERO is not being ignored, \r
+  then Buffer is padded with '0' characters so the combination of the optional '-' \r
+  sign character, '0' characters, digit characters for Value, and the Null-terminator\r
+  add up to Width characters.\r
+  If both COMMA_TYPE and HEX_RADIX are set in Flags, then ASSERT().\r
+  If Buffer is NULL, then ASSERT().\r
+  If Buffer is not aligned on a 16-bit boundary, then ASSERT().\r
+  If unsupported bits are set in Flags, then ASSERT().\r
+  If both COMMA_TYPE and HEX_RADIX are set in Flags, then ASSERT().\r
+  If Width >= MAXIMUM_VALUE_CHARACTERS, then ASSERT()\r
+\r
+  @param  Buffer  Pointer to the output buffer for the produced Null-terminated\r
+                  Unicode string.\r
+  @param  Flags   The bitmask of flags that specify left justification, zero pad, and commas.\r
+  @param  Value   The 64-bit signed value to convert to a string.\r
+  @param  Width   The maximum number of Unicode characters to place in Buffer, not including\r
+                  the Null-terminator.\r
+  \r
+  @return The number of Unicode characters in Buffer not including the Null-terminator.\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+UnicodeValueToString (\r
+  IN OUT CHAR16  *Buffer,\r
+  IN UINTN       Flags,\r
+  IN INT64       Value,\r
+  IN UINTN       Width\r
+  );\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
@@ -227,7 +287,7 @@ UnicodeSPrintAsciiFormat (
   @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
@@ -268,8 +328,10 @@ AsciiVSPrint (
   @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
-  \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
@@ -285,7 +347,7 @@ AsciiSPrint (
 \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
@@ -298,6 +360,7 @@ AsciiSPrint (
 \r
   If BufferSize > 0 and StartOfBuffer is NULL, then ASSERT().\r
   If BufferSize > 0 and FormatString is NULL, then ASSERT().\r
+  If BufferSize > 0 and FormatString is not aligned on a 16-bit boundary, then ASSERT().\r
   If PcdMaximumUnicodeStringLength is not zero, and FormatString contains more than\r
   PcdMaximumUnicodeStringLength Unicode characters not including the Null-terminator, then\r
   ASSERT().\r
@@ -326,7 +389,7 @@ AsciiVSPrintUnicodeFormat (
 \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
@@ -339,6 +402,7 @@ AsciiVSPrintUnicodeFormat (
 \r
   If BufferSize > 0 and StartOfBuffer is NULL, then ASSERT().\r
   If BufferSize > 0 and FormatString is NULL, then ASSERT().\r
+  If BufferSize > 0 and FormatString is not aligned on a 16-bit boundary, then ASSERT().\r
   If PcdMaximumUnicodeStringLength is not zero, and FormatString contains more than\r
   PcdMaximumUnicodeStringLength Unicode characters not including the Null-terminator, then\r
   ASSERT().\r
@@ -350,6 +414,8 @@ AsciiVSPrintUnicodeFormat (
                           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
@@ -364,56 +430,12 @@ AsciiSPrintUnicodeFormat (
   ...\r
   );\r
 \r
-/**\r
-  Converts a decimal value to a Null-terminated Unicode string.\r
-  \r
-  Converts the decimal number specified by Value to a Null-terminated Unicode \r
-  string specified by Buffer containing at most Width characters.\r
-  If Width is 0 then a width of  MAXIMUM_VALUE_CHARACTERS is assumed.\r
-  The number of Unicode characters in Buffer is returned not including the Null-terminator.\r
-  If the conversion contains more than Width characters, then only the first\r
-  Width characters are returned, and the total number of characters \r
-  required to perform the conversion is returned.\r
-  Additional conversion parameters are specified in Flags.  \r
-  The Flags bit LEFT_JUSTIFY is always ignored.\r
-  All conversions are left justified in Buffer.\r
-  If Width is 0, PREFIX_ZERO is ignored in Flags.\r
-  If COMMA_TYPE is set in Flags, then PREFIX_ZERO is ignored in Flags, and commas\r
-  are inserted every 3rd digit starting from the right.\r
-  If Value is < 0, then the fist character in Buffer is a '-'.\r
-  If PREFIX_ZERO is set in Flags and PREFIX_ZERO is not being ignored, \r
-  then Buffer is padded with '0' characters so the combination of the optional '-' \r
-  sign character, '0' characters, digit characters for Value, and the Null-terminator\r
-  add up to Width characters.\r
-\r
-  If Buffer is NULL, then ASSERT().\r
-  If unsupported bits are set in Flags, then ASSERT().\r
-  If Width >= MAXIMUM_VALUE_CHARACTERS, then ASSERT()\r
-\r
-  @param  Buffer  Pointer to the output buffer for the produced Null-terminated\r
-                  Unicode string.\r
-  @param  Flags   The bitmask of flags that specify left justification, zero pad, and commas.\r
-  @param  Value   The 64-bit signed value to convert to a string.\r
-  @param  Width   The maximum number of Unicode characters to place in Buffer, not including\r
-                  the Null-terminator.\r
-  \r
-  @return The number of Unicode characters in Buffer not including the Null-terminator.\r
-\r
-**/\r
-UINTN\r
-EFIAPI\r
-UnicodeValueToString (\r
-  IN OUT CHAR16  *Buffer,\r
-  IN UINTN       Flags,\r
-  IN INT64       Value,\r
-  IN UINTN       Width\r
-  );\r
-\r
 /**\r
   Converts a decimal value to a Null-terminated ASCII string.\r
   \r
   Converts the decimal number specified by Value to a Null-terminated ASCII string \r
-  specified by Buffer containing at most Width characters.\r
+  specified by Buffer containing at most Width characters. No padding of spaces \r
+  is ever performed.\r
   If Width is 0 then a width of  MAXIMUM_VALUE_CHARACTERS is assumed.\r
   The number of ASCII characters in Buffer is returned not including the Null-terminator.\r
   If the conversion contains more than Width characters, then only the first Width\r
@@ -423,16 +445,19 @@ UnicodeValueToString (
   The Flags bit LEFT_JUSTIFY is always ignored.\r
   All conversions are left justified in Buffer.\r
   If Width is 0, PREFIX_ZERO is ignored in Flags.\r
-  If COMMA_TYPE is set in Flags, then PREFIX_ZERO is ignored in Flags, and commas \r
+  If COMMA_TYPE is set in Flags, then PREFIX_ZERO is ignored in Flags, and commas\r
   are inserted every 3rd digit starting from the right.\r
-  If Value is < 0, then the fist character in Buffer is a '-'.\r
-  If PREFIX_ZERO is set in Flags and PREFIX_ZERO is not being ignored, then Buffer\r
-  is padded with '0' characters so the combination of the optional '-'\r
-  sign character, '0' characters, digit characters for Value, and the \r
-  Null-terminator add up to Width characters.\r
-\r
+  If HEX_RADIX is set in Flags, then the output buffer will be \r
+  formatted in hexadecimal format.\r
+  If Value is < 0 and HEX_RADIX is not set in Flags, then the fist character in Buffer is a '-'.\r
+  If PREFIX_ZERO is set in Flags and PREFIX_ZERO is not being ignored, \r
+  then Buffer is padded with '0' characters so the combination of the optional '-' \r
+  sign character, '0' characters, digit characters for Value, and the Null-terminator\r
+  add up to Width characters.\r
+  \r
   If Buffer is NULL, then ASSERT().\r
   If unsupported bits are set in Flags, then ASSERT().\r
+  If both COMMA_TYPE and HEX_RADIX are set in Flags, then ASSERT().\r
   If Width >= MAXIMUM_VALUE_CHARACTERS, then ASSERT()\r
 \r
   @param  Buffer  Pointer to the output buffer for the produced Null-terminated\r
@@ -448,10 +473,10 @@ UnicodeValueToString (
 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
 #endif\r