deimos-lang/src/vm/util.rs
2024-11-29 22:35:01 -06:00

37 lines
1.1 KiB
Rust

#[macro_export]
macro_rules! get_32_le {
( $bytes: expr, $base: expr, $offset: literal, $T: ident ) => {
$bytes[$base + $offset] as $T
+ (($bytes[$base + $offset + 1] as $T) << 8)
+ (($bytes[$base + $offset + 2] as $T) << 16)
+ (($bytes[$base + $offset + 3] as $T) << 24)
};
}
#[macro_export]
macro_rules! get_64_le {
( $bytes: expr, $base: expr, $offset: literal, $T: ident ) => {
$bytes[$base + $offset] as $T
+ (($bytes[$base + $offset + 1] as $T) << 8)
+ (($bytes[$base + $offset + 2] as $T) << 16)
+ (($bytes[$base + $offset + 3] as $T) << 24)
+ (($bytes[$base + $offset + 4] as $T) << 32)
+ (($bytes[$base + $offset + 5] as $T) << 40)
+ (($bytes[$base + $offset + 6] as $T) << 48)
+ (($bytes[$base + $offset + 7] as $T) << 56)
};
}
#[macro_export]
macro_rules! push_bytes {
( $dest: expr, $src: expr ) => {
for b in $src {
$dest.push(b);
}
};
}
pub use get_32_le;
pub use get_64_le;
pub use push_bytes;