readLong method
Read long/int from buffer
Implementation
int readLong() {
// Converted to dart from js avsc library
int n = 0;
int k = 0;
int b;
int h;
int f;
int fk;
do {
b = next(1)[0];
h = b & 0x80;
n |= (b & 0x7f) << k;
k += 7;
} while (h != 0 && k < 28);
if (h != 0) {
// Switch to float arithmetic, otherwise we might overflow.
f = n;
fk = 268435456; // 2 ** 28.
do {
b = next(1)[0];
f += (b & 0x7f) * fk;
fk *= 128;
} while ((b & 0x80) != 0);
return ((f % 2) != 0 ? -(f + 1) : f) ~/ 2;
}
return (n >> 1) ^ -(n & 1);
}