smdton 0.1.0

Data Tree Object Notation
Documentation
macro_rules! def_num_copy {
    ($src: expr, $off: expr, $tgt: expr, $len: expr, $dty: ty) => {
        let bytes: [u8; $len] = $src[$off..$off + $len].try_into().unwrap();
        return <$dty>::from_le_bytes(bytes) as usize;
    };
}

#[inline]
pub fn getblkz(bv: usize, num: usize) -> u8 {
    if bv + num < 256 {
        return 1;
    } else if bv + 2 * num < 65536 {
        return 2;
    } else {
        return 4;
    }
}

#[inline]
pub fn get_int(u8a: &[u8], offset: usize, oz: usize) -> usize {
    match oz {
        1 => {
            return u8a[offset] as usize;
        }
        2 => {
            def_num_copy!(u8a, offset, bytes, 2, u16);
        }
        4 => {
            def_num_copy!(u8a, offset, bytes, 4, u32);
        }
        _ => {}
    }
    return 0;
}