4 Copyright (c) 2006, Intel Corporation<BR>
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13 Module Name: PrintLib.c
17 #include "PrintLibInternal.h"
22 } STATUS_LOOKUP_TABLE_ENTRY
;
24 static CONST STATUS_LOOKUP_TABLE_ENTRY StatusString
[] = {
25 { RETURN_SUCCESS
, "Success" },
26 { RETURN_LOAD_ERROR
, "Load Error" },
27 { RETURN_INVALID_PARAMETER
, "Invalid Parameter" },
28 { RETURN_UNSUPPORTED
, "Unsupported" },
29 { RETURN_BAD_BUFFER_SIZE
, "Bad Buffer Size" },
30 { RETURN_BUFFER_TOO_SMALL
, "Buffer Too Small" },
31 { RETURN_NOT_READY
, "Not Ready" },
32 { RETURN_DEVICE_ERROR
, "Device Error" },
33 { RETURN_WRITE_PROTECTED
, "Write Protected" },
34 { RETURN_OUT_OF_RESOURCES
, "Out of Resources" },
35 { RETURN_VOLUME_CORRUPTED
, "Volume Corrupt" },
36 { RETURN_VOLUME_FULL
, "Volume Full" },
37 { RETURN_NO_MEDIA
, "No Media" },
38 { RETURN_MEDIA_CHANGED
, "Media changed" },
39 { RETURN_NOT_FOUND
, "Not Found" },
40 { RETURN_ACCESS_DENIED
, "Access Denied" },
41 { RETURN_NO_RESPONSE
, "No Response" },
42 { RETURN_NO_MAPPING
, "No mapping" },
43 { RETURN_TIMEOUT
, "Time out" },
44 { RETURN_NOT_STARTED
, "Not started" },
45 { RETURN_ALREADY_STARTED
, "Already started" },
46 { RETURN_ABORTED
, "Aborted" },
47 { RETURN_ICMP_ERROR
, "ICMP Error" },
48 { RETURN_TFTP_ERROR
, "TFTP Error" },
49 { RETURN_PROTOCOL_ERROR
, "Protocol Error" },
50 { RETURN_WARN_UNKNOWN_GLYPH
, "Warning Unknown Glyph" },
51 { RETURN_WARN_DELETE_FAILURE
, "Warning Delete Failure" },
52 { RETURN_WARN_WRITE_FAILURE
, "Warning Write Failure" },
53 { RETURN_WARN_BUFFER_TOO_SMALL
, "Warning Buffer Too Small" },
59 Worker function that produces a Null-terminated string in an output buffer
60 based on a Null-terminated format string and a VA_LIST argument list.
62 VSPrint function to process format and place the results in Buffer. Since a
63 VA_LIST is used this rountine allows the nesting of Vararg routines. Thus
64 this is the main print working routine
66 @param Buffer Character buffer to print the results of the parsing
68 @param BufferSize Maximum number of characters to put into buffer.
69 @param Flags Intial flags value.
70 Can only have FORMAT_UNICODE and OUTPUT_UNICODE set
71 @param Format Null-terminated format string.
72 @param Marker Vararg list consumed by processing Format.
74 @return Number of characters printed.
82 IN CONST CHAR8
*Format
,
86 CHAR8
*OriginalBuffer
;
87 CHAR8 ValueBuffer
[MAXIMUM_VALUE_CHARACTERS
];
88 UINTN BytesPerOutputCharacter
;
89 UINTN BytesPerFormatCharacter
;
91 UINTN FormatCharacter
;
95 CHAR8
*ArgumentString
;
101 INTN BytesPerArgumentCharacter
;
102 UINTN ArgumentCharacter
;
110 RETURN_STATUS Status
;
112 if (BufferSize
== 0) {
115 ASSERT (Buffer
!= NULL
);
116 ASSERT (Format
!= NULL
);
118 OriginalBuffer
= Buffer
;
120 if ((Flags
& OUTPUT_UNICODE
) != 0) {
121 BytesPerOutputCharacter
= 2;
123 BytesPerOutputCharacter
= 1;
125 if ((Flags
& FORMAT_UNICODE
) != 0) {
126 BytesPerFormatCharacter
= 2;
129 BytesPerFormatCharacter
= 1;
134 // Reserve space for the Null terminator.
139 // Get the first character from the format string
141 FormatCharacter
= (*Format
| (*(Format
+ 1) << 8)) & FormatMask
;
144 // Loop until the end of the format string is reached or the output buffer is full
146 while (FormatCharacter
!= 0 && BufferSize
> 0) {
148 // Clear all the flag bits except those that may have been passed in
150 Flags
&= (OUTPUT_UNICODE
| FORMAT_UNICODE
);
153 // Set the default width to zero, and the default precision to 1
163 switch (FormatCharacter
) {
166 // Parse Flags and Width
168 for (Done
= FALSE
; !Done
; ) {
169 Format
+= BytesPerFormatCharacter
;
170 FormatCharacter
= (*Format
| (*(Format
+ 1) << 8)) & FormatMask
;
171 switch (FormatCharacter
) {
176 Flags
|= LEFT_JUSTIFY
;
179 Flags
|= PREFIX_SIGN
;
182 Flags
|= PREFIX_BLANK
;
192 if ((Flags
& PRECISION
) == 0) {
193 Flags
|= PAD_TO_WIDTH
;
194 Width
= VA_ARG (Marker
, UINTN
);
196 Precision
= VA_ARG (Marker
, UINTN
);
200 if ((Flags
& PRECISION
) == 0) {
201 Flags
|= PREFIX_ZERO
;
212 for (Count
= 0; ((FormatCharacter
>= '0') && (FormatCharacter
<= '9')); ){
213 Count
= (Count
* 10) + FormatCharacter
- '0';
214 Format
+= BytesPerFormatCharacter
;
215 FormatCharacter
= (*Format
| (*(Format
+ 1) << 8)) & FormatMask
;
217 Format
-= BytesPerFormatCharacter
;
218 if ((Flags
& PRECISION
) == 0) {
219 Flags
|= PAD_TO_WIDTH
;
232 // Limit the maximum field width to the remaining characters in the output buffer
234 if (Width
> BufferSize
) {
239 // Handle each argument type
241 switch (FormatCharacter
) {
243 if (sizeof (VOID
*) > 4) {
247 Flags
|= PREFIX_ZERO
;
249 // break skiped on purpose
254 // break skiped on purpose
257 if ((Flags
& LONG_TYPE
) == 0) {
258 Value
= (VA_ARG (Marker
, int));
260 Value
= VA_ARG (Marker
, INT64
);
262 if ((Flags
& PREFIX_BLANK
) != 0) {
265 if ((Flags
& PREFIX_SIGN
) != 0) {
268 if ((Flags
& COMMA_TYPE
) != 0) {
271 if ((Flags
& RADIX_HEX
) == 0) {
274 Flags
&= (~PREFIX_ZERO
);
278 Flags
|= PREFIX_SIGN
;
285 if ((Flags
& LONG_TYPE
) == 0 && Value
< 0) {
286 Value
= (unsigned int)Value
;
290 // Convert Value to a reversed string
292 Count
= BasePrintLibValueToString (ValueBuffer
, Value
, Radix
);
293 if (Value
== 0 && Precision
== 0) {
296 ArgumentString
= (CHAR8
*)ValueBuffer
+ Count
;
297 Digits
= 3 - (Count
% 3);
298 if (Comma
&& Count
!= 0) {
299 Count
+= ((Count
- 1) / 3);
304 Flags
|= ARGUMENT_REVERSED
;
306 if ((Flags
& PREFIX_ZERO
) != 0) {
307 if ((Flags
& PAD_TO_WIDTH
) != 0) {
308 if ((Flags
& PRECISION
) == 0) {
317 Flags
|= ARGUMENT_UNICODE
;
319 // break skipped on purpose
322 ArgumentString
= (CHAR8
*)VA_ARG (Marker
, CHAR8
*);
323 if (ArgumentString
== NULL
) {
324 Flags
&= (~ARGUMENT_UNICODE
);
325 ArgumentString
= "<null string>";
330 Character
= VA_ARG (Marker
, UINTN
) & 0xffff;
331 ArgumentString
= (CHAR8
*)&Character
;
332 Flags
|= ARGUMENT_UNICODE
;
336 TmpGuid
= VA_ARG (Marker
, GUID
*);
337 if (TmpGuid
== NULL
) {
338 ArgumentString
= "<null guid>";
342 MAXIMUM_VALUE_CHARACTERS
,
344 "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
357 ArgumentString
= ValueBuffer
;
362 TmpTime
= VA_ARG (Marker
, TIME
*);
363 if (TmpTime
== NULL
) {
364 ArgumentString
= "<null time>";
368 MAXIMUM_VALUE_CHARACTERS
,
370 "%02d/%02d/%04d %02d:%02d",
377 ArgumentString
= ValueBuffer
;
382 Status
= VA_ARG (Marker
, RETURN_STATUS
);
383 ArgumentString
= ValueBuffer
;
384 for (Index
= 0; StatusString
[Index
].String
!= NULL
; Index
++) {
385 if (Status
== StatusString
[Index
].Status
) {
386 ArgumentString
= StatusString
[Index
].String
;
389 if (ArgumentString
== ValueBuffer
) {
390 BasePrintLibSPrint ((CHAR8
*) ValueBuffer
, MAXIMUM_VALUE_CHARACTERS
, 0, "%08X", Status
);
395 ArgumentString
= "\r\n";
401 // if the type is '%' or unknown, then print it to the screen
403 ArgumentString
= (CHAR8
*)&FormatCharacter
;
404 Flags
|= ARGUMENT_UNICODE
;
409 ArgumentString
= (CHAR8
*)&FormatCharacter
;
410 Flags
|= ARGUMENT_UNICODE
;
415 // Retrieve the ArgumentString attriubutes
417 if ((Flags
& ARGUMENT_UNICODE
) != 0) {
418 ArgumentMask
= 0xffff;
419 BytesPerArgumentCharacter
= 2;
422 BytesPerArgumentCharacter
= 1;
424 if ((Flags
& ARGUMENT_REVERSED
) != 0) {
425 BytesPerArgumentCharacter
= -BytesPerArgumentCharacter
;
428 // Compute the number of characters in ArgumentString and store it in Count
429 // ArgumentString is either null-terminated, or it contains Precision characters
431 for (Count
= 0; Count
< Precision
|| ((Flags
& PRECISION
) == 0); Count
++) {
432 ArgumentCharacter
= ((ArgumentString
[Count
* BytesPerArgumentCharacter
] & 0xff) | ((ArgumentString
[Count
* BytesPerArgumentCharacter
+ 1]) << 8)) & ArgumentMask
;
433 if (ArgumentCharacter
== 0) {
440 // Limit the length of the string to append to the remaining characters in the output buffer
442 if (Count
> BufferSize
) {
445 if (Precision
< Count
) {
450 // Pad before the string
452 if ((Flags
& (PAD_TO_WIDTH
| LEFT_JUSTIFY
)) == (PAD_TO_WIDTH
)) {
453 Buffer
= BasePrintLibFillBuffer (Buffer
, Width
- Precision
, ' ', BytesPerOutputCharacter
);
458 Buffer
= BasePrintLibFillBuffer (Buffer
, 1, Prefix
, BytesPerOutputCharacter
);
460 Buffer
= BasePrintLibFillBuffer (Buffer
, Precision
- Count
, '0', BytesPerOutputCharacter
);
462 Buffer
= BasePrintLibFillBuffer (Buffer
, Precision
- Count
, ' ', BytesPerOutputCharacter
);
464 Buffer
= BasePrintLibFillBuffer (Buffer
, 1, Prefix
, BytesPerOutputCharacter
);
469 // Output the Prefix character if it is present
477 // Copy the string into the output buffer performing the required type conversions
479 while (Index
< Count
) {
480 ArgumentCharacter
= ((*ArgumentString
& 0xff) | (*(ArgumentString
+ 1) << 8)) & ArgumentMask
;
482 Buffer
= BasePrintLibFillBuffer (Buffer
, 1, ArgumentCharacter
, BytesPerOutputCharacter
);
483 ArgumentString
+= BytesPerArgumentCharacter
;
491 Buffer
= BasePrintLibFillBuffer (Buffer
, 1, ',', BytesPerOutputCharacter
);
498 // Pad after the string
500 if ((Flags
& (PAD_TO_WIDTH
| LEFT_JUSTIFY
)) == (PAD_TO_WIDTH
| LEFT_JUSTIFY
)) {
501 Buffer
= BasePrintLibFillBuffer (Buffer
, Width
- Precision
, ' ', BytesPerOutputCharacter
);
505 // Reduce the number of characters
510 // Get the next character from the format string
512 Format
+= BytesPerFormatCharacter
;
515 // Get the next character from the format string
517 FormatCharacter
= (*Format
| (*(Format
+ 1) << 8)) & FormatMask
;
521 // Null terminate the Unicode or ASCII string
523 Buffer
= BasePrintLibFillBuffer (Buffer
, 1, 0, BytesPerOutputCharacter
);
525 return ((Buffer
- OriginalBuffer
) / BytesPerOutputCharacter
);
529 Worker function that produces a Null-terminated string in an output buffer
530 based on a Null-terminated format string and variable argument list.
532 VSPrint function to process format and place the results in Buffer. Since a
533 VA_LIST is used this rountine allows the nesting of Vararg routines. Thus
534 this is the main print working routine
536 @param Buffer Character buffer to print the results of the parsing
538 @param BufferSize Maximum number of characters to put into buffer.
540 @param Flags Intial flags value.
541 Can only have FORMAT_UNICODE and OUTPUT_UNICODE set
542 @param FormatString Null-terminated format string.
544 @return Number of characters printed.
549 OUT CHAR8
*StartOfBuffer
,
552 IN CONST CHAR8
*FormatString
,
558 VA_START (Marker
, FormatString
);
559 return BasePrintLibVSPrint (StartOfBuffer
, BufferSize
, Flags
, FormatString
, Marker
);
563 Produces a Null-terminated Unicode string in an output buffer based on
564 a Null-terminated Unicode format string and a VA_LIST argument list
566 Produces a Null-terminated Unicode string in the output buffer specified by StartOfBuffer
568 The Unicode string is produced by parsing the format string specified by FormatString.
569 Arguments are pulled from the variable argument list specified by Marker based on the
570 contents of the format string.
571 The length of the produced output buffer is returned.
572 If BufferSize is 0, then no output buffer is produced and 0 is returned.
574 If BufferSize is not 0 and StartOfBuffer is NULL, then ASSERT().
575 If BufferSize is not 0 and FormatString is NULL, then ASSERT().
576 If PcdMaximumUnicodeStringLength is not zero, and FormatString contains more than
577 PcdMaximumUnicodeStringLength Unicode characters, then ASSERT().
578 If PcdMaximumUnicodeStringLength is not zero, and produced Null-terminated Unicode string
579 contains more than PcdMaximumUnicodeStringLength Unicode characters, then ASSERT().
581 @param StartOfBuffer APointer to the output buffer for the produced Null-terminated
583 @param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.
584 @param FormatString Null-terminated Unicode format string.
585 @param Marker VA_LIST marker for the variable argument list.
587 @return return Length of the produced output buffer.
593 OUT CHAR16
*StartOfBuffer
,
595 IN CONST CHAR16
*FormatString
,
599 return BasePrintLibVSPrint ((CHAR8
*)StartOfBuffer
, BufferSize
>> 1, FORMAT_UNICODE
| OUTPUT_UNICODE
, (CHAR8
*)FormatString
, Marker
);
603 Produces a Null-terminated Unicode string in an output buffer based on a Null-terminated
604 Unicode format string and variable argument list.
606 Produces a Null-terminated Unicode string in the output buffer specified by StartOfBuffer
608 The Unicode string is produced by parsing the format string specified by FormatString.
609 Arguments are pulled from the variable argument list based on the contents of the format string.
610 The length of the produced output buffer is returned.
611 If BufferSize is 0, then no output buffer is produced and 0 is returned.
613 If BufferSize is not 0 and StartOfBuffer is NULL, then ASSERT().
614 If BufferSize is not 0 and FormatString is NULL, then ASSERT().
615 If PcdMaximumUnicodeStringLength is not zero, and FormatString contains more than
616 PcdMaximumUnicodeStringLength Unicode characters, then ASSERT().
617 If PcdMaximumUnicodeStringLength is not zero, and produced Null-terminated Unicode string
618 contains more than PcdMaximumUnicodeStringLength Unicode characters, then ASSERT().
620 @param StartOfBuffer APointer to the output buffer for the produced Null-terminated
622 @param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.
623 @param FormatString Null-terminated Unicode format string.
625 @return Length of the produced output buffer.
631 OUT CHAR16
*StartOfBuffer
,
633 IN CONST CHAR16
*FormatString
,
639 VA_START (Marker
, FormatString
);
640 return UnicodeVSPrint (StartOfBuffer
, BufferSize
, FormatString
, Marker
);
644 Produces a Null-terminated Unicode string in an output buffer based on a Null-terminated
645 ASCII format string and a VA_LIST argument list
647 Produces a Null-terminated Unicode string in the output buffer specified by StartOfBuffer
649 The Unicode string is produced by parsing the format string specified by FormatString.
650 Arguments are pulled from the variable argument list specified by Marker based on the
651 contents of the format string.
652 The length of the produced output buffer is returned.
653 If BufferSize is 0, then no output buffer is produced and 0 is returned.
655 If BufferSize is not 0 and StartOfBuffer is NULL, then ASSERT().
656 If BufferSize is not 0 and FormatString is NULL, then ASSERT().
657 If PcdMaximumUnicodeStringLength is not zero, and FormatString contains more than
658 PcdMaximumUnicodeStringLength Unicode characters, then ASSERT().
659 If PcdMaximumUnicodeStringLength is not zero, and produced Null-terminated Unicode string
660 contains more than PcdMaximumUnicodeStringLength Unicode characters, then ASSERT().
662 @param StartOfBuffer APointer to the output buffer for the produced Null-terminated
664 @param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.
665 @param FormatString Null-terminated Unicode format string.
666 @param Marker VA_LIST marker for the variable argument list.
668 @return Length of the produced output buffer.
673 UnicodeVSPrintAsciiFormat (
674 OUT CHAR16
*StartOfBuffer
,
676 IN CONST CHAR8
*FormatString
,
680 return BasePrintLibVSPrint ((CHAR8
*)StartOfBuffer
, BufferSize
>> 1, OUTPUT_UNICODE
,FormatString
, Marker
);
684 Produces a Null-terminated Unicode string in an output buffer based on a Null-terminated
685 ASCII format string and variable argument list.
687 Produces a Null-terminated Unicode string in the output buffer specified by StartOfBuffer
689 The Unicode string is produced by parsing the format string specified by FormatString.
690 Arguments are pulled from the variable argument list based on the contents of the
692 The length of the produced output buffer is returned.
693 If BufferSize is 0, then no output buffer is produced and 0 is returned.
695 If BufferSize is not 0 and StartOfBuffer is NULL, then ASSERT().
696 If BufferSize is not 0 and FormatString is NULL, then ASSERT().
697 If PcdMaximumUnicodeStringLength is not zero, and FormatString contains more than
698 PcdMaximumUnicodeStringLength Unicode characters, then ASSERT().
699 If PcdMaximumUnicodeStringLength is not zero, and produced Null-terminated Unicode string
700 contains more than PcdMaximumUnicodeStringLength Unicode characters, then ASSERT().
702 @param StartOfBuffer APointer to the output buffer for the produced Null-terminated
704 @param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.
705 @param FormatString Null-terminated Unicode format string.
707 @return Length of the produced output buffer.
712 UnicodeSPrintAsciiFormat (
713 OUT CHAR16
*StartOfBuffer
,
715 IN CONST CHAR8
*FormatString
,
721 VA_START (Marker
, FormatString
);
722 return UnicodeVSPrintAsciiFormat (StartOfBuffer
, BufferSize
, FormatString
, Marker
);
726 Produces a Null-terminated ASCII string in an output buffer based on a Null-terminated
727 ASCII format string and a VA_LIST argument list.
729 Produces a Null-terminated ASCII string in the output buffer specified by StartOfBuffer
731 The ASCII string is produced by parsing the format string specified by FormatString.
732 Arguments are pulled from the variable argument list specified by Marker based on
733 the contents of the format string.
734 The length of the produced output buffer is returned.
735 If BufferSize is 0, then no output buffer is produced and 0 is returned.
737 If BufferSize is not 0 and StartOfBuffer is NULL, then ASSERT().
738 If BufferSize is not 0 and FormatString is NULL, then ASSERT().
739 If PcdMaximumUnicodeStringLength is not zero, and FormatString contains more than
740 PcdMaximumUnicodeStringLength ASCII characters, then ASSERT().
741 If PcdMaximumUnicodeStringLength is not zero, and produced Null-terminated Unicode string
742 contains more than PcdMaximumUnicodeStringLength ASCII characters, then ASSERT().
744 @param StartOfBuffer APointer to the output buffer for the produced Null-terminated
746 @param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.
747 @param FormatString Null-terminated Unicode format string.
748 @param Marker VA_LIST marker for the variable argument list.
750 @return Length of the produced output buffer.
756 OUT CHAR8
*StartOfBuffer
,
758 IN CONST CHAR8
*FormatString
,
762 return BasePrintLibVSPrint (StartOfBuffer
, BufferSize
, 0, FormatString
, Marker
);
766 Produces a Null-terminated ASCII string in an output buffer based on a Null-terminated
767 ASCII format string and variable argument list.
769 Produces a Null-terminated ASCII string in the output buffer specified by StartOfBuffer
771 The ASCII string is produced by parsing the format string specified by FormatString.
772 Arguments are pulled from the variable argument list based on the contents of the
774 The length of the produced output buffer is returned.
775 If BufferSize is 0, then no output buffer is produced and 0 is returned.
777 If BufferSize is not 0 and StartOfBuffer is NULL, then ASSERT().
778 If BufferSize is not 0 and FormatString is NULL, then ASSERT().
779 If PcdMaximumUnicodeStringLength is not zero, and FormatString contains more than
780 PcdMaximumUnicodeStringLength ASCII characters, then ASSERT().
781 If PcdMaximumUnicodeStringLength is not zero, and produced Null-terminated Unicode string
782 contains more than PcdMaximumUnicodeStringLength ASCII characters, then ASSERT().
784 @param StartOfBuffer APointer to the output buffer for the produced Null-terminated
786 @param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.
787 @param FormatString Null-terminated Unicode format string.
789 @return Length of the produced output buffer.
795 OUT CHAR8
*StartOfBuffer
,
797 IN CONST CHAR8
*FormatString
,
803 VA_START (Marker
, FormatString
);
804 return AsciiVSPrint (StartOfBuffer
, BufferSize
, FormatString
, Marker
);
808 Produces a Null-terminated ASCII string in an output buffer based on a Null-terminated
809 ASCII format string and a VA_LIST argument list.
811 Produces a Null-terminated ASCII string in the output buffer specified by StartOfBuffer
813 The ASCII string is produced by parsing the format string specified by FormatString.
814 Arguments are pulled from the variable argument list specified by Marker based on
815 the contents of the format string.
816 The length of the produced output buffer is returned.
817 If BufferSize is 0, then no output buffer is produced and 0 is returned.
819 If BufferSize is not 0 and StartOfBuffer is NULL, then ASSERT().
820 If BufferSize is not 0 and FormatString is NULL, then ASSERT().
821 If PcdMaximumUnicodeStringLength is not zero, and FormatString contains more than
822 PcdMaximumUnicodeStringLength ASCII characters, then ASSERT().
823 If PcdMaximumUnicodeStringLength is not zero, and produced Null-terminated Unicode string
824 contains more than PcdMaximumUnicodeStringLength ASCII characters, then ASSERT().
826 @param StartOfBuffer APointer to the output buffer for the produced Null-terminated
828 @param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.
829 @param FormatString Null-terminated Unicode format string.
830 @param Marker VA_LIST marker for the variable argument list.
832 @return Length of the produced output buffer.
837 AsciiVSPrintUnicodeFormat (
838 OUT CHAR8
*StartOfBuffer
,
840 IN CONST CHAR16
*FormatString
,
844 return BasePrintLibVSPrint (StartOfBuffer
, BufferSize
, FORMAT_UNICODE
, (CHAR8
*)FormatString
, Marker
);
848 Produces a Null-terminated ASCII string in an output buffer based on a Null-terminated
849 ASCII format string and variable argument list.
851 Produces a Null-terminated ASCII string in the output buffer specified by StartOfBuffer
853 The ASCII string is produced by parsing the format string specified by FormatString.
854 Arguments are pulled from the variable argument list based on the contents of the
856 The length of the produced output buffer is returned.
857 If BufferSize is 0, then no output buffer is produced and 0 is returned.
859 If BufferSize is not 0 and StartOfBuffer is NULL, then ASSERT().
860 If BufferSize is not 0 and FormatString is NULL, then ASSERT().
861 If PcdMaximumUnicodeStringLength is not zero, and FormatString contains more than
862 PcdMaximumUnicodeStringLength ASCII characters, then ASSERT().
863 If PcdMaximumUnicodeStringLength is not zero, and produced Null-terminated Unicode string
864 contains more than PcdMaximumUnicodeStringLength ASCII characters, then ASSERT().
866 @param StartOfBuffer APointer to the output buffer for the produced Null-terminated
868 @param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.
869 @param FormatString Null-terminated Unicode format string.
871 @return Length of the produced output buffer.
876 AsciiSPrintUnicodeFormat (
877 OUT CHAR8
*StartOfBuffer
,
879 IN CONST CHAR16
*FormatString
,
885 VA_START (Marker
, FormatString
);
886 return AsciiVSPrintUnicodeFormat (StartOfBuffer
, BufferSize
, FormatString
, Marker
);
890 Converts a decimal value to a Null-terminated Unicode string.
892 Converts the decimal number specified by Value to a Null-terminated Unicode
893 string specified by Buffer containing at most Width characters.
894 If Width is 0 then a width of MAXIMUM_VALUE_CHARACTERS is assumed.
895 The total number of characters placed in Buffer is returned.
896 If the conversion contains more than Width characters, then only the first
897 Width characters are returned, and the total number of characters
898 required to perform the conversion is returned.
899 Additional conversion parameters are specified in Flags.
900 The Flags bit LEFT_JUSTIFY is always ignored.
901 All conversions are left justified in Buffer.
902 If Width is 0, PREFIX_ZERO is ignored in Flags.
903 If COMMA_TYPE is set in Flags, then PREFIX_ZERO is ignored in Flags, and commas
904 are inserted every 3rd digit starting from the right.
905 If Value is < 0, then the fist character in Buffer is a '-'.
906 If PREFIX_ZERO is set in Flags and PREFIX_ZERO is not being ignored,
907 then Buffer is padded with '0' characters so the combination of the optional '-'
908 sign character, '0' characters, digit characters for Value, and the Null-terminator
909 add up to Width characters.
911 If Buffer is NULL, then ASSERT().
912 If unsupported bits are set in Flags, then ASSERT().
913 If Width >= MAXIMUM_VALUE_CHARACTERS, then ASSERT()
915 @param Buffer Pointer to the output buffer for the produced Null-terminated
917 @param Flags The bitmask of flags that specify left justification, zero pad, and commas.
918 @param Value The 64-bit signed value to convert to a string.
919 @param Width The maximum number of Unicode characters to place in Buffer.
921 @return Total number of characters required to perform the conversion.
926 UnicodeValueToString (
927 IN OUT CHAR16
*Buffer
,
933 return BasePrintLibConvertValueToString ((CHAR8
*)Buffer
, Flags
, Value
, Width
, 2);
937 Converts a decimal value to a Null-terminated ASCII string.
939 Converts the decimal number specified by Value to a Null-terminated ASCII string
940 specified by Buffer containing at most Width characters.
941 If Width is 0 then a width of MAXIMUM_VALUE_CHARACTERS is assumed.
942 The total number of characters placed in Buffer is returned.
943 If the conversion contains more than Width characters, then only the first Width
944 characters are returned, and the total number of characters required to perform
945 the conversion is returned.
946 Additional conversion parameters are specified in Flags.
947 The Flags bit LEFT_JUSTIFY is always ignored.
948 All conversions are left justified in Buffer.
949 If Width is 0, PREFIX_ZERO is ignored in Flags.
950 If COMMA_TYPE is set in Flags, then PREFIX_ZERO is ignored in Flags, and commas
951 are inserted every 3rd digit starting from the right.
952 If Value is < 0, then the fist character in Buffer is a '-'.
953 If PREFIX_ZERO is set in Flags and PREFIX_ZERO is not being ignored, then Buffer
954 is padded with '0' characters so the combination of the optional '-'
955 sign character, '0' characters, digit characters for Value, and the
956 Null-terminator add up to Width characters.
958 If Buffer is NULL, then ASSERT().
959 If unsupported bits are set in Flags, then ASSERT().
960 If Width >= MAXIMUM_VALUE_CHARACTERS, then ASSERT()
962 @param Buffer Pointer to the output buffer for the produced Null-terminated
964 @param Flags The bitmask of flags that specify left justification, zero pad, and commas.
965 @param Value The 64-bit signed value to convert to a string.
966 @param Width The maximum number of ASCII characters to place in Buffer.
968 @return Total number of characters required to perform the conversion.
974 IN OUT CHAR8
*Buffer
,
980 return BasePrintLibConvertValueToString ((CHAR8
*)Buffer
, Flags
, Value
, Width
, 1);