Skip to main content

il2cpp_dumper/io/
version_aware.rs

1#[derive(Debug, Clone, Copy)]
2pub struct VersionRange {
3    pub min: f64,
4    pub max: f64,
5}
6
7impl VersionRange {
8    pub const fn new(min: f64, max: f64) -> Self {
9        Self { min, max }
10    }
11
12    pub fn contains(&self, version: f64) -> bool {
13        version >= self.min && version <= self.max
14    }
15}
16
17impl Default for VersionRange {
18    fn default() -> Self {
19        Self { min: 0.0, max: 999.0 }
20    }
21}
22
23#[macro_export]
24macro_rules! read_versioned {
25    ($stream:expr, $version:expr, $min:expr, $max:expr, $read_fn:ident) => {
26        if $version >= $min && $version <= $max {
27            $stream.$read_fn()?
28        } else {
29            Default::default()
30        }
31    };
32    ($stream:expr, $version:expr, $min:expr, $max:expr, $read_fn:ident, $default:expr) => {
33        if $version >= $min && $version <= $max {
34            $stream.$read_fn()?
35        } else {
36            $default
37        }
38    };
39}
40
41#[macro_export]
42macro_rules! size_versioned {
43    ($version:expr, $min:expr, $max:expr, $size:expr) => {
44        if $version >= $min && $version <= $max {
45            $size
46        } else {
47            0
48        }
49    };
50}