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.
70 @param Flags Intial flags value.
71 Can only have FORMAT_UNICODE and OUTPUT_UNICODE set
72 @param Format Null-terminated format string.
73 @param Marker Vararg list consumed by processing Format.
75 @return Number of characters printed.
83 IN CONST CHAR8
*Format
,
87 CHAR8
*OriginalBuffer
;
88 CHAR8 ValueBuffer
[MAXIMUM_VALUE_CHARACTERS
];
89 UINTN BytesPerOutputCharacter
;
90 UINTN BytesPerFormatCharacter
;
92 UINTN FormatCharacter
;
96 CHAR8
*ArgumentString
;
102 INTN BytesPerArgumentCharacter
;
103 UINTN ArgumentCharacter
;
111 RETURN_STATUS Status
;
113 OriginalBuffer
= Buffer
;
115 if ((Flags
& OUTPUT_UNICODE
) != 0) {
116 BytesPerOutputCharacter
= 2;
118 BytesPerOutputCharacter
= 1;
120 if ((Flags
& FORMAT_UNICODE
) != 0) {
121 BytesPerFormatCharacter
= 2;
124 BytesPerFormatCharacter
= 1;
129 // Reserve space for the Null terminator.
130 // If BufferSize is 0, this will set BufferSize to the max unsigned value
135 // Get the first character from the format string
137 FormatCharacter
= (*Format
| (*(Format
+ 1) << 8)) & FormatMask
;
140 // Loop until the end of the format string is reached or the output buffer is full
142 while (FormatCharacter
!= 0 && BufferSize
> 0) {
144 // Clear all the flag bits except those that may have been passed in
146 Flags
&= (OUTPUT_UNICODE
| FORMAT_UNICODE
);
149 // Set the default width to zero, and the default precision to 1
159 switch (FormatCharacter
) {
162 // Parse Flags and Width
164 for (Done
= FALSE
; !Done
; ) {
165 Format
+= BytesPerFormatCharacter
;
166 FormatCharacter
= (*Format
| (*(Format
+ 1) << 8)) & FormatMask
;
167 switch (FormatCharacter
) {
172 Flags
|= LEFT_JUSTIFY
;
175 Flags
|= PREFIX_SIGN
;
178 Flags
|= PREFIX_BLANK
;
188 if ((Flags
& PRECISION
) == 0) {
189 Flags
|= PAD_TO_WIDTH
;
190 Width
= VA_ARG (Marker
, UINTN
);
192 Precision
= VA_ARG (Marker
, UINTN
);
196 if ((Flags
& PRECISION
) == 0) {
197 Flags
|= PREFIX_ZERO
;
208 for (Count
= 0; ((FormatCharacter
>= '0') && (FormatCharacter
<= '9')); ){
209 Count
= (Count
* 10) + FormatCharacter
- '0';
210 Format
+= BytesPerFormatCharacter
;
211 FormatCharacter
= (*Format
| (*(Format
+ 1) << 8)) & FormatMask
;
213 Format
-= BytesPerFormatCharacter
;
214 if ((Flags
& PRECISION
) == 0) {
215 Flags
|= PAD_TO_WIDTH
;
228 // Limit the maximum field width to the remaining characters in the output buffer
230 if (Width
> BufferSize
) {
235 // Handle each argument type
237 switch (FormatCharacter
) {
239 if (sizeof (VOID
*) > 4) {
243 Flags
|= PREFIX_ZERO
;
245 // break skiped on purpose
250 // break skiped on purpose
253 if ((Flags
& LONG_TYPE
) == 0) {
254 Value
= (VA_ARG (Marker
, int));
256 Value
= VA_ARG (Marker
, INT64
);
258 if ((Flags
& PREFIX_BLANK
) != 0) {
261 if ((Flags
& PREFIX_SIGN
) != 0) {
264 if ((Flags
& COMMA_TYPE
) != 0) {
267 if ((Flags
& RADIX_HEX
) == 0) {
270 Flags
&= (~PREFIX_ZERO
);
274 Flags
|= PREFIX_SIGN
;
281 if ((Flags
& LONG_TYPE
) == 0 && Value
< 0) {
282 Value
= (unsigned int)Value
;
286 // Convert Value to a reversed string
288 Count
= BasePrintLibValueToString (ValueBuffer
, Value
, Radix
);
289 if (Value
== 0 && Precision
== 0) {
292 ArgumentString
= (CHAR8
*)ValueBuffer
+ Count
;
293 Digits
= 3 - (Count
% 3);
294 if (Comma
&& Count
!= 0) {
295 Count
+= ((Count
- 1) / 3);
300 Flags
|= ARGUMENT_REVERSED
;
302 if ((Flags
& PREFIX_ZERO
) != 0) {
303 if ((Flags
& PAD_TO_WIDTH
) != 0) {
304 if ((Flags
& PRECISION
) == 0) {
313 Flags
|= ARGUMENT_UNICODE
;
315 // break skipped on purpose
318 ArgumentString
= (CHAR8
*)VA_ARG (Marker
, CHAR8
*);
319 if (ArgumentString
== NULL
) {
320 Flags
&= (~ARGUMENT_UNICODE
);
321 ArgumentString
= "<null string>";
326 Character
= VA_ARG (Marker
, UINTN
) & 0xffff;
327 ArgumentString
= (CHAR8
*)&Character
;
328 Flags
|= ARGUMENT_UNICODE
;
332 TmpGuid
= VA_ARG (Marker
, GUID
*);
333 if (TmpGuid
== NULL
) {
334 ArgumentString
= "<null guid>";
340 "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
353 ArgumentString
= ValueBuffer
;
358 TmpTime
= VA_ARG (Marker
, TIME
*);
359 if (TmpTime
== NULL
) {
360 ArgumentString
= "<null time>";
366 "%02d/%02d/%04d %02d:%02d",
373 ArgumentString
= ValueBuffer
;
378 Status
= VA_ARG (Marker
, RETURN_STATUS
);
379 ArgumentString
= ValueBuffer
;
380 for (Index
= 0; StatusString
[Index
].String
!= NULL
; Index
++) {
381 if (Status
== StatusString
[Index
].Status
) {
382 ArgumentString
= StatusString
[Index
].String
;
385 if (ArgumentString
== ValueBuffer
) {
386 BasePrintLibSPrint ((CHAR8
*) ValueBuffer
, 0, 0, "%08X", Status
);
393 // if the type is '%' or unknown, then print it to the screen
395 ArgumentString
= (CHAR8
*)&FormatCharacter
;
396 Flags
|= ARGUMENT_UNICODE
;
401 ArgumentString
= "\r\n";
404 ArgumentString
= (CHAR8
*)&FormatCharacter
;
405 Flags
|= ARGUMENT_UNICODE
;
410 // Retrieve the ArgumentString attriubutes
412 if ((Flags
& ARGUMENT_UNICODE
) != 0) {
413 ArgumentMask
= 0xffff;
414 BytesPerArgumentCharacter
= 2;
417 BytesPerArgumentCharacter
= 1;
419 if ((Flags
& ARGUMENT_REVERSED
) != 0) {
420 BytesPerArgumentCharacter
= -BytesPerArgumentCharacter
;
423 // Compute the number of characters in ArgumentString and store it in Count
424 // ArgumentString is either null-terminated, or it contains Precision characters
426 for (Count
= 0; Count
< Precision
|| ((Flags
& PRECISION
) == 0); Count
++) {
427 ArgumentCharacter
= ((ArgumentString
[Count
* BytesPerArgumentCharacter
] & 0xff) | ((ArgumentString
[Count
* BytesPerArgumentCharacter
+ 1]) << 8)) & ArgumentMask
;
428 if (ArgumentCharacter
== 0) {
435 // Limit the length of the string to append to the remaining characters in the output buffer
437 if (Count
> BufferSize
) {
440 if (Precision
< Count
) {
445 // Pad before the string
447 if ((Flags
& (PAD_TO_WIDTH
| LEFT_JUSTIFY
)) == (PAD_TO_WIDTH
)) {
448 Buffer
= BasePrintLibFillBuffer (Buffer
, Width
- Precision
, ' ', BytesPerOutputCharacter
);
453 Buffer
= BasePrintLibFillBuffer (Buffer
, 1, Prefix
, BytesPerOutputCharacter
);
455 Buffer
= BasePrintLibFillBuffer (Buffer
, Precision
- Count
, '0', BytesPerOutputCharacter
);
457 Buffer
= BasePrintLibFillBuffer (Buffer
, Precision
- Count
, ' ', BytesPerOutputCharacter
);
459 Buffer
= BasePrintLibFillBuffer (Buffer
, 1, Prefix
, BytesPerOutputCharacter
);
464 // Output the Prefix character if it is present
472 // Copy the string into the output buffer performing the required type conversions
474 while (Index
< Count
) {
475 ArgumentCharacter
= ((*ArgumentString
& 0xff) | (*(ArgumentString
+ 1) << 8)) & ArgumentMask
;
477 Buffer
= BasePrintLibFillBuffer (Buffer
, 1, ArgumentCharacter
, BytesPerOutputCharacter
);
478 ArgumentString
+= BytesPerArgumentCharacter
;
486 Buffer
= BasePrintLibFillBuffer (Buffer
, 1, ',', BytesPerOutputCharacter
);
493 // Pad after the string
495 if ((Flags
& (PAD_TO_WIDTH
| LEFT_JUSTIFY
)) == (PAD_TO_WIDTH
| LEFT_JUSTIFY
)) {
496 Buffer
= BasePrintLibFillBuffer (Buffer
, Width
- Precision
, ' ', BytesPerOutputCharacter
);
500 // Reduce the number of characters
505 // Get the next character from the format string
507 Format
+= BytesPerFormatCharacter
;
510 // Get the next character from the format string
512 FormatCharacter
= (*Format
| (*(Format
+ 1) << 8)) & FormatMask
;
516 // Null terminate the Unicode or ASCII string
518 Buffer
= BasePrintLibFillBuffer (Buffer
, 1, 0, BytesPerOutputCharacter
);
520 return ((Buffer
- OriginalBuffer
) / BytesPerOutputCharacter
);
524 Worker function that produces a Null-terminated string in an output buffer
525 based on a Null-terminated format string and variable argument list.
527 VSPrint function to process format and place the results in Buffer. Since a
528 VA_LIST is used this rountine allows the nesting of Vararg routines. Thus
529 this is the main print working routine
531 @param Buffer Character buffer to print the results of the parsing
533 @param BufferSize Maximum number of characters to put into buffer.
535 @param Flags Intial flags value.
536 Can only have FORMAT_UNICODE and OUTPUT_UNICODE set
537 @param FormatString Null-terminated format string.
539 @return Number of characters printed.
544 OUT CHAR8
*StartOfBuffer
,
547 IN CONST CHAR8
*FormatString
,
553 VA_START (Marker
, FormatString
);
554 return BasePrintLibVSPrint (StartOfBuffer
, BufferSize
, Flags
, FormatString
, Marker
);
558 Produces a Null-terminated Unicode string in an output buffer based on
559 a Null-terminated Unicode format string and a VA_LIST argument list
561 Produces a Null-terminated Unicode string in the output buffer specified by StartOfBuffer
563 The Unicode string is produced by parsing the format string specified by FormatString.
564 Arguments are pulled from the variable argument list specified by Marker based on the
565 contents of the format string.
566 The length of the produced output buffer is returned.
567 If BufferSize is 0, then no output buffer is produced and 0 is returned.
569 If BufferSize is not 0 and StartOfBuffer is NULL, then ASSERT().
570 If BufferSize is not 0 and FormatString is NULL, then ASSERT().
571 If PcdMaximumUnicodeStringLength is not zero, and FormatString contains more than
572 PcdMaximumUnicodeStringLength Unicode characters, then ASSERT().
573 If PcdMaximumUnicodeStringLength is not zero, and produced Null-terminated Unicode string
574 contains more than PcdMaximumUnicodeStringLength Unicode characters, then ASSERT().
576 @param StartOfBuffer APointer to the output buffer for the produced Null-terminated
578 @param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.
579 @param FormatString Null-terminated Unicode format string.
580 @param Marker VA_LIST marker for the variable argument list.
582 @return return Length of the produced output buffer.
588 OUT CHAR16
*StartOfBuffer
,
590 IN CONST CHAR16
*FormatString
,
594 return BasePrintLibVSPrint ((CHAR8
*)StartOfBuffer
, BufferSize
>> 1, FORMAT_UNICODE
| OUTPUT_UNICODE
, (CHAR8
*)FormatString
, Marker
);
598 Produces a Null-terminated Unicode string in an output buffer based on a Null-terminated
599 Unicode format string and variable argument list.
601 Produces a Null-terminated Unicode string in the output buffer specified by StartOfBuffer
603 The Unicode string is produced by parsing the format string specified by FormatString.
604 Arguments are pulled from the variable argument list based on the contents of the format string.
605 The length of the produced output buffer is returned.
606 If BufferSize is 0, then no output buffer is produced and 0 is returned.
608 If BufferSize is not 0 and StartOfBuffer is NULL, then ASSERT().
609 If BufferSize is not 0 and FormatString is NULL, then ASSERT().
610 If PcdMaximumUnicodeStringLength is not zero, and FormatString contains more than
611 PcdMaximumUnicodeStringLength Unicode characters, then ASSERT().
612 If PcdMaximumUnicodeStringLength is not zero, and produced Null-terminated Unicode string
613 contains more than PcdMaximumUnicodeStringLength Unicode characters, then ASSERT().
615 @param StartOfBuffer APointer to the output buffer for the produced Null-terminated
617 @param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.
618 @param FormatString Null-terminated Unicode format string.
620 @return Length of the produced output buffer.
626 OUT CHAR16
*StartOfBuffer
,
628 IN CONST CHAR16
*FormatString
,
634 VA_START (Marker
, FormatString
);
635 return UnicodeVSPrint (StartOfBuffer
, BufferSize
, FormatString
, Marker
);
639 Produces a Null-terminated Unicode string in an output buffer based on a Null-terminated
640 ASCII format string and a VA_LIST argument list
642 Produces a Null-terminated Unicode string in the output buffer specified by StartOfBuffer
644 The Unicode string is produced by parsing the format string specified by FormatString.
645 Arguments are pulled from the variable argument list specified by Marker based on the
646 contents of the format string.
647 The length of the produced output buffer is returned.
648 If BufferSize is 0, then no output buffer is produced and 0 is returned.
650 If BufferSize is not 0 and StartOfBuffer is NULL, then ASSERT().
651 If BufferSize is not 0 and FormatString is NULL, then ASSERT().
652 If PcdMaximumUnicodeStringLength is not zero, and FormatString contains more than
653 PcdMaximumUnicodeStringLength Unicode characters, then ASSERT().
654 If PcdMaximumUnicodeStringLength is not zero, and produced Null-terminated Unicode string
655 contains more than PcdMaximumUnicodeStringLength Unicode characters, then ASSERT().
657 @param StartOfBuffer APointer to the output buffer for the produced Null-terminated
659 @param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.
660 @param FormatString Null-terminated Unicode format string.
661 @param Marker VA_LIST marker for the variable argument list.
663 @return Length of the produced output buffer.
668 UnicodeVSPrintAsciiFormat (
669 OUT CHAR16
*StartOfBuffer
,
671 IN CONST CHAR8
*FormatString
,
675 return BasePrintLibVSPrint ((CHAR8
*)StartOfBuffer
, BufferSize
>> 1, OUTPUT_UNICODE
,FormatString
, Marker
);
679 Produces a Null-terminated Unicode string in an output buffer based on a Null-terminated
680 ASCII format string and variable argument list.
682 Produces a Null-terminated Unicode string in the output buffer specified by StartOfBuffer
684 The Unicode string is produced by parsing the format string specified by FormatString.
685 Arguments are pulled from the variable argument list based on the contents of the
687 The length of the produced output buffer is returned.
688 If BufferSize is 0, then no output buffer is produced and 0 is returned.
690 If BufferSize is not 0 and StartOfBuffer is NULL, then ASSERT().
691 If BufferSize is not 0 and FormatString is NULL, then ASSERT().
692 If PcdMaximumUnicodeStringLength is not zero, and FormatString contains more than
693 PcdMaximumUnicodeStringLength Unicode characters, then ASSERT().
694 If PcdMaximumUnicodeStringLength is not zero, and produced Null-terminated Unicode string
695 contains more than PcdMaximumUnicodeStringLength Unicode characters, then ASSERT().
697 @param StartOfBuffer APointer to the output buffer for the produced Null-terminated
699 @param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.
700 @param FormatString Null-terminated Unicode format string.
702 @return Length of the produced output buffer.
707 UnicodeSPrintAsciiFormat (
708 OUT CHAR16
*StartOfBuffer
,
710 IN CONST CHAR8
*FormatString
,
716 VA_START (Marker
, FormatString
);
717 return UnicodeVSPrintAsciiFormat (StartOfBuffer
, BufferSize
>> 1, FormatString
, Marker
);
721 Produces a Null-terminated ASCII string in an output buffer based on a Null-terminated
722 ASCII format string and a VA_LIST argument list.
724 Produces a Null-terminated ASCII string in the output buffer specified by StartOfBuffer
726 The ASCII string is produced by parsing the format string specified by FormatString.
727 Arguments are pulled from the variable argument list specified by Marker based on
728 the contents of the format string.
729 The length of the produced output buffer is returned.
730 If BufferSize is 0, then no output buffer is produced and 0 is returned.
732 If BufferSize is not 0 and StartOfBuffer is NULL, then ASSERT().
733 If BufferSize is not 0 and FormatString is NULL, then ASSERT().
734 If PcdMaximumUnicodeStringLength is not zero, and FormatString contains more than
735 PcdMaximumUnicodeStringLength ASCII characters, then ASSERT().
736 If PcdMaximumUnicodeStringLength is not zero, and produced Null-terminated Unicode string
737 contains more than PcdMaximumUnicodeStringLength ASCII characters, then ASSERT().
739 @param StartOfBuffer APointer to the output buffer for the produced Null-terminated
741 @param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.
742 @param FormatString Null-terminated Unicode format string.
743 @param Marker VA_LIST marker for the variable argument list.
745 @return Length of the produced output buffer.
751 OUT CHAR8
*StartOfBuffer
,
753 IN CONST CHAR8
*FormatString
,
757 return BasePrintLibVSPrint (StartOfBuffer
, BufferSize
, 0, FormatString
, Marker
);
761 Produces a Null-terminated ASCII string in an output buffer based on a Null-terminated
762 ASCII format string and variable argument list.
764 Produces a Null-terminated ASCII string in the output buffer specified by StartOfBuffer
766 The ASCII string is produced by parsing the format string specified by FormatString.
767 Arguments are pulled from the variable argument list based on the contents of the
769 The length of the produced output buffer is returned.
770 If BufferSize is 0, then no output buffer is produced and 0 is returned.
772 If BufferSize is not 0 and StartOfBuffer is NULL, then ASSERT().
773 If BufferSize is not 0 and FormatString is NULL, then ASSERT().
774 If PcdMaximumUnicodeStringLength is not zero, and FormatString contains more than
775 PcdMaximumUnicodeStringLength ASCII characters, then ASSERT().
776 If PcdMaximumUnicodeStringLength is not zero, and produced Null-terminated Unicode string
777 contains more than PcdMaximumUnicodeStringLength ASCII characters, then ASSERT().
779 @param StartOfBuffer APointer to the output buffer for the produced Null-terminated
781 @param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.
782 @param FormatString Null-terminated Unicode format string.
784 @return Length of the produced output buffer.
790 OUT CHAR8
*StartOfBuffer
,
792 IN CONST CHAR8
*FormatString
,
798 VA_START (Marker
, FormatString
);
799 return AsciiVSPrint (StartOfBuffer
, BufferSize
, FormatString
, Marker
);
803 Produces a Null-terminated ASCII string in an output buffer based on a Null-terminated
804 ASCII format string and a VA_LIST argument list.
806 Produces a Null-terminated ASCII string in the output buffer specified by StartOfBuffer
808 The ASCII string is produced by parsing the format string specified by FormatString.
809 Arguments are pulled from the variable argument list specified by Marker based on
810 the contents of the format string.
811 The length of the produced output buffer is returned.
812 If BufferSize is 0, then no output buffer is produced and 0 is returned.
814 If BufferSize is not 0 and StartOfBuffer is NULL, then ASSERT().
815 If BufferSize is not 0 and FormatString is NULL, then ASSERT().
816 If PcdMaximumUnicodeStringLength is not zero, and FormatString contains more than
817 PcdMaximumUnicodeStringLength ASCII characters, then ASSERT().
818 If PcdMaximumUnicodeStringLength is not zero, and produced Null-terminated Unicode string
819 contains more than PcdMaximumUnicodeStringLength ASCII characters, then ASSERT().
821 @param StartOfBuffer APointer to the output buffer for the produced Null-terminated
823 @param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.
824 @param FormatString Null-terminated Unicode format string.
825 @param Marker VA_LIST marker for the variable argument list.
827 @return Length of the produced output buffer.
832 AsciiVSPrintUnicodeFormat (
833 OUT CHAR8
*StartOfBuffer
,
835 IN CONST CHAR16
*FormatString
,
839 return BasePrintLibVSPrint (StartOfBuffer
, BufferSize
, FORMAT_UNICODE
, (CHAR8
*)FormatString
, Marker
);
843 Produces a Null-terminated ASCII string in an output buffer based on a Null-terminated
844 ASCII format string and variable argument list.
846 Produces a Null-terminated ASCII string in the output buffer specified by StartOfBuffer
848 The ASCII string is produced by parsing the format string specified by FormatString.
849 Arguments are pulled from the variable argument list based on the contents of the
851 The length of the produced output buffer is returned.
852 If BufferSize is 0, then no output buffer is produced and 0 is returned.
854 If BufferSize is not 0 and StartOfBuffer is NULL, then ASSERT().
855 If BufferSize is not 0 and FormatString is NULL, then ASSERT().
856 If PcdMaximumUnicodeStringLength is not zero, and FormatString contains more than
857 PcdMaximumUnicodeStringLength ASCII characters, then ASSERT().
858 If PcdMaximumUnicodeStringLength is not zero, and produced Null-terminated Unicode string
859 contains more than PcdMaximumUnicodeStringLength ASCII characters, then ASSERT().
861 @param StartOfBuffer APointer to the output buffer for the produced Null-terminated
863 @param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.
864 @param FormatString Null-terminated Unicode format string.
866 @return Length of the produced output buffer.
871 AsciiSPrintUnicodeFormat (
872 OUT CHAR8
*StartOfBuffer
,
874 IN CONST CHAR16
*FormatString
,
880 VA_START (Marker
, FormatString
);
881 return AsciiVSPrintUnicodeFormat (StartOfBuffer
, BufferSize
, FormatString
, Marker
);
885 Converts a decimal value to a Null-terminated Unicode string.
887 Converts the decimal number specified by Value to a Null-terminated Unicode
888 string specified by Buffer containing at most Width characters.
889 If Width is 0 then a width of MAXIMUM_VALUE_CHARACTERS is assumed.
890 The total number of characters placed in Buffer is returned.
891 If the conversion contains more than Width characters, then only the first
892 Width characters are returned, and the total number of characters
893 required to perform the conversion is returned.
894 Additional conversion parameters are specified in Flags.
895 The Flags bit LEFT_JUSTIFY is always ignored.
896 All conversions are left justified in Buffer.
897 If Width is 0, PREFIX_ZERO is ignored in Flags.
898 If COMMA_TYPE is set in Flags, then PREFIX_ZERO is ignored in Flags, and commas
899 are inserted every 3rd digit starting from the right.
900 If Value is < 0, then the fist character in Buffer is a '-'.
901 If PREFIX_ZERO is set in Flags and PREFIX_ZERO is not being ignored,
902 then Buffer is padded with '0' characters so the combination of the optional '-'
903 sign character, '0' characters, digit characters for Value, and the Null-terminator
904 add up to Width characters.
906 If Buffer is NULL, then ASSERT().
907 If unsupported bits are set in Flags, then ASSERT().
908 If Width >= MAXIMUM_VALUE_CHARACTERS, then ASSERT()
910 @param Buffer Pointer to the output buffer for the produced Null-terminated
912 @param Flags The bitmask of flags that specify left justification, zero pad, and commas.
913 @param Value The 64-bit signed value to convert to a string.
914 @param Width The maximum number of Unicode characters to place in Buffer.
916 @return Total number of characters required to perform the conversion.
921 UnicodeValueToString (
922 IN OUT CHAR16
*Buffer
,
928 return BasePrintLibConvertValueToString ((CHAR8
*)Buffer
, Flags
, Value
, Width
, 2);
932 Converts a decimal value to a Null-terminated ASCII string.
934 Converts the decimal number specified by Value to a Null-terminated ASCII string
935 specified by Buffer containing at most Width characters.
936 If Width is 0 then a width of MAXIMUM_VALUE_CHARACTERS is assumed.
937 The total number of characters placed in Buffer is returned.
938 If the conversion contains more than Width characters, then only the first Width
939 characters are returned, and the total number of characters required to perform
940 the conversion is returned.
941 Additional conversion parameters are specified in Flags.
942 The Flags bit LEFT_JUSTIFY is always ignored.
943 All conversions are left justified in Buffer.
944 If Width is 0, PREFIX_ZERO is ignored in Flags.
945 If COMMA_TYPE is set in Flags, then PREFIX_ZERO is ignored in Flags, and commas
946 are inserted every 3rd digit starting from the right.
947 If Value is < 0, then the fist character in Buffer is a '-'.
948 If PREFIX_ZERO is set in Flags and PREFIX_ZERO is not being ignored, then Buffer
949 is padded with '0' characters so the combination of the optional '-'
950 sign character, '0' characters, digit characters for Value, and the
951 Null-terminator add up to Width characters.
953 If Buffer is NULL, then ASSERT().
954 If unsupported bits are set in Flags, then ASSERT().
955 If Width >= MAXIMUM_VALUE_CHARACTERS, then ASSERT()
957 @param Buffer Pointer to the output buffer for the produced Null-terminated
959 @param Flags The bitmask of flags that specify left justification, zero pad, and commas.
960 @param Value The 64-bit signed value to convert to a string.
961 @param Width The maximum number of ASCII characters to place in Buffer.
963 @return Total number of characters required to perform the conversion.
969 IN OUT CHAR8
*Buffer
,
975 return BasePrintLibConvertValueToString ((CHAR8
*)Buffer
, Flags
, Value
, Width
, 1);