packages feed

enumset 0.0.4 → 0.0.4.1

raw patch · 3 files changed

+18/−7 lines, 3 filesdep +semigroupsPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: semigroups

API changes (from Hackage documentation)

- Data.EnumSet: (.&., xor, .|., .-.) :: (Enum a, Bits w) => T w a -> T w a -> T w a
- Data.EnumSet: decons :: T word index -> word
- Data.EnumSet: instance (Enum a, Bits w) => Monoid (T w a)
- Data.EnumSet: instance (Enum a, Storable w) => Storable (T w a)
- Data.EnumSet: instance Eq word => Eq (T word index)
- Data.FlagSet: decons :: T word a -> word
- Data.FlagSet: instance Bits w => Monoid (MaskedValue w a)
- Data.FlagSet: instance Eq w => Eq (Mask w a b)
- Data.FlagSet: instance Eq w => Eq (MaskedValue w a)
- Data.FlagSet: instance Eq w => Eq (Value w b)
- Data.FlagSet: instance Eq word => Eq (T word a)
- Data.FlagSet: instance Show w => Show (Mask w a b)
- Data.FlagSet: instance Show w => Show (MaskedValue w a)
- Data.FlagSet: instance Show w => Show (Value w b)
- Data.FlagSet: instance Storable w => Storable (T w a)
- Data.FlagSet: unmask :: Mask w a b -> w
- Data.FlagSet: unvalue :: Value w b -> w
+ Data.EnumSet: (.&.) :: (Enum a, Bits w) => T w a -> T w a -> T w a
+ Data.EnumSet: (.-.) :: (Enum a, Bits w) => T w a -> T w a -> T w a
+ Data.EnumSet: (.|.) :: (Enum a, Bits w) => T w a -> T w a -> T w a
+ Data.EnumSet: [decons] :: T word index -> word
+ Data.EnumSet: infixl 5 .|.
+ Data.EnumSet: infixl 7 .-.
+ Data.EnumSet: instance (GHC.Enum.Enum a, Data.Bits.Bits w) => Data.Semigroup.Semigroup (Data.EnumSet.T w a)
+ Data.EnumSet: instance (GHC.Enum.Enum a, Data.Bits.Bits w) => GHC.Base.Monoid (Data.EnumSet.T w a)
+ Data.EnumSet: instance (GHC.Enum.Enum a, Foreign.Storable.Storable w) => Foreign.Storable.Storable (Data.EnumSet.T w a)
+ Data.EnumSet: instance GHC.Classes.Eq word => GHC.Classes.Eq (Data.EnumSet.T word index)
+ Data.EnumSet: xor :: (Enum a, Bits w) => T w a -> T w a -> T w a
+ Data.FlagSet: [decons] :: T word a -> word
+ Data.FlagSet: [unmask] :: Mask w a b -> w
+ Data.FlagSet: [unvalue] :: Value w b -> w
+ Data.FlagSet: instance Data.Bits.Bits w => Data.Semigroup.Semigroup (Data.FlagSet.MaskedValue w a)
+ Data.FlagSet: instance Data.Bits.Bits w => GHC.Base.Monoid (Data.FlagSet.MaskedValue w a)
+ Data.FlagSet: instance Foreign.Storable.Storable w => Foreign.Storable.Storable (Data.FlagSet.T w a)
+ Data.FlagSet: instance GHC.Classes.Eq w => GHC.Classes.Eq (Data.FlagSet.Mask w a b)
+ Data.FlagSet: instance GHC.Classes.Eq w => GHC.Classes.Eq (Data.FlagSet.MaskedValue w a)
+ Data.FlagSet: instance GHC.Classes.Eq w => GHC.Classes.Eq (Data.FlagSet.Value w b)
+ Data.FlagSet: instance GHC.Classes.Eq word => GHC.Classes.Eq (Data.FlagSet.T word a)
+ Data.FlagSet: instance GHC.Show.Show w => GHC.Show.Show (Data.FlagSet.Mask w a b)
+ Data.FlagSet: instance GHC.Show.Show w => GHC.Show.Show (Data.FlagSet.MaskedValue w a)
+ Data.FlagSet: instance GHC.Show.Show w => GHC.Show.Show (Data.FlagSet.Value w b)
- Data.EnumSet: singletonByPosition :: Bits w => Int -> T w a
+ Data.EnumSet: singletonByPosition :: (Bits w) => Int -> T w a
- Data.FlagSet: fromEnum :: (Enum a, Bits w) => a -> MaskedValue w a
+ Data.FlagSet: fromEnum :: (Enum a, (Bits w)) => a -> MaskedValue w a
- Data.FlagSet: match :: Bits w => T w a -> MaskedValue w a -> Bool
+ Data.FlagSet: match :: (Bits w) => T w a -> MaskedValue w a -> Bool

