Update FrameworkUefiLib library instance to implement the missing CatSPrint() and CatVSPrint() API.

Signed-off-by: lgao4
Reviewed-by: rsun3

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13070 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
lgao4 2012-02-29 04:57:44 +00:00
parent 77a750a550
commit b0855f925c

View File

@ -710,3 +710,104 @@ 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;
VA_LIST ExtraMarker;
VA_COPY (ExtraMarker, Marker);
CharactersRequired = SPrintLength(FormatString, ExtraMarker);
VA_END (ExtraMarker);
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;
CHAR16 *NewString;
VA_START (Marker, FormatString);
NewString = CatVSPrint(String, FormatString, Marker);
VA_END (Marker);
return NewString;
}