Provides services to print a formatted string to a buffer. All combinations of Unicode and ASCII strings are supported.
Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License that accompanies this distribution. The full text of the license may be found at http://opensource.org/licenses/bsd-license.php.
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
The Print Library functions provide a simple means to produce formatted output strings. Many of the output functions use a format string to describe how to format the output of variable arguments. The format string consists of normal text and argument descriptors. There are no restrictions for how the normal text and argument descriptors can be mixed. The following end of line(EOL) translations must be performed on the contents of the format string:
- '\r' is translated to '\r'
- '\r\n' is translated to '\r\n'
- '\n' is translated to '\r\n'
- '\n\r' is translated to '\r\n'
This does not follow the ANSI C standard for sprint(). The format of argument descriptors is described below. The ANSI C standard for sprint() has been followed for some of the format types, and has not been followed for others. The exceptions are noted below.
%[flags][width][.precision]type
[flags]:
- -
- The field is left justified. If not flag is not specified, then the field is right justified.
- space
- Prefix a space character to a number. Only valid for types X, x, and d.
- +
- Prefix a plus character to a number. Only valid for types X, x, and d. If both space and + are specified, then space is ignored.
- 0
- Pad with 0 characters to the left of a number. Only valid for types X, x, and d.
- ,
- Place a comma every 3rd digit of the number. Only valid for type d. If 0 is also specified, then 0 is ignored.
- L, l
- The number being printed is size UINT64. Only valid for types X, x, and d. If this flag is not specified, then the number being printed is size int.
- NOTE: All invalid flags are ignored.
[width]:
- *
- The width of the field is specified by a UINTN argument in the argument list.
- number
- The number specified as a decimal value represents the width of the field.
- NOTE: If [width] is not specified, then a field width of 0 is assumed.
[.precision]:
- *
- The precision of the field is specified by a UINTN argument in the argument list.
- number
- The number specified as a decimal value represents the precision of the field.
- NOTE: If [.precision] is not specified, then a precision of 0 is assumed.
type:
- %
- c
- The argument is a Unicode character. ASCII characters can be printed using this type too by making sure bits 8..15 of the argument are set to 0.
- x
- The argument is an unsigned hexadecimal number. The characters used are 0..9 and A..F. If the flag 'L' is not specified, then the argument is assumed to be size int. This does not follow ANSI C.
- X
- The argument is an unsigned hexadecimal number and the number is padded with zeros. This is equivalent to a format string of "0x". If the flag 'L' is not specified, then the argument is assumed to be size int. This does not follow ANSI C.
- d
- The argument is a signed decimal number. If the flag 'L' is not specified, then the argument is assumed to be size int.
- u
- The argument is a unsigned decimal number. If the flag 'L' is not specified, then the argument is assumed to be size int.
- p
- The argument is a pointer that is a (VOID *), and it is printed as an unsigned hexadecimal number The characters used are 0..9 and A..F.
- a
- The argument is a pointer to an ASCII string. This does not follow ANSI C.
- S, s
- The argument is a pointer to a Unicode string. This does not follow ANSI C.
- g
- The argument is a pointer to a GUID structure. The GUID is printed in the format XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX. This does not follow ANSI C.
- t
- The argument is a pointer to an EFI_TIME structure. The time and date are printed in the format "mm/dd/yyyy hh:mm" where mm is the month zero padded, dd is the day zero padded, yyyy is the year zero padded, hh is the hour zero padded, and mm is minutes zero padded. This does not follow ANSI C.
- r
- The argument is a RETURN_STATUS value. This value is converted to a string following the table below. This does not follow ANSI C.
- RETURN_SUCCESS
- RETURN_LOAD_ERROR
- RETURN_INVALID_PARAMETER
- RETURN_UNSUPPORTED
- RETURN_BAD_BUFFER_SIZE
- RETURN_BUFFER_TOO_SMALL
- RETURN_NOT_READY
- RETURN_DEVICE_ERROR
- RETURN_WRITE_PROTECTED
- RETURN_OUT_OF_RESOURCES
- RETURN_VOLUME_CORRUPTED
- RETURN_VOLUME_FULL
- RETURN_NO_MEDIA
- RETURN_MEDIA_CHANGED
- RETURN_NOT_FOUND
- RETURN_ACCESS_DENIED
- RETURN_NO_RESPONSE
- RETURN_NO_MAPPING
- RETURN_TIMEOUT
- RETURN_NOT_STARTED
- RETURN_ALREADY_STARTED
- RETURN_ABORTED
- RETURN_ICMP_ERROR
- RETURN_TFTP_ERROR
- RETURN_PROTOCOL_ERROR
- RETURN_WARN_UNKNOWN_GLYPH
- RETURN_WARN_DELETE_FAILURE
- RETURN_WARN_WRITE_FAILURE
- RETURN_WARN_BUFFER_TOO_SMALL
- "Warning Buffer Too Small"
Include/Library/PrintLib.h