Add 2 functions to UefiLib library class: CatSPrint and CatVSPrint.

Implement these functions in the UefiLib instance.

Add 2 functions to PrintLib library class: SPrintLengthAsciiFormat and SPrintLength.
Implement these functions in the BasePrintLib instance and the DxePrintLib2Protocol instance.

Signed-off-by: jcarsey
Reviewed-by: jljusten
Reviewed-by: geekboy15a

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12081 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
jcarsey
2011-08-02 23:33:06 +00:00
parent 274402de46
commit f405c0674a
7 changed files with 1240 additions and 46 deletions

View File

@@ -2,7 +2,7 @@
Mde UEFI library API implementation.
Print to StdErr or ConOut defined in EFI_SYSTEM_TABLE
Copyright (c) 2007 - 2009, Intel Corporation. All rights reserved.<BR>
Copyright (c) 2007 - 2011, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@@ -706,3 +706,97 @@ AsciiPrintXY (
return ReturnNum;
}
/**
Appends a formatted Unicode string to a Null-terminated Unicode string
This function appends a formatted Unicode string to the Null-terminated
Unicode string specified by String. String is optional and may be NULL.
Storage for the formatted Unicode string returned is allocated using
AllocatePool(). The pointer to the appended string is returned. The caller
is responsible for freeing the returned string.
If String is not NULL and not aligned on a 16-bit boundary, then ASSERT().
If FormatString is NULL, then ASSERT().
If FormatString is not aligned on a 16-bit boundary, then ASSERT().
@param[in] String A Null-terminated Unicode string.
@param[in] FormatString A Null-terminated Unicode format string.
@param[in] Marker VA_LIST marker for the variable argument list.
@retval NULL There was not enough available memory.
@return Null-terminated Unicode string is that is the formatted
string appended to String.
**/
CHAR16*
EFIAPI
CatVSPrint (
IN CHAR16 *String, OPTIONAL
IN CONST CHAR16 *FormatString,
IN VA_LIST Marker
)
{
UINTN CharactersRequired;
UINTN SizeRequired;
CHAR16 *BufferToReturn;
CharactersRequired = SPrintLength(FormatString, Marker);
if (String != NULL) {
SizeRequired = StrSize(String) + (CharactersRequired * sizeof(CHAR16));
} else {
SizeRequired = sizeof(CHAR16) + (CharactersRequired * sizeof(CHAR16));
}
BufferToReturn = AllocateZeroPool(SizeRequired);
if (BufferToReturn == NULL) {
return NULL;
}
if (String != NULL) {
StrCpy(BufferToReturn, String);
}
UnicodeVSPrint(BufferToReturn + StrLen(BufferToReturn), (CharactersRequired+1) * sizeof(CHAR16), FormatString, Marker);
ASSERT(StrSize(BufferToReturn)==SizeRequired);
return (BufferToReturn);
}
/**
Appends a formatted Unicode string to a Null-terminated Unicode string
This function appends a formatted Unicode string to the Null-terminated
Unicode string specified by String. String is optional and may be NULL.
Storage for the formatted Unicode string returned is allocated using
AllocatePool(). The pointer to the appended string is returned. The caller
is responsible for freeing the returned string.
If String is not NULL and not aligned on a 16-bit boundary, then ASSERT().
If FormatString is NULL, then ASSERT().
If FormatString is not aligned on a 16-bit boundary, then ASSERT().
@param[in] String A Null-terminated Unicode string.
@param[in] FormatString A Null-terminated Unicode format string.
@param[in] ... The variable argument list whose contents are
accessed based on the format string specified by
FormatString.
@retval NULL There was not enough available memory.
@return Null-terminated Unicode string is that is the formatted
string appended to String.
**/
CHAR16 *
EFIAPI
CatSPrint (
IN CHAR16 *String, OPTIONAL
IN CONST CHAR16 *FormatString,
...
)
{
VA_LIST Marker;
VA_START (Marker, FormatString);
return (CatVSPrint(String, FormatString, Marker));
}