squash_sys/
lib.rs

1#![allow(non_upper_case_globals)]
2#![allow(non_camel_case_types)]
3#![allow(non_snake_case)]
4
5pub use libc::{wchar_t, FILE};
6
7use libc::c_uint;
8
9include!("bindings.rs");
10
11/// Current version, encoded as a single number
12pub const SQUASH_VERSION_CURRENT: c_uint = SQUASH_VERSION(
13    SQUASH_VERSION_MAJOR as u8,
14    SQUASH_VERSION_MINOR as u8,
15    SQUASH_VERSION_REVISION as u8,
16);
17
18/// Encode the major, minor, and revisions into a single number
19///
20/// # Parameters
21/// * `major` Major version number
22/// * `minor` Minor version number
23/// * `revision` Revision number
24///
25/// # Returns
26/// Encoded version
27pub const fn SQUASH_VERSION(major: u8, minor: u8, revision: u8) -> c_uint {
28    ((major as c_uint) << 16) | ((minor as c_uint) << 8) | (revision as c_uint)
29}
30
31/// Extract the major version number from an encoded version
32pub const fn SQUASH_VERSION_EXTRACT_MAJOR(version: c_uint) -> u8 {
33    ((version >> 16) & 0xff) as u8
34}
35
36/// Extract the minor version number from an encoded version
37pub const fn SQUASH_VERSION_EXTRACT_MINOR(version: c_uint) -> u8 {
38    ((version >> 8) & 0xff) as u8
39}
40
41/// Extract the revsion number from an encoded version
42pub const fn SQUASH_VERSION_EXTRACT_REVISION(version: c_uint) -> u8 {
43    (version & 0xff) as u8
44}