132 const char *hex_chars = use_uppercase ? hex_upper : hex_lower;
134#if FMT_VERSION < 60000
135 auto inserter = ctx.begin();
137 auto inserter = ctx.out();
140 int size_per_line =
static_cast<int>(the_range.size_per_line());
141 auto start_of_line = the_range.begin();
142 for (
auto i = the_range.begin(); i != the_range.end(); i++)
144 auto ch =
static_cast<unsigned char>(*i);
146 if (put_newlines && (i == the_range.begin() || i - start_of_line >= size_per_line))
148 if (show_ascii && i != the_range.begin())
150 *inserter++ = delimiter;
151 *inserter++ = delimiter;
152 for (
auto j = start_of_line; j < i; j++)
154 auto pc =
static_cast<unsigned char>(*j);
155 *inserter++ =
std::isprint(pc) ?
static_cast<char>(*j) :
'.';
159 put_newline(inserter,
static_cast<size_t>(i - the_range.begin()));
162 *inserter++ = hex_chars[(ch >> 4) & 0x0f];
163 *inserter++ = hex_chars[ch & 0x0f];
170 *inserter++ = delimiter;
173 *inserter++ = hex_chars[(ch >> 4) & 0x0f];
174 *inserter++ = hex_chars[ch & 0x0f];
178 if (the_range.end() - the_range.begin() > size_per_line)
180 auto blank_num = size_per_line - (the_range.end() - start_of_line);
181 while (blank_num-- > 0)
183 *inserter++ = delimiter;
184 *inserter++ = delimiter;
187 *inserter++ = delimiter;
191 *inserter++ = delimiter;
192 *inserter++ = delimiter;
193 for (
auto j = start_of_line; j != the_range.end(); j++)
195 auto pc =
static_cast<unsigned char>(*j);
196 *inserter++ =
std::isprint(pc) ?
static_cast<char>(*j) :
'.';