34 #include <type_traits> 66 template<
typename OutputIt,
typename T>
68 typename std::enable_if<std::is_integral<T>::value && std::is_unsigned<T>::value,
void>::type
72 *
dest = (
static_cast<char>(i) & 0x7f) | 0x80;
77 *
dest =
static_cast<char>(i);
92 template<
int bits,
typename InputIt,
typename T>
93 typename std::enable_if<std::is_integral<T>::value && std::is_unsigned<T>::value && 0 <=
bits && bits <= std::numeric_limits<T>::digits,
int>::type
94 read_varint(InputIt &&first, InputIt &&last,
T &write) {
97 for (
int shift = 0;; shift += 7) {
101 unsigned char byte = *first;
104 if (shift + 7 >=
bits && byte >= 1 << (
bits - shift)) {
107 if (byte == 0 && shift != 0) {
111 write |=
static_cast<T>(byte & 0x7f) << shift;
114 if ((byte & 0x80) == 0) {
124 template<
typename InputIt,
typename T>
125 int read_varint(InputIt &&first, InputIt &&last,
T &i) {
126 return read_varint<std::numeric_limits<T>::digits, InputIt,
T>(std::move(first), std::move(last), i);
const uint32_t T[512]
Definition: groestl_tables.h:33
CXA_THROW_INFO_T void(* dest)(void *))
Definition: stack_trace.cpp:90
unsigned int bits[ATOMS]
Definition: rctTypes.h:139