MCPcopy Create free account
hub / github.com/chen3feng/toft / WriteNumberString

Function WriteNumberString

base/string/format/print_arg.cpp:43–97  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

41}
42
43static int WriteNumberString(FormatPrintTarget* target,
44 const PrintSpecification& spec,
45 char sign,
46 const char* prefix, int prefix_length,
47 int leading_zeros,
48 const char* digits, int digits_length,
49 int padding_zeros,
50 const char* exp, int exp_length
51)
52{
53 int num_size = (sign != '\0') + prefix_length + leading_zeros +
54 digits_length + padding_zeros + exp_length;
55
56 if (!spec.has_width() || spec.width <= num_size) {
57 if (sign)
58 target->WriteChar(sign);
59 target->WriteString(prefix, prefix_length);
60 target->WriteChars('0', leading_zeros);
61 target->WriteString(digits, digits_length);
62 target->WriteChars('0', padding_zeros);
63 target->WriteString(exp, exp_length);
64 return num_size;
65 }
66
67 int fill_count = spec.width - num_size;
68
69 if (spec.flags.left) {
70 if (sign) target->WriteChar(sign);
71 target->WriteString(prefix, prefix_length);
72 target->WriteChars('0', leading_zeros);
73 target->WriteString(digits, digits_length);
74 target->WriteChars('0', padding_zeros);
75 target->WriteString(exp, exp_length);
76 target->WriteChars(' ', fill_count);
77 } else {
78 if (spec.flags.zero) {
79 if (sign) target->WriteChar(sign);
80 target->WriteString(prefix, prefix_length);
81 target->WriteChars('0', fill_count + leading_zeros);
82 target->WriteString(digits, digits_length);
83 target->WriteChars('0', padding_zeros);
84 target->WriteString(exp, exp_length);
85 } else {
86 target->WriteChars(' ', fill_count);
87 if (sign) target->WriteChar(sign);
88 target->WriteString(prefix, prefix_length);
89 target->WriteChars('0', leading_zeros);
90 target->WriteString(digits, digits_length);
91 target->WriteChars('0', padding_zeros);
92 target->WriteString(exp, exp_length);
93 }
94 }
95
96 return spec.width;
97}
98
99template <int Base, typename T>
100static char* UnsignedToString(T value, char* buffer, const char* digits_table)

Callers 3

WriteSignedFunction · 0.85
WriteUnsignedFunction · 0.85
WriteFloatFunction · 0.85

Calls 4

has_widthMethod · 0.80
WriteStringMethod · 0.80
WriteCharsMethod · 0.80
WriteCharMethod · 0.45

Tested by

no test coverage detected