| 396 | |
| 397 | template <typename OutputIterator> |
| 398 | static OutputIterator OutputUInt32AsString(uint32_t u, OutputIterator output) { |
| 399 | int digits; |
| 400 | const char* ASCII_digits = NULL; |
| 401 | if (u >= 1000000000) // >= 1,000,000,000 |
| 402 | { |
| 403 | digits = u / 100000000; // 100,000,000 |
| 404 | ASCII_digits = two_ASCII_digits[digits]; |
| 405 | *output++ = ASCII_digits[0]; |
| 406 | *output++ = ASCII_digits[1]; |
| 407 | sublt100_000_000: |
| 408 | u -= digits * 100000000; // 100,000,000 |
| 409 | lt100_000_000: |
| 410 | digits = u / 1000000; // 1,000,000 |
| 411 | ASCII_digits = two_ASCII_digits[digits]; |
| 412 | *output++ = ASCII_digits[0]; |
| 413 | *output++ = ASCII_digits[1]; |
| 414 | sublt1_000_000: |
| 415 | u -= digits * 1000000; // 1,000,000 |
| 416 | lt1_000_000: |
| 417 | digits = u / 10000; // 10,000 |
| 418 | ASCII_digits = two_ASCII_digits[digits]; |
| 419 | *output++ = ASCII_digits[0]; |
| 420 | *output++ = ASCII_digits[1]; |
| 421 | sublt10_000: |
| 422 | u -= digits * 10000; // 10,000 |
| 423 | lt10_000: |
| 424 | digits = u / 100; |
| 425 | ASCII_digits = two_ASCII_digits[digits]; |
| 426 | *output++ = ASCII_digits[0]; |
| 427 | *output++ = ASCII_digits[1]; |
| 428 | sublt100: |
| 429 | u -= digits * 100; |
| 430 | lt100: |
| 431 | digits = u; |
| 432 | ASCII_digits = two_ASCII_digits[digits]; |
| 433 | *output++ = ASCII_digits[0]; |
| 434 | *output++ = ASCII_digits[1]; |
| 435 | done: |
| 436 | return output; |
| 437 | } |
| 438 | |
| 439 | if (u < 100) { |
| 440 | digits = u; |
| 441 | if (u >= 10) goto lt100; |
| 442 | *output++ = '0' + digits; |
| 443 | goto done; |
| 444 | } |
| 445 | if (u < 10000) // 10,000 |
| 446 | { |
| 447 | if (u >= 1000) goto lt10_000; |
| 448 | digits = u / 100; |
| 449 | *output++ = '0' + digits; |
| 450 | goto sublt100; |
| 451 | } |
| 452 | if (u < 1000000) // 1,000,000 |
| 453 | { |
| 454 | if (u >= 100000) goto lt1_000_000; |
| 455 | digits = u / 10000; // 10,000 |
no outgoing calls
no test coverage detected