MCPcopy Create free account
hub / github.com/catboost/catboost / FormatCompactIntervalRange

Function FormatCompactIntervalRange

library/cpp/yt/string/format-inl.h:244–276  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

242
243template <class TRange, class TValueGetter, class TIntervalFormatter>
244void FormatCompactIntervalRange(
245 TStringBuilderBase* builder,
246 const TRange& range,
247 const TValueGetter& valueGetter,
248 const TIntervalFormatter& intervalFormatter)
249{
250 if (range.begin() == range.end()) {
251 builder->AppendString("[]");
252 return;
253 }
254
255 builder->AppendChar('[');
256
257 auto first = range.begin();
258 auto last = first;
259 auto current = std::next(first);
260
261 while (current != range.end()) {
262 if (valueGetter(current) != valueGetter(last) + 1) {
263 bool firstInterval = first == range.begin();
264 intervalFormatter(builder, first, last, valueGetter, firstInterval);
265 first = current;
266 }
267
268 last = current;
269 ++current;
270 }
271
272 bool firstInterval = first == range.begin();
273 intervalFormatter(builder, first, last, valueGetter, firstInterval);
274
275 builder->AppendChar(']');
276}
277
278////////////////////////////////////////////////////////////////////////////////
279

Callers 1

FormatValueFunction · 0.85

Calls 5

AppendCharMethod · 0.80
nextFunction · 0.50
beginMethod · 0.45
endMethod · 0.45
AppendStringMethod · 0.45

Tested by

no test coverage detected