@@ -2,6 +2,8 @@
22{-# LANGUAGE StandaloneDeriving #-}
33{-# LANGUAGE GADTs #-}
44{-# LANGUAGE RankNTypes #-}
5+{-# LANGUAGE DeriveGeneric #-}
6+{-# LANGUAGE DeriveAnyClass #-}
57
68-- | Display attributes
79--
@@ -61,12 +63,14 @@ module Graphics.Vty.Attributes
6163 )
6264where
6365
66+import Control.DeepSeq
6467import Data.Bits
6568#if !(MIN_VERSION_base(4,11,0))
6669import Data.Semigroup
6770#endif
6871import Data.Text (Text)
6972import Data.Word
73+import GHC.Generics
7074
7175import Graphics.Vty.Attributes.Color
7276import Graphics.Vty.Attributes.Color240
@@ -83,7 +87,7 @@ data Attr = Attr
8387 , attrForeColor :: !(MaybeDefault Color)
8488 , attrBackColor :: !(MaybeDefault Color)
8589 , attrURL :: !(MaybeDefault Text)
86− } deriving ( Eq, Show, Read )
90+ } deriving ( Eq, Show, Read, Generic, NFData )
8791
8892-- This could be encoded into a single 32 bit word. The 32 bit word is
8993-- first divided into 4 groups of 8 bits where: The first group codes
@@ -149,6 +153,11 @@ data MaybeDefault v where
149153 KeepCurrent :: MaybeDefault v
150154 SetTo :: forall v . ( Eq v, Show v, Read v ) => !v -> MaybeDefault v
151155
156+instance (NFData v) => NFData (MaybeDefault v) where
157+ rnf Default = ()
158+ rnf KeepCurrent = ()
159+ rnf (SetTo v) = rnf v
160+
152161deriving instance Eq v => Eq (MaybeDefault v)
153162deriving instance Eq v => Show (MaybeDefault v)
154163deriving instance (Eq v, Show v, Read v) => Read (MaybeDefault v)