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}