MCPcopy Create free account
hub / github.com/apache/fory / _write_var_u64

Method _write_var_u64

rust/fory-core/src/buffer.rs:272–368  ·  view source on GitHub ↗
(&mut self, value: u64)

Source from the content-addressed store, hash-verified

270
271 #[inline(always)]
272 fn _write_var_u64(&mut self, value: u64) {
273 if value < 0x80 {
274 self.bf.push(value as u8);
275 } else if value < 0x4000 {
276 let u1 = ((value as u8) & 0x7F) | 0x80;
277 let u2 = (value >> 7) as u8;
278 self.write_u16(((u2 as u16) << 8) | u1 as u16);
279 } else if value < 0x200000 {
280 let u1 = ((value as u8) & 0x7F) | 0x80;
281 let u2 = (((value >> 7) as u8) & 0x7F) | 0x80;
282 let u3 = (value >> 14) as u8;
283 self.write_u16(((u2 as u16) << 8) | u1 as u16);
284 self.bf.push(u3);
285 } else if value < 0x10000000 {
286 let u1 = ((value as u8) & 0x7F) | 0x80;
287 let u2 = (((value >> 7) as u8) & 0x7F) | 0x80;
288 let u3 = (((value >> 14) as u8) & 0x7F) | 0x80;
289 let u4 = (value >> 21) as u8;
290 self.write_u32(
291 ((u4 as u32) << 24) | ((u3 as u32) << 16) | ((u2 as u32) << 8) | u1 as u32,
292 );
293 } else if value < 0x800000000 {
294 let u1 = ((value as u8) & 0x7F) | 0x80;
295 let u2 = (((value >> 7) as u8) & 0x7F) | 0x80;
296 let u3 = (((value >> 14) as u8) & 0x7F) | 0x80;
297 let u4 = (((value >> 21) as u8) & 0x7F) | 0x80;
298 let u5 = (value >> 28) as u8;
299 self.write_u32(
300 ((u4 as u32) << 24) | ((u3 as u32) << 16) | ((u2 as u32) << 8) | u1 as u32,
301 );
302 self.bf.push(u5);
303 } else if value < 0x40000000000 {
304 let u1 = ((value as u8) & 0x7F) | 0x80;
305 let u2 = (((value >> 7) as u8) & 0x7F) | 0x80;
306 let u3 = (((value >> 14) as u8) & 0x7F) | 0x80;
307 let u4 = (((value >> 21) as u8) & 0x7F) | 0x80;
308 let u5 = (((value >> 28) as u8) & 0x7F) | 0x80;
309 let u6 = (value >> 35) as u8;
310 self.write_u32(
311 ((u4 as u32) << 24) | ((u3 as u32) << 16) | ((u2 as u32) << 8) | u1 as u32,
312 );
313 self.write_u16(((u6 as u16) << 8) | u5 as u16);
314 } else if value < 0x2000000000000 {
315 let u1 = ((value as u8) & 0x7F) | 0x80;
316 let u2 = (((value >> 7) as u8) & 0x7F) | 0x80;
317 let u3 = (((value >> 14) as u8) & 0x7F) | 0x80;
318 let u4 = (((value >> 21) as u8) & 0x7F) | 0x80;
319 let u5 = (((value >> 28) as u8) & 0x7F) | 0x80;
320 let u6 = (((value >> 35) as u8) & 0x7F) | 0x80;
321 let u7 = (value >> 42) as u8;
322 self.write_u32(
323 ((u4 as u32) << 24) | ((u3 as u32) << 16) | ((u2 as u32) << 8) | u1 as u32,
324 );
325 self.write_u16(((u6 as u16) << 8) | u5 as u16);
326 self.bf.push(u7);
327 } else if value < 0x100000000000000 {
328 let u1 = ((value as u8) & 0x7F) | 0x80;
329 let u2 = (((value >> 7) as u8) & 0x7F) | 0x80;

Callers 2

write_var_i64Method · 0.80
write_var_u64Method · 0.80

Calls 3

write_u16Method · 0.80
write_u32Method · 0.80
write_u64Method · 0.80

Tested by

no test coverage detected