pub mod v2_7_15;
pub mod v3_3_7;
pub mod v3_5_5;
pub mod v3_6_6;
pub mod v3_7_0;
pub mod v3_8_0;
pub mod pyruntime {
use crate::version::Version;
#[cfg(target_pointer_width = "32")]
pub fn get_interp_head_offset(version: &Version) -> usize {
match version {
Version{major: 3, minor: 8, patch: 0, ..} => {
match version.release_flags.as_ref() {
"a1" | "a2" => 16,
_ => 20
}
},
Version{major: 3, minor: 8..=9, ..} => 20,
_ => 16
}
}
#[cfg(target_pointer_width = "64")]
pub fn get_interp_head_offset(version: &Version) -> usize {
match version {
Version{major: 3, minor: 8, patch: 0, ..} => {
match version.release_flags.as_ref() {
"a1" | "a2" => 24,
_ => 32
}
},
Version{major: 3, minor: 8..=9, ..} => 32,
_ => 24
}
}
#[cfg(target_os="macos")]
pub fn get_tstate_current_offset(version: &Version) -> Option<usize> {
match version {
Version{major: 3, minor: 7, patch: 0..=3, ..} => Some(1440),
Version{major: 3, minor: 7, patch: 4..=6, ..} => Some(1528),
Version{major: 3, minor: 8, patch: 0, ..} => {
match version.release_flags.as_ref() {
"a1" => Some(1432),
"a2" => Some(888),
"a3" | "a4" => Some(1448),
_ => Some(1416),
}
},
Version{major: 3, minor: 8, patch: 1, ..} => { Some(1416) },
_ => None
}
}
#[cfg(all(target_os="linux", target_pointer_width = "32"))]
pub fn get_tstate_current_offset(version: &Version) -> Option<usize> {
match version {
Version{major: 3, minor: 7, patch: 0..=6, ..} => Some(796),
Version{major: 3, minor: 8, patch: 0, ..} => {
match version.release_flags.as_ref() {
"a1" => Some(792),
"a2" => Some(512),
"a3" | "a4" => Some(800),
_ => Some(788)
}
},
Version{major: 3, minor: 8, patch: 1, ..} => Some(788),
_ => None
}
}
#[cfg(all(target_os="linux", target_pointer_width = "64"))]
pub fn get_tstate_current_offset(version: &Version) -> Option<usize> {
match version {
Version{major: 3, minor: 7, patch: 0..=3, ..} => Some(1392),
Version{major: 3, minor: 7, patch: 4..=6, ..} => Some(1480),
Version{major: 3, minor: 8, patch: 0, ..} => {
match version.release_flags.as_ref() {
"a1" => Some(1384),
"a2" => Some(840),
"a3" | "a4" => Some(1400),
_ => Some(1368)
}
},
Version{major: 3, minor: 8, patch: 1, ..} => Some(1368),
_ => None
}
}
#[cfg(windows)]
pub fn get_tstate_current_offset(version: &Version) -> Option<usize> {
match version {
Version{major: 3, minor: 7, patch: 0..=3, ..} => Some(1320),
Version{major: 3, minor: 8, patch: 0, ..} => {
match version.release_flags.as_ref() {
"a1" => Some(1312),
"a2" => Some(768),
"a3" | "a4" => Some(1328),
_ => Some(1296)
}
},
Version{major: 3, minor: 8, patch: 1, ..} => Some(1296),
_ => None
}
}
#[cfg(target_os="freebsd")]
pub fn get_tstate_current_offset(version: &Version) -> Option<usize> {
match version {
Version{major: 3, minor: 7, patch: 0..=3, ..} => Some(1248),
Version{major: 3, minor: 7, patch: 4..=6, ..} => Some(1336),
Version{major: 3, minor: 8, patch: 0, ..} => {
match version.release_flags.as_ref() {
"a1" => Some(1240),
"a2" => Some(696),
"a3" | "a4" => Some(1256),
_ => Some(1224)
}
},
Version{major: 3, minor: 8, patch: 1, ..} => Some(1224),
_ => None
}
}
}