]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/BaseLib/String.c
INF file verified, and Coding Style reviewed.
[mirror_edk2.git] / MdePkg / Library / BaseLib / String.c
index e056fa06cbe529a323923e53d15d9711bb510e60..70079f79757fad17366938cf3f522e97cd685813 100644 (file)
@@ -93,7 +93,7 @@ StrCpy (
   If Length > 0 and Destination is NULL, then ASSERT().\r
   If Length > 0 and Destination is not aligned on a 16-bit boundary, then ASSERT().\r
   If Length > 0 and Source is NULL, then ASSERT().\r
-  If Length > 0 and Source is not aligned on a 16-bit bounadry, then ASSERT().\r
+  If Length > 0 and Source is not aligned on a 16-bit boundary, then ASSERT().\r
   If Source and Destination overlap, then ASSERT().\r
   If PcdMaximumUnicodeStringLength is not zero, and Source contains more than\r
   PcdMaximumUnicodeStringLength Unicode characters not including the\r
@@ -261,7 +261,7 @@ StrCmp (
 /**\r
   Compares up to a specified length the contents of two Null-terminated Unicode strings,\r
   and returns the difference between the first mismatched Unicode characters.\r
-\r
+  \r
   This function compares the Null-terminated Unicode string FirstString to the\r
   Null-terminated Unicode string SecondString. At most, Length Unicode\r
   characters will be compared. If Length is 0, then 0 is returned. If\r
@@ -270,9 +270,9 @@ StrCmp (
   subtracted from the first mismatched Unicode character in FirstString.\r
 \r
   If Length > 0 and FirstString is NULL, then ASSERT().\r
-  If Length > 0 and FirstString is not aligned on a 16-bit bounadary, then ASSERT().\r
+  If Length > 0 and FirstString is not aligned on a 16-bit boundary, then ASSERT().\r
   If Length > 0 and SecondString is NULL, then ASSERT().\r
-  If Length > 0 and SecondString is not aligned on a 16-bit bounadary, then ASSERT().\r
+  If Length > 0 and SecondString is not aligned on a 16-bit boundary, then ASSERT().\r
   If PcdMaximumUnicodeStringLength is not zero, and FirstString contains more\r
   than PcdMaximumUnicodeStringLength Unicode characters not including the\r
   Null-terminator, then ASSERT().\r
@@ -329,9 +329,9 @@ StrnCmp (
   results are undefined.\r
 \r
   If Destination is NULL, then ASSERT().\r
-  If Destination is not aligned on a 16-bit bounadary, then ASSERT().\r
+  If Destination is not aligned on a 16-bit boundary, then ASSERT().\r
   If Source is NULL, then ASSERT().\r
-  If Source is not aligned on a 16-bit bounadary, then ASSERT().\r
+  If Source is not aligned on a 16-bit boundary, then ASSERT().\r
   If Source and Destination overlap, then ASSERT().\r
   If PcdMaximumUnicodeStringLength is not zero, and Destination contains more\r
   than PcdMaximumUnicodeStringLength Unicode characters not including the\r
@@ -451,8 +451,8 @@ StrnCat (
 CHAR16 *\r
 EFIAPI\r
 StrStr (\r
-  IN      CONST CHAR16                *String,\r
-  IN      CONST CHAR16                *SearchString\r
+  IN      CONST CHAR16              *String,\r
+  IN      CONST CHAR16              *SearchString\r
   )\r
 {\r
   CONST CHAR16 *FirstMatch;\r
@@ -603,7 +603,7 @@ InternalIsHexaDecimalDigitCharacter (
   of the Unicode string specified by String as a decimal number. The format\r
   of the input Unicode string String is:\r
 \r
-                    [spaces] [decimal digits].\r
+                  [spaces] [decimal digits].\r
 \r
   The valid decimal digit character is in the range [0-9]. The\r
   function will ignore the pad space, which includes spaces or\r
@@ -632,7 +632,7 @@ InternalIsHexaDecimalDigitCharacter (
 UINTN\r
 EFIAPI\r
 StrDecimalToUintn (\r
-  IN      CONST CHAR16                *String\r
+  IN      CONST CHAR16              *String\r
   )\r
 {\r
   UINTN     Result;\r
@@ -685,7 +685,7 @@ StrDecimalToUintn (
   of the Unicode string specified by String as a decimal number. The format\r
   of the input Unicode string String is:\r
 \r
-                   [spaces] [decimal digits].\r
+                  [spaces] [decimal digits].\r
 \r
   The valid decimal digit character is in the range [0-9]. The\r
   function will ignore the pad space, which includes spaces or\r
@@ -714,7 +714,7 @@ StrDecimalToUintn (
 UINT64\r
 EFIAPI\r
 StrDecimalToUint64 (\r
-  IN      CONST CHAR16                *String\r
+  IN      CONST CHAR16              *String\r
   )\r
 {\r
   UINT64     Result;\r
@@ -796,7 +796,7 @@ StrDecimalToUint64 (
 UINTN\r
 EFIAPI\r
 StrHexToUintn (\r
-  IN      CONST CHAR16                *String\r
+  IN      CONST CHAR16              *String\r
   )\r
 {\r
   UINTN     Result;\r
@@ -886,11 +886,11 @@ StrHexToUintn (
 \r
   @retval Value translated from String.\r
 \r
-  **/\r
+**/\r
 UINT64\r
 EFIAPI\r
 StrHexToUint64 (\r
-  IN      CONST CHAR16                *String\r
+  IN      CONST CHAR16             *String\r
   )\r
 {\r
   UINT64    Result;\r
@@ -1027,8 +1027,8 @@ InternalAsciiIsHexaDecimalDigitCharacter (
 CHAR8 *\r
 EFIAPI\r
 UnicodeStrToAsciiStr (\r
-  IN      CONST CHAR16                *Source,\r
-  OUT     CHAR8                       *Destination\r
+  IN      CONST CHAR16              *Source,\r
+  OUT     CHAR8                     *Destination\r
   )\r
 {\r
   CHAR8                               *ReturnValue;\r
@@ -1421,7 +1421,7 @@ AsciiStriCmp (
   @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
-\r
+  \r
   @retval ==0       FirstString is identical to SecondString.\r
   @retval !=0       FirstString is not identical to SecondString.\r
 \r
@@ -1577,8 +1577,8 @@ AsciiStrnCat (
 CHAR8 *\r
 EFIAPI\r
 AsciiStrStr (\r
-  IN      CONST CHAR8             *String,\r
-  IN      CONST CHAR8             *SearchString\r
+  IN      CONST CHAR8               *String,\r
+  IN      CONST CHAR8               *SearchString\r
   )\r
 {\r
   CONST CHAR8 *FirstMatch;\r
@@ -1729,7 +1729,7 @@ AsciiStrDecimalToUintn (
 UINT64\r
 EFIAPI\r
 AsciiStrDecimalToUint64 (\r
-  IN      CONST CHAR8             *String\r
+  IN      CONST CHAR8               *String\r
   )\r
 {\r
   UINT64     Result;\r
@@ -1809,7 +1809,7 @@ AsciiStrDecimalToUint64 (
 UINTN\r
 EFIAPI\r
 AsciiStrHexToUintn (\r
-  IN      CONST CHAR8             *String\r
+  IN      CONST CHAR8               *String\r
   )\r
 {\r
   UINTN     Result;\r
@@ -1901,7 +1901,7 @@ AsciiStrHexToUintn (
 UINT64\r
 EFIAPI\r
 AsciiStrHexToUint64 (\r
-  IN      CONST CHAR8             *String\r
+  IN      CONST CHAR8                *String\r
   )\r
 {\r
   UINT64    Result;\r
@@ -2074,250 +2074,3 @@ BcdToDecimal8 (
   ASSERT ((Value & 0xf) < 0xa);\r
   return (UINT8) ((Value >> 4) * 10 + (Value & 0xf));\r
 }\r
-\r
-\r
-/**\r
-  Convert a nibble in the low 4 bits of a byte to a Unicode hexadecimal character.\r
-\r
-  This function converts a nibble in the low 4 bits of a byte to a Unicode hexadecimal \r
-  character  For example, the nibble  0x01 and 0x0A will converted to L'1' and L'A' \r
-  respectively.\r
-\r
-  The upper nibble in the input byte will be masked off.\r
-\r
-  @param Nibble     The nibble which is in the low 4 bits of the input byte.\r
-\r
-  @retval  CHAR16   The Unicode hexadecimal character.\r
-\r
-**/\r
-CHAR16\r
-EFIAPI\r
-NibbleToHexChar (\r
-  IN UINT8      Nibble\r
-  )\r
-{\r
-  Nibble &= 0x0F;\r
-  if (Nibble <= 0x9) {\r
-    return (CHAR16)(Nibble + L'0');\r
-  }\r
-\r
-  return (CHAR16)(Nibble - 0xA + L'A');\r
-}\r
-\r
-/** \r
-  Convert binary buffer to a Unicode String in a specified sequence. \r
-\r
-  This function converts bytes in the memory block pointed by Buffer to a Unicode String Str. \r
-  Each byte will be represented by two Unicode characters. For example, byte 0xA1 will \r
-  be converted into two Unicode character L'A' and L'1'. In the output String, the Unicode Character \r
-  for the Most Significant Nibble will be put before the Unicode Character for the Least Significant\r
-  Nibble. The output string for the buffer containing a single byte 0xA1 will be L"A1". \r
-  For a buffer with multiple bytes, the Unicode character produced by the first byte will be put into the \r
-  the last character in the output string. The one next to first byte will be put into the\r
-  character before the last character. This rules applies to the rest of the bytes. The Unicode\r
-  character by the last byte will be put into the first character in the output string. For example,\r
-  the input buffer for a 64-bits unsigned integer 0x12345678abcdef1234 will be converted to\r
-  a Unicode string equal to L"12345678abcdef1234".\r
-\r
-  @param String                        On input, String is pointed to the buffer allocated for the convertion.\r
-  @param StringLen                     The Length of String buffer to hold the output String. The length must include the tailing '\0' character.\r
-                                       The StringLen required to convert a N bytes Buffer will be a least equal to or greater \r
-                                       than 2*N + 1.\r
-  @param Buffer                        The pointer to a input buffer.\r
-  @param BufferSizeInBytes             Length in bytes of the input buffer.\r
-\r
-\r
-  @retval  EFI_SUCCESS                 The convertion is successful. All bytes in Buffer has been convert to the corresponding\r
-                                       Unicode character and placed into the right place in String.\r
-  @retval  EFI_BUFFER_TOO_SMALL        StringSizeInBytes is smaller than 2 * N + 1the number of bytes required to\r
-                                       complete the convertion. \r
-**/\r
-RETURN_STATUS\r
-EFIAPI\r
-BufToHexString (\r
-  IN OUT       CHAR16               *String,\r
-  IN OUT       UINTN                *StringLen,\r
-  IN     CONST UINT8                *Buffer,\r
-  IN           UINTN                BufferSizeInBytes\r
-  )\r
-{\r
-  UINTN       Idx;\r
-  UINT8       Byte;\r
-  UINTN       StrLen;\r
-\r
-  //\r
-  // Make sure string is either passed or allocate enough.\r
-  // It takes 2 Unicode characters (4 bytes) to represent 1 byte of the binary buffer.\r
-  // Plus the Unicode termination character.\r
-  //\r
-  StrLen = BufferSizeInBytes * 2;\r
-  if (StrLen > ((*StringLen) - 1)) {\r
-    *StringLen = StrLen + 1;\r
-    return RETURN_BUFFER_TOO_SMALL;\r
-  }\r
-\r
-  *StringLen = StrLen + 1;\r
-  //\r
-  // Ends the string.\r
-  //\r
-  String[StrLen] = L'\0'; \r
-\r
-  for (Idx = 0; Idx < BufferSizeInBytes; Idx++) {\r
-\r
-    Byte = Buffer[Idx];\r
-    String[StrLen - 1 - Idx * 2] = NibbleToHexChar (Byte);\r
-    String[StrLen - 2 - Idx * 2] = NibbleToHexChar ((UINT8)(Byte >> 4));\r
-  }\r
-\r
-  return RETURN_SUCCESS;\r
-}\r
-\r
-\r
-/**\r
-  Convert a Unicode string consisting of hexadecimal characters to a output byte buffer.\r
-\r
-  This function converts a Unicode string consisting of characters in the range of Hexadecimal\r
-  character (L'0' to L'9', L'A' to L'F' and L'a' to L'f') to a output byte buffer. The function will stop\r
-  at the first non-hexadecimal character or the NULL character. The convertion process can be\r
-  simply viewed as the reverse operations defined by BufToHexString. Two Unicode characters will be \r
-  converted into one byte. The first Unicode character represents the Most Significant Nibble and the\r
-  second Unicode character represents the Least Significant Nibble in the output byte. \r
-  The first pair of Unicode characters represents the last byte in the output buffer. The second pair of Unicode \r
-  characters represent the  the byte preceding the last byte. This rule applies to the rest pairs of bytes. \r
-  The last pair represent the first byte in the output buffer. \r
-\r
-  For example, a Unciode String L"12345678" will be converted into a buffer wil the following bytes \r
-  (first byte is the byte in the lowest memory address): "0x78, 0x56, 0x34, 0x12".\r
-\r
-  If String has N valid hexadecimal characters for conversion,  the caller must make sure Buffer is at least \r
-  N/2 (if N is even) or (N+1)/2 (if N if odd) bytes. \r
-\r
-  @param Buffer                      The output buffer allocated by the caller.\r
-  @param BufferSizeInBytes           On input, the size in bytes of Buffer. On output, it is updated to \r
-                                     contain the size of the Buffer which is actually used for the converstion.\r
-                                     For Unicode string with 2*N hexadecimal characters (not including the \r
-                                     tailing NULL character), N bytes of Buffer will be used for the output.\r
-  @param String                      The input hexadecimal string.\r
-  @param ConvertedStrLen             The number of hexadecimal characters used to produce content in output\r
-                                     buffer Buffer.\r
-\r
-  @retval  RETURN_BUFFER_TOO_SMALL   The input BufferSizeInBytes is too small to hold the output. BufferSizeInBytes\r
-                                     will be updated to the size required for the converstion.\r
-  @retval  RETURN_SUCCESS            The convertion is successful or the first Unicode character from String\r
-                                     is hexadecimal. If ConvertedStrLen is not NULL, it is updated\r
-                                     to the number of hexadecimal character used for the converstion.\r
-**/\r
-RETURN_STATUS\r
-EFIAPI\r
-HexStringToBuf (\r
-  OUT          UINT8                    *Buffer,   \r
-  IN OUT       UINTN                    *BufferSizeInBytes,\r
-  IN     CONST CHAR16                   *String,\r
-  OUT          UINTN                    *ConvertedStrLen  OPTIONAL\r
-  )\r
-{\r
-  UINTN       HexCnt;\r
-  UINTN       Idx;\r
-  UINTN       BufferLength;\r
-  UINT8       Digit;\r
-  UINT8       Byte;\r
-\r
-  //\r
-  // Find out how many hex characters the string has.\r
-  //\r
-  for (Idx = 0, HexCnt = 0; IsHexDigit (&Digit, String[Idx]); Idx++, HexCnt++);\r
-\r
-  if (HexCnt == 0) {\r
-    *ConvertedStrLen = 0;\r
-    return RETURN_SUCCESS;\r
-  }\r
-  //\r
-  // Two Unicode characters make up 1 buffer byte. Round up.\r
-  //\r
-  BufferLength = (HexCnt + 1) / 2; \r
-\r
-  //\r
-  // Test if  buffer is passed enough.\r
-  //\r
-  if (BufferLength > (*BufferSizeInBytes)) {\r
-    *BufferSizeInBytes = BufferLength;\r
-    return RETURN_BUFFER_TOO_SMALL;\r
-  }\r
-\r
-  *BufferSizeInBytes = BufferLength;\r
-\r
-  for (Idx = 0; Idx < HexCnt; Idx++) {\r
-\r
-    IsHexDigit (&Digit, String[HexCnt - 1 - Idx]);\r
-\r
-    //\r
-    // For odd charaters, write the lower nibble for each buffer byte,\r
-    // and for even characters, the upper nibble.\r
-    //\r
-    if ((Idx & 1) == 0) {\r
-      Byte = Digit;\r
-    } else {\r
-      Byte = Buffer[Idx / 2];\r
-      Byte &= 0x0F;\r
-      Byte = (UINT8) (Byte | Digit << 4);\r
-    }\r
-\r
-    Buffer[Idx / 2] = Byte;\r
-  }\r
-\r
-  if (ConvertedStrLen != NULL) {\r
-    *ConvertedStrLen = HexCnt;\r
-  }\r
-\r
-  return RETURN_SUCCESS;\r
-}\r
-\r
-\r
-/**\r
-  Test if  a Unicode character is a hexadecimal digit. If true, the input\r
-  Unicode character is converted to a byte. \r
-\r
-  This function tests if a Unicode character is a hexadecimal digit. If true, the input\r
-  Unicode character is converted to a byte. For example, Unicode character\r
-  L'A' will be converted to 0x0A. \r
-\r
-  If Digit is NULL, then ASSERT.\r
-\r
-  @param  Digit       The output hexadecimal digit.\r
-\r
-  @param  Char        The input Unicode character.\r
-\r
-  @retval TRUE        Char is in the range of Hexadecimal number. Digit is updated\r
-                      to the byte value of the number.\r
-  @retval FALSE       Char is not in the range of Hexadecimal number. Digit is keep\r
-                      intact.\r
-\r
-**/\r
-BOOLEAN\r
-EFIAPI\r
-IsHexDigit (\r
-  OUT UINT8      *Digit,\r
-  IN  CHAR16      Char\r
-  )\r
-{\r
-  ASSERT (Digit != NULL);\r
-  \r
-  if ((Char >= L'0') && (Char <= L'9')) {\r
-    *Digit = (UINT8) (Char - L'0');\r
-    return TRUE;\r
-  }\r
-\r
-  if ((Char >= L'A') && (Char <= L'F')) {\r
-    *Digit = (UINT8) (Char - L'A' + 0x0A);\r
-    return TRUE;\r
-  }\r
-\r
-  if ((Char >= L'a') && (Char <= L'f')) {\r
-    *Digit = (UINT8) (Char - L'a' + 0x0A);\r
-    return TRUE;\r
-  }\r
-\r
-  return FALSE;\r
-}\r
-\r
-\r