{-# LANGUAGE GHC2021#-}

--------------------------------------------------------------------------------

-- |

--

-- Module      :  Data.Bitmask

-- Description :  Bitmasks

-- Copyright   :  (c) Alice Rixte 2025

-- License     :  BSD 3

-- Maintainer  :  alice.rixte@u-bordeaux.fr

-- Stability   :  stable

-- Portability :  portable

--

--  Bitmasks for efficient storing of boolean flags

--

--------------------------------------------------------------------------------


module Data.Bitmask
  ( Bitmask
  , Bitmask8
  , Bitmask16
  , Bitmask32
  , Bitmask64
  -- ** Conversion to and from bits

  , fromBits
  , toBits
  -- ** Check bitmask validity

  , checkBitmask
  -- ** Bitmask creation

  , noFlag
  , allFlags
  , fromFlags
  , toFlags
  , fromExceptFlags
  , toExceptFlags
  , fromFlagsBool
  , toFlagsBool
  -- ** Flag querying

  , getFlag
  , getFlags
  -- ** Flag modification

  , addFlag
  , addFlags
  , deleteFlag
  , deleteFlags
  , flipFlag
  , flipFlags
  , setFlag
  , setFlags
  , modifyFlag
  , modifyFlags
  -- ** Re-exports from "Data.Bits"

  , (.&.)
  , (.|.)
  , xor
  , complement
  )
  where

import Data.Bits
import Data.Bitmask.Internal