il2cpp_dumper/io/
version_aware.rs1#[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}