Changeset 5605 in vbox for trunk/src/VBox/Runtime/common/string/utf-8.cpp
- Timestamp:
- Nov 1, 2007 4:09:26 PM (18 years ago)
- svn:sync-xref-src-repo-rev:
- 25895
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/common/string/utf-8.cpp
r5413 r5605 48 48 if (!uch) 49 49 break; 50 if (uch & BIT(7))50 if (uch & RT_BIT(7)) 51 51 { 52 52 /* figure sequence length and validate the first byte */ 53 53 unsigned cb; 54 if ((uch & ( BIT(7) | BIT(6) | BIT(5))) == (BIT(7) |BIT(6)))54 if ((uch & (RT_BIT(7) | RT_BIT(6) | RT_BIT(5))) == (RT_BIT(7) | RT_BIT(6))) 55 55 cb = 2; 56 else if ((uch & ( BIT(7) | BIT(6) | BIT(5) | BIT(4))) == (BIT(7) | BIT(6) |BIT(5)))56 else if ((uch & (RT_BIT(7) | RT_BIT(6) | RT_BIT(5) | RT_BIT(4))) == (RT_BIT(7) | RT_BIT(6) | RT_BIT(5))) 57 57 cb = 3; 58 else if ((uch & ( BIT(7) | BIT(6) | BIT(5) | BIT(4) | BIT(3))) == (BIT(7) | BIT(6) | BIT(5) |BIT(4)))58 else if ((uch & (RT_BIT(7) | RT_BIT(6) | RT_BIT(5) | RT_BIT(4) | RT_BIT(3))) == (RT_BIT(7) | RT_BIT(6) | RT_BIT(5) | RT_BIT(4))) 59 59 cb = 4; 60 else if ((uch & ( BIT(7) | BIT(6) | BIT(5) | BIT(4) | BIT(3) | BIT(2))) == (BIT(7) | BIT(6) | BIT(5) | BIT(4) |BIT(3)))60 else if ((uch & (RT_BIT(7) | RT_BIT(6) | RT_BIT(5) | RT_BIT(4) | RT_BIT(3) | RT_BIT(2))) == (RT_BIT(7) | RT_BIT(6) | RT_BIT(5) | RT_BIT(4) | RT_BIT(3))) 61 61 cb = 5; 62 else if ((uch & ( BIT(7) | BIT(6) | BIT(5) | BIT(4) | BIT(3) | BIT(2) | BIT(1))) == (BIT(7) | BIT(6) | BIT(5) | BIT(4) | BIT(3) |BIT(2)))62 else if ((uch & (RT_BIT(7) | RT_BIT(6) | RT_BIT(5) | RT_BIT(4) | RT_BIT(3) | RT_BIT(2) | RT_BIT(1))) == (RT_BIT(7) | RT_BIT(6) | RT_BIT(5) | RT_BIT(4) | RT_BIT(3) | RT_BIT(2))) 63 63 cb = 6; 64 64 else … … 79 79 { 80 80 case 6: 81 RTStrAssertMsgReturn((puch[5] & ( BIT(7) | BIT(6))) ==BIT(7), ("6/%u: %.*Rhxs\n", cb, RT_MIN(cb + 10, cch), puch), VERR_INVALID_UTF8_ENCODING);81 RTStrAssertMsgReturn((puch[5] & (RT_BIT(7) | RT_BIT(6))) == RT_BIT(7), ("6/%u: %.*Rhxs\n", cb, RT_MIN(cb + 10, cch), puch), VERR_INVALID_UTF8_ENCODING); 82 82 case 5: 83 RTStrAssertMsgReturn((puch[4] & ( BIT(7) | BIT(6))) ==BIT(7), ("5/%u: %.*Rhxs\n", cb, RT_MIN(cb + 10, cch), puch), VERR_INVALID_UTF8_ENCODING);83 RTStrAssertMsgReturn((puch[4] & (RT_BIT(7) | RT_BIT(6))) == RT_BIT(7), ("5/%u: %.*Rhxs\n", cb, RT_MIN(cb + 10, cch), puch), VERR_INVALID_UTF8_ENCODING); 84 84 case 4: 85 RTStrAssertMsgReturn((puch[3] & ( BIT(7) | BIT(6))) ==BIT(7), ("4/%u: %.*Rhxs\n", cb, RT_MIN(cb + 10, cch), puch), VERR_INVALID_UTF8_ENCODING);85 RTStrAssertMsgReturn((puch[3] & (RT_BIT(7) | RT_BIT(6))) == RT_BIT(7), ("4/%u: %.*Rhxs\n", cb, RT_MIN(cb + 10, cch), puch), VERR_INVALID_UTF8_ENCODING); 86 86 case 3: 87 RTStrAssertMsgReturn((puch[2] & ( BIT(7) | BIT(6))) ==BIT(7), ("3/%u: %.*Rhxs\n", cb, RT_MIN(cb + 10, cch), puch), VERR_INVALID_UTF8_ENCODING);87 RTStrAssertMsgReturn((puch[2] & (RT_BIT(7) | RT_BIT(6))) == RT_BIT(7), ("3/%u: %.*Rhxs\n", cb, RT_MIN(cb + 10, cch), puch), VERR_INVALID_UTF8_ENCODING); 88 88 case 2: 89 RTStrAssertMsgReturn((puch[1] & ( BIT(7) | BIT(6))) ==BIT(7), ("2/%u: %.*Rhxs\n", cb, RT_MIN(cb + 10, cch), puch), VERR_INVALID_UTF8_ENCODING);89 RTStrAssertMsgReturn((puch[1] & (RT_BIT(7) | RT_BIT(6))) == RT_BIT(7), ("2/%u: %.*Rhxs\n", cb, RT_MIN(cb + 10, cch), puch), VERR_INVALID_UTF8_ENCODING); 90 90 break; 91 91 } … … 194 194 195 195 /* decode and recode the code point */ 196 if (!(uch & BIT(7)))196 if (!(uch & RT_BIT(7))) 197 197 { 198 198 *pCp++ = uch; … … 201 201 } 202 202 #ifdef RT_STRICT 203 else if (!(uch & BIT(6)))203 else if (!(uch & RT_BIT(6))) 204 204 AssertMsgFailed(("Internal error!\n")); 205 205 #endif 206 else if (!(uch & BIT(5)))206 else if (!(uch & RT_BIT(5))) 207 207 { 208 208 *pCp++ = (puch[1] & 0x3f) … … 211 211 cch -= 2; 212 212 } 213 else if (!(uch & BIT(4)))213 else if (!(uch & RT_BIT(4))) 214 214 { 215 215 *pCp++ = (puch[2] & 0x3f) … … 219 219 cch -= 3; 220 220 } 221 else if (!(uch & BIT(3)))221 else if (!(uch & RT_BIT(3))) 222 222 { 223 223 *pCp++ = (puch[3] & 0x3f) … … 228 228 cch -= 4; 229 229 } 230 else if (!(uch & BIT(2)))230 else if (!(uch & RT_BIT(2))) 231 231 { 232 232 *pCp++ = (puch[4] & 0x3f) … … 240 240 else 241 241 { 242 Assert(!(uch & BIT(1)));242 Assert(!(uch & RT_BIT(1))); 243 243 *pCp++ = (puch[5] & 0x3f) 244 244 | ((RTUNICP)(puch[4] & 0x3f) << 6) … … 394 394 if (!uch) 395 395 break; 396 if (!(uch & BIT(7)))396 if (!(uch & RT_BIT(7))) 397 397 { 398 398 /* one ASCII byte */ … … 405 405 /* figure sequence length and validate the first byte */ 406 406 unsigned cb; 407 if ((uch & ( BIT(7) | BIT(6) | BIT(5))) == (BIT(7) |BIT(6)))407 if ((uch & (RT_BIT(7) | RT_BIT(6) | RT_BIT(5))) == (RT_BIT(7) | RT_BIT(6))) 408 408 cb = 2; 409 else if ((uch & ( BIT(7) | BIT(6) | BIT(5) | BIT(4))) == (BIT(7) | BIT(6) |BIT(5)))409 else if ((uch & (RT_BIT(7) | RT_BIT(6) | RT_BIT(5) | RT_BIT(4))) == (RT_BIT(7) | RT_BIT(6) | RT_BIT(5))) 410 410 cb = 3; 411 else if ((uch & ( BIT(7) | BIT(6) | BIT(5) | BIT(4) | BIT(3))) == (BIT(7) | BIT(6) | BIT(5) |BIT(4)))411 else if ((uch & (RT_BIT(7) | RT_BIT(6) | RT_BIT(5) | RT_BIT(4) | RT_BIT(3))) == (RT_BIT(7) | RT_BIT(6) | RT_BIT(5) | RT_BIT(4))) 412 412 cb = 4; 413 else if ((uch & ( BIT(7) | BIT(6) | BIT(5) | BIT(4) | BIT(3) | BIT(2))) == (BIT(7) | BIT(6) | BIT(5) | BIT(4) |BIT(3)))413 else if ((uch & (RT_BIT(7) | RT_BIT(6) | RT_BIT(5) | RT_BIT(4) | RT_BIT(3) | RT_BIT(2))) == (RT_BIT(7) | RT_BIT(6) | RT_BIT(5) | RT_BIT(4) | RT_BIT(3))) 414 414 cb = 5; 415 else if ((uch & ( BIT(7) | BIT(6) | BIT(5) | BIT(4) | BIT(3) | BIT(2) | BIT(1))) == (BIT(7) | BIT(6) | BIT(5) | BIT(4) | BIT(3) |BIT(2)))415 else if ((uch & (RT_BIT(7) | RT_BIT(6) | RT_BIT(5) | RT_BIT(4) | RT_BIT(3) | RT_BIT(2) | RT_BIT(1))) == (RT_BIT(7) | RT_BIT(6) | RT_BIT(5) | RT_BIT(4) | RT_BIT(3) | RT_BIT(2))) 416 416 cb = 6; 417 417 else … … 432 432 { 433 433 case 6: 434 RTStrAssertMsgReturn((puch[5] & ( BIT(7) | BIT(6))) ==BIT(7), ("6/%u: %.*Rhxs\n", cb, RT_MIN(cb + 10, cch), puch), VERR_INVALID_UTF8_ENCODING);434 RTStrAssertMsgReturn((puch[5] & (RT_BIT(7) | RT_BIT(6))) == RT_BIT(7), ("6/%u: %.*Rhxs\n", cb, RT_MIN(cb + 10, cch), puch), VERR_INVALID_UTF8_ENCODING); 435 435 case 5: 436 RTStrAssertMsgReturn((puch[4] & ( BIT(7) | BIT(6))) ==BIT(7), ("5/%u: %.*Rhxs\n", cb, RT_MIN(cb + 10, cch), puch), VERR_INVALID_UTF8_ENCODING);436 RTStrAssertMsgReturn((puch[4] & (RT_BIT(7) | RT_BIT(6))) == RT_BIT(7), ("5/%u: %.*Rhxs\n", cb, RT_MIN(cb + 10, cch), puch), VERR_INVALID_UTF8_ENCODING); 437 437 case 4: 438 RTStrAssertMsgReturn((puch[3] & ( BIT(7) | BIT(6))) ==BIT(7), ("4/%u: %.*Rhxs\n", cb, RT_MIN(cb + 10, cch), puch), VERR_INVALID_UTF8_ENCODING);438 RTStrAssertMsgReturn((puch[3] & (RT_BIT(7) | RT_BIT(6))) == RT_BIT(7), ("4/%u: %.*Rhxs\n", cb, RT_MIN(cb + 10, cch), puch), VERR_INVALID_UTF8_ENCODING); 439 439 case 3: 440 RTStrAssertMsgReturn((puch[2] & ( BIT(7) | BIT(6))) ==BIT(7), ("3/%u: %.*Rhxs\n", cb, RT_MIN(cb + 10, cch), puch), VERR_INVALID_UTF8_ENCODING);440 RTStrAssertMsgReturn((puch[2] & (RT_BIT(7) | RT_BIT(6))) == RT_BIT(7), ("3/%u: %.*Rhxs\n", cb, RT_MIN(cb + 10, cch), puch), VERR_INVALID_UTF8_ENCODING); 441 441 case 2: 442 RTStrAssertMsgReturn((puch[1] & ( BIT(7) | BIT(6))) ==BIT(7), ("2/%u: %.*Rhxs\n", cb, RT_MIN(cb + 10, cch), puch), VERR_INVALID_UTF8_ENCODING);442 RTStrAssertMsgReturn((puch[1] & (RT_BIT(7) | RT_BIT(6))) == RT_BIT(7), ("2/%u: %.*Rhxs\n", cb, RT_MIN(cb + 10, cch), puch), VERR_INVALID_UTF8_ENCODING); 443 443 break; 444 444 } … … 546 546 547 547 /* decode and recode the code point */ 548 if (!(uch & BIT(7)))548 if (!(uch & RT_BIT(7))) 549 549 { 550 550 *pwc++ = uch; … … 552 552 cch--; 553 553 } 554 else if ((uch & ( BIT(7) | BIT(6) | BIT(5))) == (BIT(7) |BIT(6)))554 else if ((uch & (RT_BIT(7) | RT_BIT(6) | RT_BIT(5))) == (RT_BIT(7) | RT_BIT(6))) 555 555 { 556 556 uint16_t uc = (puch[1] & 0x3f) … … 560 560 cch -= 2; 561 561 } 562 else if ((uch & ( BIT(7) | BIT(6) | BIT(5) | BIT(4))) == (BIT(7) | BIT(6) |BIT(5)))562 else if ((uch & (RT_BIT(7) | RT_BIT(6) | RT_BIT(5) | RT_BIT(4))) == (RT_BIT(7) | RT_BIT(6) | RT_BIT(5))) 563 563 { 564 564 uint16_t uc = (puch[2] & 0x3f) … … 572 572 { 573 573 /* generate surrugate pair */ 574 Assert((uch & ( BIT(7) | BIT(6) | BIT(5) | BIT(4) | BIT(3))) == (BIT(7) | BIT(6) | BIT(5) |BIT(4)));574 Assert((uch & (RT_BIT(7) | RT_BIT(6) | RT_BIT(5) | RT_BIT(4) | RT_BIT(3))) == (RT_BIT(7) | RT_BIT(6) | RT_BIT(5) | RT_BIT(4))); 575 575 RTUNICP uc = (puch[3] & 0x3f) 576 576 | ((RTUNICP)(puch[2] & 0x3f) << 6) … … 747 747 748 748 /* ASCII ? */ 749 if (!(uch & BIT(7)))749 if (!(uch & RT_BIT(7))) 750 750 { 751 751 uc = uch; 752 752 puch++; 753 753 } 754 else if (uch & BIT(6))754 else if (uch & RT_BIT(6)) 755 755 { 756 756 /* figure the length and validate the first octet. */ 757 757 unsigned cb; 758 if (!(uch & BIT(5)))758 if (!(uch & RT_BIT(5))) 759 759 cb = 2; 760 else if (!(uch & BIT(4)))760 else if (!(uch & RT_BIT(4))) 761 761 cb = 3; 762 else if (!(uch & BIT(3)))762 else if (!(uch & RT_BIT(3))) 763 763 cb = 4; 764 else if (!(uch & BIT(2)))764 else if (!(uch & RT_BIT(2))) 765 765 cb = 5; 766 else if (!(uch & BIT(1)))766 else if (!(uch & RT_BIT(1))) 767 767 cb = 6; 768 768 else … … 929 929 const unsigned char *puch = (const unsigned char *)psz; 930 930 unsigned uch = *--puch; 931 if (!(uch & BIT(7)))931 if (!(uch & RT_BIT(7))) 932 932 return (char *)puch; 933 RTStrAssertMsgReturn(!(uch & BIT(6)), ("uch=%#x\n", uch), (char *)pszStart);933 RTStrAssertMsgReturn(!(uch & RT_BIT(6)), ("uch=%#x\n", uch), (char *)pszStart); 934 934 935 935 /* two or more. */
Note:
See TracChangeset
for help on using the changeset viewer.