module Data.Bitmask (foldFlags) where

import Prelude hiding (foldl)

import Data.Bits
import Data.Foldable

foldFlags :: (Bits b, Foldable f, Num b) => (flag -> b) -> f flag -> b
foldFlags :: (flag -> b) -> f flag -> b
foldFlags flag -> b
f = (b -> flag -> b) -> b -> f flag -> b
forall (t :: Type -> Type) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl (\b
a flag
b -> b
a b -> b -> b
forall a. Bits a => a -> a -> a
.|. flag -> b
f flag
b) b
0