TOutputIterator operator()

in fatal/codec/varint.h [268:292]


    TOutputIterator operator ()(
      TOutputIterator begin,
      TOutputIterator const end
    ) noexcept {
      using traits = detail::varint_impl::data_traits<
        typename std::iterator_traits<TOutputIterator>::value_type
      >;
      using unsigned_unit = typename traits::unsigned_unit;

      for (; begin != end; std::advance(begin, 1)) {
        unsigned_unit data = value_ & traits::filter_mask::value;

        value_ >>= traits::payload_size::value;

        if (value_) {
          *begin = traits::to(data | traits::continuation_bit::value);
        } else {
          *begin = traits::to(data);
          continued_ = false;
          return std::next(begin);
        }
      }

      return begin;
    }