state_flags.rs 787 B

1234567891011121314151617181920
  1. #[derive(Copy, Clone, PartialEq, Eq)]
  2. #[repr(transparent)]
  3. pub struct CachedStateFlags(u8);
  4. impl CachedStateFlags {
  5. const MASK_IS_32: u8 = 1 << 0;
  6. const MASK_SS32: u8 = 1 << 1;
  7. const MASK_CPL3: u8 = 1 << 2;
  8. const MASK_FLAT_SEGS: u8 = 1 << 3;
  9. pub const EMPTY: CachedStateFlags = CachedStateFlags(0);
  10. pub fn of_u32(f: u32) -> CachedStateFlags { CachedStateFlags(f as u8) }
  11. pub fn to_u32(&self) -> u32 { self.0 as u32 }
  12. pub fn cpl3(&self) -> bool { self.0 & CachedStateFlags::MASK_CPL3 != 0 }
  13. pub fn has_flat_segmentation(&self) -> bool { self.0 & CachedStateFlags::MASK_FLAT_SEGS != 0 }
  14. pub fn is_32(&self) -> bool { self.0 & CachedStateFlags::MASK_IS_32 != 0 }
  15. pub fn ssize_32(&self) -> bool { self.0 & CachedStateFlags::MASK_SS32 != 0 }
  16. }