#[allow(unused_imports)] use crate::*;
use core::fmt::{self, Debug, Formatter};
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[repr(transparent)] pub struct AttributesMask(u32);
#[derive(Clone, Copy, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[repr(transparent)] pub struct Attributes(u32);
flags!(impl .. for Attributes(u32) - AttributesMask);
impl Attributes {
pub const unsafe fn from_unchecked(flags: u32) -> Self { Self(flags) }
}
impl Debug for Attributes {
fn fmt(&self, fmt: &mut Formatter) -> fmt::Result {
use winapi::um::winnt::*;
flags!(self.0, fmt, "0x{:X}", [
SE_PRIVILEGE_ENABLED,
SE_PRIVILEGE_ENABLED_BY_DEFAULT,
SE_PRIVILEGE_REMOVED,
SE_PRIVILEGE_USED_FOR_ACCESS,
])
}
}
pub const ENABLED : Attributes = Attributes(winapi::um::winnt::SE_PRIVILEGE_ENABLED);
pub const ENABLED_BY_DEFAULT : Attributes = Attributes(winapi::um::winnt::SE_PRIVILEGE_ENABLED_BY_DEFAULT);
pub const REMOVED : Attributes = Attributes(winapi::um::winnt::SE_PRIVILEGE_REMOVED);
pub const USED_FOR_ACCESS : Attributes = Attributes(winapi::um::winnt::SE_PRIVILEGE_USED_FOR_ACCESS);
pub const VALID_ATTRIBUTES : AttributesMask = AttributesMask(winapi::um::winnt::SE_PRIVILEGE_VALID_ATTRIBUTES);