macro_rules! decode_sint_arr {
($func:ident, $num_ty:ty, $bits:literal) => { ... };
}
Expand description
Builds custom signed integer decode functions.
The macro’s 3 parameters are:
- The name of the function.
- The type to return.
- The number of encoded BITS to decode.
leb128fmt::decode_sint_arr!(decode_s33, i64, 33);
let input = [0xFF, 0xFF, 0xFF, 0xFF, 0x0F];
let result = decode_s33(input);
assert_eq!(Some((4_294_967_295, 5)), result);
let input = [0x7F, 0x00, 0x00, 0x00, 0x00];
let result = decode_s33(input);
assert_eq!(Some((-1, 1)), result);
let input = [0xFF, 0xFF, 0xFF, 0xFF, 0x7F];
let result = decode_s33(input);
assert_eq!(Some((-1, 5)), result);
let input = [0xFF, 0xFF, 0xFF, 0xFF, 0x1F];
let result = decode_s33(input);
assert_eq!(None, result);