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

Method _write_var_u32

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

Source from the content-addressed store, hash-verified

209
210 #[inline(always)]
211 fn _write_var_u32(&mut self, value: u32) {
212 if value < 0x80 {
213 self.bf.push(value as u8);
214 } else if value < 0x4000 {
215 // 2 bytes
216 let u1 = ((value as u8) & 0x7F) | 0x80;
217 let u2 = (value >> 7) as u8;
218 self.write_u16(((u2 as u16) << 8) | u1 as u16);
219 } else if value < 0x200000 {
220 // 3 bytes
221 let u1 = ((value as u8) & 0x7F) | 0x80;
222 let u2 = (((value >> 7) as u8) & 0x7F) | 0x80;
223 let u3 = (value >> 14) as u8;
224 self.write_u16(((u2 as u16) << 8) | u1 as u16);
225 self.bf.push(u3);
226 } else if value < 0x10000000 {
227 // 4 bytes
228 let u1 = ((value as u8) & 0x7F) | 0x80;
229 let u2 = (((value >> 7) as u8) & 0x7F) | 0x80;
230 let u3 = (((value >> 14) as u8) & 0x7F) | 0x80;
231 let u4 = (value >> 21) as u8;
232 self.write_u32(
233 ((u4 as u32) << 24) | ((u3 as u32) << 16) | ((u2 as u32) << 8) | u1 as u32,
234 );
235 } else {
236 // 5 bytes
237 let u1 = ((value as u8) & 0x7F) | 0x80;
238 let u2 = (((value >> 7) as u8) & 0x7F) | 0x80;
239 let u3 = (((value >> 14) as u8) & 0x7F) | 0x80;
240 let u4 = (((value >> 21) as u8) & 0x7F) | 0x80;
241 let u5 = (value >> 28) as u8;
242 self.write_u32(
243 ((u4 as u32) << 24) | ((u3 as u32) << 16) | ((u2 as u32) << 8) | u1 as u32,
244 );
245 self.bf.push(u5);
246 }
247 }
248
249 // ============ UINT64 (TypeId = 13) ============
250

Callers 2

write_var_i32Method · 0.80
write_var_u32Method · 0.80

Calls 2

write_u16Method · 0.80
write_u32Method · 0.80

Tested by

no test coverage detected