MCPcopy Create free account
hub / github.com/apache/impala / FastUInt64ToBufferLeft

Function FastUInt64ToBufferLeft

be/src/gutil/strings/numbers.cc:1023–1063  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1021}
1022
1023char* FastUInt64ToBufferLeft(uint64 u64, char* buffer) {
1024 uint digits;
1025 const char *ASCII_digits = nullptr;
1026
1027 uint32 u = static_cast<uint32>(u64);
1028 if (u == u64) return FastUInt32ToBufferLeft(u, buffer);
1029
1030 uint64 top_11_digits = u64 / 1000000000;
1031 buffer = FastUInt64ToBufferLeft(top_11_digits, buffer);
1032 u = u64 - (top_11_digits * 1000000000);
1033
1034 digits = u / 10000000; // 10,000,000
1035 DCHECK_LT(digits, 100);
1036 ASCII_digits = two_ASCII_digits[digits];
1037 buffer[0] = ASCII_digits[0];
1038 buffer[1] = ASCII_digits[1];
1039 buffer += 2;
1040 u -= digits * 10000000; // 10,000,000
1041 digits = u / 100000; // 100,000
1042 ASCII_digits = two_ASCII_digits[digits];
1043 buffer[0] = ASCII_digits[0];
1044 buffer[1] = ASCII_digits[1];
1045 buffer += 2;
1046 u -= digits * 100000; // 100,000
1047 digits = u / 1000; // 1,000
1048 ASCII_digits = two_ASCII_digits[digits];
1049 buffer[0] = ASCII_digits[0];
1050 buffer[1] = ASCII_digits[1];
1051 buffer += 2;
1052 u -= digits * 1000; // 1,000
1053 digits = u / 10;
1054 ASCII_digits = two_ASCII_digits[digits];
1055 buffer[0] = ASCII_digits[0];
1056 buffer[1] = ASCII_digits[1];
1057 buffer += 2;
1058 u -= digits * 10;
1059 digits = u;
1060 *buffer++ = '0' + digits;
1061 *buffer = 0;
1062 return buffer;
1063}
1064
1065char* FastInt64ToBufferLeft(int64 i, char* buffer) {
1066 uint64 u = i;

Callers 6

AlphaNumMethod · 0.85
SubstituteArgMethod · 0.85
FastInt64ToBufferLeftFunction · 0.85
FastUInt128ToBufferLeftFunction · 0.85
FastUInt64ToBufferFunction · 0.85
SimpleItoaFunction · 0.85

Calls 1

FastUInt32ToBufferLeftFunction · 0.85

Tested by

no test coverage detected