Improve handling of alignment

This commit is contained in:
Victor Zverovich 2020-05-03 10:58:18 -07:00
parent 8efd1a8ef6
commit 8d9d528bf5

View File

@ -1665,17 +1665,12 @@ template <typename Range> class basic_writer {
return; return;
} }
if (specs.align == align::none) { if (specs.align == align::numeric && fspecs.sign) {
specs.align = align::right;
} else if (specs.align == align::numeric) {
if (fspecs.sign) {
auto&& it = reserve(1); auto&& it = reserve(1);
*it++ = static_cast<char_type>(data::signs[fspecs.sign]); *it++ = static_cast<char_type>(data::signs[fspecs.sign]);
fspecs.sign = sign::none; fspecs.sign = sign::none;
if (specs.width != 0) --specs.width; if (specs.width != 0) --specs.width;
} }
specs.align = align::right;
}
memory_buffer buffer; memory_buffer buffer;
if (fspecs.format == float_format::hex) { if (fspecs.format == float_format::hex) {
@ -1698,7 +1693,7 @@ template <typename Range> class basic_writer {
: static_cast<char_type>('.'); : static_cast<char_type>('.');
float_writer<char_type> w(buffer.data(), static_cast<int>(buffer.size()), float_writer<char_type> w(buffer.data(), static_cast<int>(buffer.size()),
exp, fspecs, point); exp, fspecs, point);
out_ = write_padded(out_, specs, w.size(), w); out_ = write_padded<align::right>(out_, specs, w.size(), w);
} }
void write(char value) { void write(char value) {