use std::ffi::OsString;

mod flags {
    use std::{ffi::OsString, path::PathBuf};

    xflags::xflags! {
        cmd Cmd {
            required a: OsString
            required b: PathBuf
            required c: String
        }
    }
}

#[cfg(unix)]
fn main() {
    use std::os::unix::ffi::OsStringExt;

    let flags = flags::Cmd::from_vec(vec![
        OsString::from_vec(vec![254].into()),
        OsString::from_vec(vec![255].into()),
        "utf8".into(),
    ]);

    eprintln!("flags = {:?}", flags);
}

#[cfg(windows)]
fn main() {
    use std::os::windows::ffi::OsStringExt;

    let flags = flags::Cmd::from_vec(vec![
        OsString::from_wide(&[0xD800]),
        OsString::from_wide(&[0xDC00]),
        "utf8".into(),
    ]);

    eprintln!("flags = {:?}", flags);
}

#[cfg(not(any(unix, windows)))]
fn main() {}
