#[inline]
pub fn decode_int64(v: u64) -> i64 {
v as i64
}
#[inline]
pub fn decode_int32(v: u64) -> i32 {
(v as u32) as i32
}
#[inline]
pub fn decode_uint32(v: u64) -> u32 {
v as u32
}
#[inline]
pub fn decode_uint64(v: u64) -> u64 {
v
}
#[inline]
pub fn decode_bool(v: u64) -> bool {
v != 0
}
#[inline]
pub fn decode_sint32(v: u64) -> i32 {
let n = v as u32;
((n >> 1) as i32) ^ -((n & 1) as i32)
}
#[inline]
pub fn decode_sint64(v: u64) -> i64 {
((v >> 1) as i64) ^ -((v & 1) as i64)
}
#[inline]
pub fn decode_fixed32(data: &[u8]) -> u32 {
u32::from_le_bytes(data[..4].try_into().unwrap())
}
#[inline]
pub fn decode_sfixed32(data: &[u8]) -> i32 {
i32::from_le_bytes(data[..4].try_into().unwrap())
}
#[inline]
pub fn decode_float(data: &[u8]) -> f32 {
f32::from_le_bytes(data[..4].try_into().unwrap())
}
#[inline]
pub fn decode_fixed64(data: &[u8]) -> u64 {
u64::from_le_bytes(data[..8].try_into().unwrap())
}
#[inline]
pub fn decode_sfixed64(data: &[u8]) -> i64 {
i64::from_le_bytes(data[..8].try_into().unwrap())
}
#[inline]
pub fn decode_double(data: &[u8]) -> f64 {
f64::from_le_bytes(data[..8].try_into().unwrap())
}