Files

enumset.cabal view
@@ -1,6 +1,5 @@--- would also be useful as type-safe alternative in wx, wxcore Name:             enumset-Version:          0.0.4+Version:          0.0.4.1 License:          BSD3 License-File:     LICENSE Author:           Henning Thielemann <haskell@henning-thielemann.de>@@ -19,12 +18,14 @@   the @Data.Edison.Coll.EnumSet@ module in the @edison@ package,   however our implementation allows you to choose the embedding type   and thus the maximum size of the set.+  .+  See also @data-flags@ and @Data.EnumSet@ in @enummapset@. Cabal-Version:    >=1.10-Tested-With:      GHC==6.10.4, GHC==6.12.3+Tested-With:      GHC==7.4.2, GHC==7.6.3, GHC==8.4.1 Build-Type:       Simple  Source-Repository this-  Tag:         0.0.4+  Tag:         0.0.4.1   Type:        darcs   Location:    http://code.haskell.org/~thielema/enumset/ @@ -37,6 +38,7 @@   Build-Depends:     data-accessor >=0.2.1 && <0.3,     storable-record >=0.0.1 && <0.1,+    semigroups >=0.1 && <1.0,     base >= 4 && <5    GHC-Options:      -Wall
src/Data/EnumSet.hs view
@@ -38,6 +38,7 @@ import qualified Data.EnumSet.Utility as U  import Data.Monoid (Monoid(mempty, mappend), )+import Data.Semigroup (Semigroup((<>)), )  import qualified Foreign.Storable.Newtype as Store import Foreign.Storable (Storable(sizeOf, alignment, peek, poke), )@@ -57,9 +58,13 @@    peek = Store.peek Cons    poke = Store.poke decons ++instance (Enum a, Bits w) => Semigroup (T w a) where+   (<>) = (.|.)+ {- | Since this data type is intended for constructing flags,-we choose the set union as mappend.+we choose the set union as 'mappend'. For intersection we would also not have a canonical identity element. -} instance (Enum a, Bits w) => Monoid (T w a) where
src/Data/FlagSet.hs view
@@ -15,6 +15,7 @@ import Data.Bits (Bits, (.&.), (.|.), )  import Data.Monoid (Monoid(mempty, mappend, mconcat), )+import Data.Semigroup (Semigroup((<>)), )  import qualified Foreign.Storable.Newtype as Store import Foreign.Storable (Storable(sizeOf, alignment, peek, poke), )@@ -109,13 +110,16 @@ maskValue (Mask m) (Value v) = MaskedValue m v  +instance (Bits w) => Semigroup (MaskedValue w a) where+   MaskedValue mx vx <> MaskedValue my vy =+      MaskedValue (mx .|. my) (vx .-. my  .|.  vy)+ {- | @mappend a b@ means that values stored in @b@ overwrite corresponding values in @a@. -} instance (Bits w) => Monoid (MaskedValue w a) where    mempty = MaskedValue empty empty-   mappend (MaskedValue mx vx) (MaskedValue my vy) =-      MaskedValue (mx .|. my) (vx .-. my  .|.  vy)+   mappend = (<>)   class Enum a where