MCPcopy Create free account
hub / github.com/baidu/tera / OutputUInt32AsString

Function OutputUInt32AsString

src/common/base/string_number.cc:398–470  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

396
397template <typename OutputIterator>
398static 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

Callers 5

OutputInt32AsStringFunction · 0.85
OutputUInt64AsStringFunction · 0.85
OutputIntegerAsStringFunction · 0.85
WriteUInt32ToBufferFunction · 0.85
UInt32ToStringFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected