Skip to main content

z3/
version.rs

1use std::ffi::CStr;
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default)]
4pub struct Version {
5    major: u32,
6    minor: u32,
7    build_number: u32,
8    revision_number: u32,
9}
10
11pub fn version() -> Version {
12    let mut ver = Version::default();
13    unsafe {
14        z3_sys::Z3_get_version(
15            &mut ver.major,
16            &mut ver.minor,
17            &mut ver.build_number,
18            &mut ver.revision_number,
19        );
20    }
21    ver
22}
23
24pub fn full_version() -> &'static str {
25    let ver_ptr = unsafe { z3_sys::Z3_get_full_version() };
26    let ver = unsafe { CStr::from_ptr(ver_ptr) };
27    ver.to_str()
28        .expect("Z3_get_full_version returned non-UTF-8 characters")
29}