\r
#include "BaseLibInternals.h"\r
\r
-#define QUOTIENT_MAX_UINTN_DIVIDED_BY_10 ((~((UINTN) 0)) / 10U)\r
-#define REMAINDER_MAX_UINTN_DIVIDED_BY_10 ((~((UINTN) 0)) % 10U)\r
-\r
-\r
-#define QUOTIENT_MAX_UINTN_DIVIDED_BY_16 ((~((UINTN) 0)) / 16U)\r
-#define REMAINDER_MAX_UINTN_DIVIDED_BY_16 ((~((UINTN) 0)) % 16U)\r
-\r
-#define QUOTIENT_MAX_UINT64_DIVIDED_BY_10 ((~((UINT64) 0)) / 10U)\r
-#define REMAINDER_MAX_UINT64_DIVIDED_BY_10 ((~((UINT64) 0)) % 10U)\r
-\r
-#define QUOTIENT_MAX_UINT64_DIVIDED_BY_16 ((~((UINT64) 0)) / 16U)\r
-#define REMAINDER_MAX_UINT64_DIVIDED_BY_16 ((~((UINT64) 0)) % 16U)\r
\r
/**\r
Copies one Null-terminated Unicode string to another Null-terminated Unicode\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
// 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
// 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
// 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
// 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
// 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
// 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
// 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