putil: Improve SparseArray output printing

This commit is contained in:
rdb 2021-07-04 16:35:11 +02:00
parent 0c5fedfc9b
commit 77f486a07b

View File

@ -215,18 +215,25 @@ has_bits_in_common(const SparseArray &other) const {
*/ */
void SparseArray:: void SparseArray::
output(std::ostream &out) const { output(std::ostream &out) const {
if (_subranges.empty()) {
out << (_inverse ? "[ all ]" : "[ ]");
return;
}
out << "[ "; out << "[ ";
if (_inverse) { if (_inverse) {
out << "all except: "; out << "all except: ";
} }
Subranges::const_iterator si; Subranges::const_iterator si;
for (si = _subranges.begin(); si != _subranges.end(); ++si) { for (si = _subranges.begin(); si != _subranges.end(); ++si) {
if (si != _subranges.begin()) {
out << ", ";
}
if ((*si)._end == (*si)._begin + 1) { if ((*si)._end == (*si)._begin + 1) {
// A single element. // A single element.
out << (*si)._begin << ", "; out << (*si)._begin;
} else { } else {
// A range of elements. // A range of elements.
out << (*si)._begin << "-" << ((*si)._end - 1) << ", "; out << (*si)._begin << "-" << ((*si)._end - 1);
} }
} }
out << " ]"; out << " ]";