/** @file\r
Unicode and ASCII string primatives.\r
\r
- Copyright (c) 2006 - 2009, Intel Corporation<BR>\r
- All rights reserved. This program and the accompanying materials\r
+ Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>\r
+ This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
- http://opensource.org/licenses/bsd-license.php\r
+ http://opensource.org/licenses/bsd-license.php.\r
\r
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
\r
#include "BaseLibInternals.h"\r
\r
-#define QUOTIENT_MAX_UINTN_DIVIDED_BY_10 ((UINTN) -1 / 10)\r
-#define REMAINDER_MAX_UINTN_DIVIDED_BY_10 ((UINTN) -1 % 10)\r
-\r
-#define QUOTIENT_MAX_UINTN_DIVIDED_BY_16 ((UINTN) -1 / 16)\r
-#define REMAINDER_MAX_UINTN_DIVIDED_BY_16 ((UINTN) -1 % 16)\r
-\r
-#define QUOTIENT_MAX_UINT64_DIVIDED_BY_10 ((UINT64) -1 / 10)\r
-#define REMAINDER_MAX_UINT64_DIVIDED_BY_10 ((UINT64) -1 % 10)\r
-\r
-#define QUOTIENT_MAX_UINT64_DIVIDED_BY_16 ((UINT64) -1 / 16)\r
-#define REMAINDER_MAX_UINT64_DIVIDED_BY_16 ((UINT64) -1 % 16)\r
+#ifndef DISABLE_NEW_DEPRECATED_INTERFACES\r
\r
/**\r
+ [ATTENTION] This function will be deprecated for security reason.\r
+\r
Copies one Null-terminated Unicode string to another Null-terminated Unicode\r
string and returns the new Unicode string.\r
\r
PcdMaximumUnicodeStringLength Unicode characters, not including the\r
Null-terminator, then ASSERT().\r
\r
- @param Destination Pointer to a Null-terminated Unicode string.\r
- @param Source Pointer to a Null-terminated Unicode string.\r
+ @param Destination A pointer to a Null-terminated Unicode string.\r
+ @param Source A pointer to a Null-terminated Unicode string.\r
\r
@return Destination.\r
\r
}\r
\r
/**\r
+ [ATTENTION] This function will be deprecated for security reason.\r
+\r
Copies up to a specified length from one Null-terminated Unicode string to \r
another Null-terminated Unicode string and returns the new Unicode string.\r
\r
PcdMaximumUnicodeStringLength Unicode characters, not including the Null-terminator,\r
then ASSERT().\r
\r
- @param Destination Pointer to a Null-terminated Unicode string.\r
- @param Source Pointer to a Null-terminated Unicode string.\r
- @param Length Maximum number of Unicode characters to copy.\r
+ @param Destination A pointer to a Null-terminated Unicode string.\r
+ @param Source A pointer to a Null-terminated Unicode string.\r
+ @param Length The maximum number of Unicode characters to copy.\r
\r
@return Destination.\r
\r
ZeroMem (Destination, Length * sizeof (*Destination));\r
return ReturnValue;\r
}\r
+#endif\r
\r
/**\r
Returns the length of a Null-terminated Unicode string.\r
PcdMaximumUnicodeStringLength Unicode characters, not including the\r
Null-terminator, then ASSERT().\r
\r
- @param String Pointer to a Null-terminated Unicode string.\r
+ @param String A pointer to a Null-terminated Unicode string.\r
\r
@return The length of String.\r
\r
PcdMaximumUnicodeStringLength Unicode characters, not including the\r
Null-terminator, then ASSERT().\r
\r
- @param String Pointer to a Null-terminated Unicode string.\r
+ @param String A pointer to a Null-terminated Unicode string.\r
\r
@return The size of String.\r
\r
than PcdMaximumUnicodeStringLength Unicode characters, not including the\r
Null-terminator, then ASSERT().\r
\r
- @param FirstString Pointer to a Null-terminated Unicode string.\r
- @param SecondString Pointer to a Null-terminated Unicode string.\r
+ @param FirstString A pointer to a Null-terminated Unicode string.\r
+ @param SecondString A pointer to a Null-terminated Unicode string.\r
\r
@retval 0 FirstString is identical to SecondString.\r
@return others FirstString is not identical to SecondString.\r
PcdMaximumUnicodeStringLength Unicode characters, not including the Null-terminator,\r
then ASSERT().\r
\r
- @param FirstString Pointer to a Null-terminated Unicode string.\r
- @param SecondString Pointer to a Null-terminated Unicode string.\r
- @param Length Maximum number of Unicode characters to compare.\r
+ @param FirstString A pointer to a Null-terminated Unicode string.\r
+ @param SecondString A pointer to a Null-terminated Unicode string.\r
+ @param Length The maximum number of Unicode characters to compare.\r
\r
@retval 0 FirstString is identical to SecondString.\r
@return others FirstString is not identical to SecondString.\r
return *FirstString - *SecondString;\r
}\r
\r
+#ifndef DISABLE_NEW_DEPRECATED_INTERFACES\r
+\r
/**\r
+ [ATTENTION] This function will be deprecated for security reason.\r
+\r
Concatenates one Null-terminated Unicode string to another Null-terminated\r
Unicode string, and returns the concatenated Unicode string.\r
\r
PcdMaximumUnicodeStringLength Unicode characters, not including the\r
Null-terminator, then ASSERT().\r
\r
- @param Destination Pointer to a Null-terminated Unicode string.\r
- @param Source Pointer to a Null-terminated Unicode string.\r
+ @param Destination A pointer to a Null-terminated Unicode string.\r
+ @param Source A pointer to a Null-terminated Unicode string.\r
\r
@return Destination.\r
\r
}\r
\r
/**\r
+ [ATTENTION] This function will be deprecated for security reason.\r
+\r
Concatenates up to a specified length one Null-terminated Unicode to the end \r
of another Null-terminated Unicode string, and returns the concatenated \r
Unicode string.\r
and Source results in a Unicode string with more than PcdMaximumUnicodeStringLength\r
Unicode characters, not including the Null-terminator, then ASSERT().\r
\r
- @param Destination Pointer to a Null-terminated Unicode string.\r
- @param Source Pointer to a Null-terminated Unicode string.\r
- @param Length Maximum number of Unicode characters to concatenate from\r
+ @param Destination A pointer to a Null-terminated Unicode string.\r
+ @param Source A pointer to a Null-terminated Unicode string.\r
+ @param Length The maximum number of Unicode characters to concatenate from\r
Source.\r
\r
@return Destination.\r
IN UINTN Length\r
)\r
{\r
- StrnCpy (Destination + StrLen (Destination), Source, Length);\r
+ UINTN DestinationLen;\r
+\r
+ DestinationLen = StrLen (Destination);\r
+ StrnCpy (Destination + DestinationLen, Source, Length);\r
+ Destination[DestinationLen + Length] = L'\0';\r
\r
//\r
// Size of the resulting string should never be zero.\r
ASSERT (StrSize (Destination) != 0);\r
return Destination;\r
}\r
+#endif\r
\r
/**\r
Returns the first occurrence of a Null-terminated Unicode sub-string\r
or String contains more than PcdMaximumUnicodeStringLength Unicode\r
characters, not including the Null-terminator, then ASSERT().\r
\r
- @param String Pointer to a Null-terminated Unicode string.\r
- @param SearchString Pointer to a Null-terminated Unicode string to search for.\r
+ @param String A pointer to a Null-terminated Unicode string.\r
+ @param SearchString A pointer to a Null-terminated Unicode string to search for.\r
\r
@retval NULL If the SearchString does not appear in String.\r
@return others If there is a match.\r
ASSERT (StrSize (String) != 0);\r
ASSERT (StrSize (SearchString) != 0);\r
\r
- while (*String != '\0') {\r
+ if (*SearchString == L'\0') {\r
+ return (CHAR16 *) String;\r
+ }\r
+\r
+ while (*String != L'\0') {\r
SearchStringTmp = SearchString;\r
FirstMatch = String;\r
\r
while ((*String == *SearchStringTmp) \r
- && (*SearchStringTmp != '\0') \r
- && (*String != '\0')) {\r
+ && (*String != L'\0')) {\r
String++;\r
SearchStringTmp++;\r
} \r
\r
- if (*SearchStringTmp == '\0') {\r
+ if (*SearchStringTmp == L'\0') {\r
return (CHAR16 *) FirstMatch;\r
}\r
\r
- if (SearchStringTmp == SearchString) {\r
- //\r
- // If no character from SearchString match,\r
- // move the pointer to the String under search\r
- // by one character.\r
- //\r
- String++;\r
+ if (*String == L'\0') {\r
+ return NULL;\r
}\r
+\r
+ String = FirstMatch + 1;\r
}\r
\r
return NULL;\r
more than PcdMaximumUnicodeStringLength Unicode characters, not including\r
the Null-terminator, then ASSERT().\r
\r
- @param String Pointer to a Null-terminated Unicode string.\r
+ @param String A pointer to a Null-terminated Unicode string.\r
\r
@retval Value translated from String.\r
\r
// If the number represented by String overflows according \r
// to the range defined by UINTN, then ASSERT().\r
//\r
- ASSERT ((Result < QUOTIENT_MAX_UINTN_DIVIDED_BY_10) ||\r
- ((Result == QUOTIENT_MAX_UINTN_DIVIDED_BY_10) &&\r
- (*String - L'0') <= REMAINDER_MAX_UINTN_DIVIDED_BY_10)\r
- );\r
+ ASSERT (Result <= ((((UINTN) ~0) - (*String - L'0')) / 10));\r
\r
Result = Result * 10 + (*String - L'0');\r
String++;\r
more than PcdMaximumUnicodeStringLength Unicode characters, not including\r
the Null-terminator, then ASSERT().\r
\r
- @param String Pointer to a Null-terminated Unicode string.\r
+ @param String A pointer to a Null-terminated Unicode string.\r
\r
@retval Value translated from String.\r
\r
// If the number represented by String overflows according \r
// to the range defined by UINTN, then ASSERT().\r
//\r
- ASSERT ((Result < QUOTIENT_MAX_UINT64_DIVIDED_BY_10) || \r
- ((Result == QUOTIENT_MAX_UINT64_DIVIDED_BY_10) && \r
- (*String - L'0') <= REMAINDER_MAX_UINT64_DIVIDED_BY_10)\r
- );\r
+ ASSERT (Result <= DivU64x32 (((UINT64) ~0) - (*String - L'0') , 10));\r
\r
Result = MultU64x32 (Result, 10) + (*String - L'0');\r
String++;\r
PcdMaximumUnicodeStringLength Unicode characters, not including the Null-terminator,\r
then ASSERT().\r
\r
- @param String Pointer to a Null-terminated Unicode string.\r
+ @param String A pointer to a Null-terminated Unicode string.\r
\r
@retval Value translated from String.\r
\r
// If the Hex Number represented by String overflows according \r
// to the range defined by UINTN, then ASSERT().\r
//\r
- ASSERT ((Result < QUOTIENT_MAX_UINTN_DIVIDED_BY_16) ||\r
- ((Result == QUOTIENT_MAX_UINTN_DIVIDED_BY_16) && \r
- (InternalHexCharToUintn (*String) <= REMAINDER_MAX_UINTN_DIVIDED_BY_16))\r
- );\r
+ ASSERT (Result <= ((((UINTN) ~0) - InternalHexCharToUintn (*String)) >> 4));\r
\r
Result = (Result << 4) + InternalHexCharToUintn (*String);\r
String++;\r
PcdMaximumUnicodeStringLength Unicode characters, not including the Null-terminator,\r
then ASSERT().\r
\r
- @param String Pointer to a Null-terminated Unicode string.\r
+ @param String A pointer to a Null-terminated Unicode string.\r
\r
@retval Value translated from String.\r
\r
// If the Hex Number represented by String overflows according \r
// to the range defined by UINTN, then ASSERT().\r
//\r
- ASSERT ((Result < QUOTIENT_MAX_UINT64_DIVIDED_BY_16)|| \r
- ((Result == QUOTIENT_MAX_UINT64_DIVIDED_BY_16) && \r
- (InternalHexCharToUintn (*String) <= REMAINDER_MAX_UINT64_DIVIDED_BY_16))\r
- );\r
+ ASSERT (Result <= RShiftU64 (((UINT64) ~0) - InternalHexCharToUintn (*String) , 4));\r
\r
Result = LShiftU64 (Result, 4);\r
Result = Result + InternalHexCharToUintn (*String);\r
to the ASCII string Destination by copying the lower 8 bits of\r
each Unicode character. It returns Destination.\r
\r
+ The caller is responsible to make sure Destination points to a buffer with size\r
+ equal or greater than ((StrLen (Source) + 1) * sizeof (CHAR8)) in bytes.\r
+\r
If any Unicode characters in Source contain non-zero value in\r
the upper 8 bits, then ASSERT().\r
\r
than PcdMaximumAsciiStringLength Unicode characters, not including the\r
Null-terminator, then ASSERT().\r
\r
- @param Source Pointer to a Null-terminated Unicode string.\r
- @param Destination Pointer to a Null-terminated ASCII string.\r
+ @param Source A pointer to a Null-terminated Unicode string.\r
+ @param Destination A pointer to a Null-terminated ASCII string.\r
\r
@return Destination.\r
\r
//\r
// Source and Destination should not overlap\r
//\r
- ASSERT ((UINTN) ((CHAR16 *) Destination - Source) > StrLen (Source));\r
+ ASSERT ((UINTN) (Destination - (CHAR8 *) Source) >= StrSize (Source));\r
ASSERT ((UINTN) ((CHAR8 *) Source - Destination) > StrLen (Source));\r
\r
\r
return ReturnValue;\r
}\r
\r
+#ifndef DISABLE_NEW_DEPRECATED_INTERFACES\r
\r
/**\r
+ [ATTENTION] This function will be deprecated for security reason.\r
+\r
Copies one Null-terminated ASCII string to another Null-terminated ASCII\r
string and returns the new ASCII string.\r
\r
PcdMaximumAsciiStringLength ASCII characters, not including the Null-terminator,\r
then ASSERT().\r
\r
- @param Destination Pointer to a Null-terminated ASCII string.\r
- @param Source Pointer to a Null-terminated ASCII string.\r
+ @param Destination A pointer to a Null-terminated ASCII string.\r
+ @param Source A pointer to a Null-terminated ASCII string.\r
\r
@return Destination\r
\r
}\r
\r
/**\r
+ [ATTENTION] This function will be deprecated for security reason.\r
+\r
Copies up to a specified length one Null-terminated ASCII string to another \r
Null-terminated ASCII string and returns the new ASCII string.\r
\r
PcdMaximumAsciiStringLength ASCII characters, not including the Null-terminator,\r
then ASSERT().\r
\r
- @param Destination Pointer to a Null-terminated ASCII string.\r
- @param Source Pointer to a Null-terminated ASCII string.\r
- @param Length Maximum number of ASCII characters to copy.\r
+ @param Destination A pointer to a Null-terminated ASCII string.\r
+ @param Source A pointer to a Null-terminated ASCII string.\r
+ @param Length The maximum number of ASCII characters to copy.\r
\r
@return Destination\r
\r
ZeroMem (Destination, Length * sizeof (*Destination));\r
return ReturnValue;\r
}\r
+#endif\r
\r
/**\r
Returns the length of a Null-terminated ASCII string.\r
PcdMaximumAsciiStringLength ASCII characters, not including the Null-terminator,\r
then ASSERT().\r
\r
- @param String Pointer to a Null-terminated ASCII string.\r
+ @param String A pointer to a Null-terminated ASCII string.\r
\r
@return The length of String.\r
\r
PcdMaximumAsciiStringLength ASCII characters, not including the Null-terminator,\r
then ASSERT().\r
\r
- @param String Pointer to a Null-terminated ASCII string.\r
+ @param String A pointer to a Null-terminated ASCII string.\r
\r
@return The size of String.\r
\r
than PcdMaximumAsciiStringLength ASCII characters, not including the\r
Null-terminator, then ASSERT().\r
\r
- @param FirstString Pointer to a Null-terminated ASCII string.\r
- @param SecondString Pointer to a Null-terminated ASCII string.\r
+ @param FirstString A pointer to a Null-terminated ASCII string.\r
+ @param SecondString A pointer to a Null-terminated ASCII string.\r
\r
@retval ==0 FirstString is identical to SecondString.\r
@retval !=0 FirstString is not identical to SecondString.\r
**/\r
CHAR8\r
EFIAPI\r
-AsciiToUpper (\r
+InternalBaseLibAsciiToUpper (\r
IN CHAR8 Chr\r
)\r
{\r
return Char - '0';\r
}\r
\r
- return (UINTN) (10 + AsciiToUpper (Char) - 'A');\r
+ return (UINTN) (10 + InternalBaseLibAsciiToUpper (Char) - 'A');\r
}\r
\r
\r
than PcdMaximumAsciiStringLength ASCII characters, not including the\r
Null-terminator, then ASSERT().\r
\r
- @param FirstString Pointer to a Null-terminated ASCII string.\r
- @param SecondString Pointer to a Null-terminated ASCII string.\r
+ @param FirstString A pointer to a Null-terminated ASCII string.\r
+ @param SecondString A pointer to a Null-terminated ASCII string.\r
\r
@retval ==0 FirstString is identical to SecondString using case insensitive\r
comparisons.\r
ASSERT (AsciiStrSize (FirstString));\r
ASSERT (AsciiStrSize (SecondString));\r
\r
- UpperFirstString = AsciiToUpper (*FirstString);\r
- UpperSecondString = AsciiToUpper (*SecondString);\r
+ UpperFirstString = InternalBaseLibAsciiToUpper (*FirstString);\r
+ UpperSecondString = InternalBaseLibAsciiToUpper (*SecondString);\r
while ((*FirstString != '\0') && (UpperFirstString == UpperSecondString)) {\r
FirstString++;\r
SecondString++;\r
- UpperFirstString = AsciiToUpper (*FirstString);\r
- UpperSecondString = AsciiToUpper (*SecondString);\r
+ UpperFirstString = InternalBaseLibAsciiToUpper (*FirstString);\r
+ UpperSecondString = InternalBaseLibAsciiToUpper (*SecondString);\r
}\r
\r
return UpperFirstString - UpperSecondString;\r
PcdMaximumAsciiStringLength ASCII characters, not including the Null-terminator,\r
then ASSERT().\r
\r
- @param FirstString Pointer to a Null-terminated ASCII string.\r
- @param SecondString Pointer to a Null-terminated ASCII string.\r
- @param Length Maximum number of ASCII characters for compare.\r
+ @param FirstString A pointer to a Null-terminated ASCII string.\r
+ @param SecondString A pointer to a Null-terminated ASCII string.\r
+ @param Length The maximum number of ASCII characters for compare.\r
\r
@retval ==0 FirstString is identical to SecondString.\r
@retval !=0 FirstString is not identical to SecondString.\r
return *FirstString - *SecondString;\r
}\r
\r
+#ifndef DISABLE_NEW_DEPRECATED_INTERFACES\r
+\r
/**\r
+ [ATTENTION] This function will be deprecated for security reason.\r
+\r
Concatenates one Null-terminated ASCII string to another Null-terminated\r
ASCII string, and returns the concatenated ASCII string.\r
\r
Source results in a ASCII string with more than PcdMaximumAsciiStringLength\r
ASCII characters, then ASSERT().\r
\r
- @param Destination Pointer to a Null-terminated ASCII string.\r
- @param Source Pointer to a Null-terminated ASCII string.\r
+ @param Destination A pointer to a Null-terminated ASCII string.\r
+ @param Source A pointer to a Null-terminated ASCII string.\r
\r
@return Destination\r
\r
}\r
\r
/**\r
+ [ATTENTION] This function will be deprecated for security reason.\r
+\r
Concatenates up to a specified length one Null-terminated ASCII string to \r
the end of another Null-terminated ASCII string, and returns the \r
concatenated ASCII string.\r
Source results in a ASCII string with more than PcdMaximumAsciiStringLength\r
ASCII characters, not including the Null-terminator, then ASSERT().\r
\r
- @param Destination Pointer to a Null-terminated ASCII string.\r
- @param Source Pointer to a Null-terminated ASCII string.\r
- @param Length Maximum number of ASCII characters to concatenate from\r
+ @param Destination A pointer to a Null-terminated ASCII string.\r
+ @param Source A pointer to a Null-terminated ASCII string.\r
+ @param Length The maximum number of ASCII characters to concatenate from\r
Source.\r
\r
@return Destination\r
IN UINTN Length\r
)\r
{\r
- AsciiStrnCpy (Destination + AsciiStrLen (Destination), Source, Length);\r
+ UINTN DestinationLen;\r
+\r
+ DestinationLen = AsciiStrLen (Destination);\r
+ AsciiStrnCpy (Destination + DestinationLen, Source, Length);\r
+ Destination[DestinationLen + Length] = '\0';\r
\r
//\r
// Size of the resulting string should never be zero.\r
ASSERT (AsciiStrSize (Destination) != 0);\r
return Destination;\r
}\r
+#endif\r
\r
/**\r
Returns the first occurrence of a Null-terminated ASCII sub-string\r
String contains more than PcdMaximumAsciiStringLength Unicode characters\r
not including the Null-terminator, then ASSERT().\r
\r
- @param String Pointer to a Null-terminated ASCII string.\r
- @param SearchString Pointer to a Null-terminated ASCII string to search for.\r
+ @param String A pointer to a Null-terminated ASCII string.\r
+ @param SearchString A pointer to a Null-terminated ASCII string to search for.\r
\r
@retval NULL If the SearchString does not appear in String.\r
@retval others If there is a match return the first occurrence of SearchingString.\r
ASSERT (AsciiStrSize (String) != 0);\r
ASSERT (AsciiStrSize (SearchString) != 0);\r
\r
+ if (*SearchString == '\0') {\r
+ return (CHAR8 *) String;\r
+ }\r
+\r
while (*String != '\0') {\r
SearchStringTmp = SearchString;\r
FirstMatch = String;\r
\r
while ((*String == *SearchStringTmp) \r
- && (*SearchStringTmp != '\0') \r
&& (*String != '\0')) {\r
String++;\r
SearchStringTmp++;\r
return (CHAR8 *) FirstMatch;\r
}\r
\r
- if (SearchStringTmp == SearchString) {\r
- //\r
- // If no character from SearchString match,\r
- // move the pointer to the String under search\r
- // by one character.\r
- //\r
- String++;\r
+ if (*String == '\0') {\r
+ return NULL;\r
}\r
\r
+ String = FirstMatch + 1;\r
}\r
\r
return NULL;\r
PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,\r
then ASSERT().\r
\r
- @param String Pointer to a Null-terminated ASCII string.\r
+ @param String A pointer to a Null-terminated ASCII string.\r
\r
@retval Value translated from String.\r
\r
// If the number represented by String overflows according \r
// to the range defined by UINTN, then ASSERT().\r
//\r
- ASSERT ((Result < QUOTIENT_MAX_UINTN_DIVIDED_BY_10) ||\r
- ((Result == QUOTIENT_MAX_UINTN_DIVIDED_BY_10) && \r
- (*String - '0') <= REMAINDER_MAX_UINTN_DIVIDED_BY_10)\r
- );\r
+ ASSERT (Result <= ((((UINTN) ~0) - (*String - L'0')) / 10));\r
\r
Result = Result * 10 + (*String - '0');\r
String++;\r
PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,\r
then ASSERT().\r
\r
- @param String Pointer to a Null-terminated ASCII string.\r
+ @param String A pointer to a Null-terminated ASCII string.\r
\r
@retval Value translated from String.\r
\r
// If the number represented by String overflows according \r
// to the range defined by UINTN, then ASSERT().\r
//\r
- ASSERT ((Result < QUOTIENT_MAX_UINT64_DIVIDED_BY_10) || \r
- ((Result == QUOTIENT_MAX_UINT64_DIVIDED_BY_10) && \r
- (*String - '0') <= REMAINDER_MAX_UINT64_DIVIDED_BY_10)\r
- );\r
+ ASSERT (Result <= DivU64x32 (((UINT64) ~0) - (*String - L'0') , 10));\r
\r
Result = MultU64x32 (Result, 10) + (*String - '0');\r
String++;\r
and String contains more than PcdMaximumAsciiStringLength ASCII characters not including\r
the Null-terminator, then ASSERT().\r
\r
- @param String Pointer to a Null-terminated ASCII string.\r
+ @param String A pointer to a Null-terminated ASCII string.\r
\r
@retval Value translated from String.\r
\r
String++;\r
}\r
\r
- if (AsciiToUpper (*String) == 'X') {\r
+ if (InternalBaseLibAsciiToUpper (*String) == 'X') {\r
ASSERT (*(String - 1) == '0');\r
if (*(String - 1) != '0') {\r
return 0;\r
// If the Hex Number represented by String overflows according \r
// to the range defined by UINTN, then ASSERT().\r
//\r
- ASSERT ((Result < QUOTIENT_MAX_UINTN_DIVIDED_BY_16) ||\r
- ((Result == QUOTIENT_MAX_UINTN_DIVIDED_BY_16) && \r
- (InternalAsciiHexCharToUintn (*String) <= REMAINDER_MAX_UINTN_DIVIDED_BY_16))\r
- );\r
+ ASSERT (Result <= ((((UINTN) ~0) - InternalHexCharToUintn (*String)) >> 4));\r
\r
Result = (Result << 4) + InternalAsciiHexCharToUintn (*String);\r
String++;\r
and String contains more than PcdMaximumAsciiStringLength ASCII characters not including\r
the Null-terminator, then ASSERT().\r
\r
- @param String Pointer to a Null-terminated ASCII string.\r
+ @param String A pointer to a Null-terminated ASCII string.\r
\r
@retval Value translated from String.\r
\r
String++;\r
}\r
\r
- if (AsciiToUpper (*String) == 'X') {\r
+ if (InternalBaseLibAsciiToUpper (*String) == 'X') {\r
ASSERT (*(String - 1) == '0');\r
if (*(String - 1) != '0') {\r
return 0;\r
// If the Hex Number represented by String overflows according \r
// to the range defined by UINTN, then ASSERT().\r
//\r
- ASSERT ((Result < QUOTIENT_MAX_UINT64_DIVIDED_BY_16) ||\r
- ((Result == QUOTIENT_MAX_UINT64_DIVIDED_BY_16) && \r
- (InternalAsciiHexCharToUintn (*String) <= REMAINDER_MAX_UINT64_DIVIDED_BY_16))\r
- );\r
+ ASSERT (Result <= RShiftU64 (((UINT64) ~0) - InternalHexCharToUintn (*String) , 4));\r
\r
Result = LShiftU64 (Result, 4);\r
Result = Result + InternalAsciiHexCharToUintn (*String);\r
PcdMaximumUnicodeStringLength ASCII characters not including the\r
Null-terminator, then ASSERT().\r
\r
- @param Source Pointer to a Null-terminated ASCII string.\r
- @param Destination Pointer to a Null-terminated Unicode string.\r
+ @param Source A pointer to a Null-terminated ASCII string.\r
+ @param Destination A pointer to a Null-terminated Unicode string.\r
\r
@return Destination.\r
\r
// Source and Destination should not overlap\r
//\r
ASSERT ((UINTN) ((CHAR8 *) Destination - Source) > AsciiStrLen (Source));\r
- ASSERT ((UINTN) (Source - (CHAR8 *) Destination) > (AsciiStrLen (Source) * sizeof (CHAR16)));\r
+ ASSERT ((UINTN) (Source - (CHAR8 *) Destination) >= (AsciiStrSize (Source) * sizeof (CHAR16)));\r
+\r
\r
- \r
ReturnValue = Destination;\r
while (*Source != '\0') {\r
*(Destination++) = (CHAR16) *(Source++);\r