{-# LANGUAGE DeriveFoldable #-} {-# LANGUAGE DeriveFunctor #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveTraversable #-} {-# LANGUAGE DerivingStrategies #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} module Google.Protobuf.Wrappers.Polymorphic ( Wrapped(..) ) where import Control.DeepSeq (NFData) import Data.Aeson (FromJSON, ToJSON) import GHC.Generics (Generic) -- | A Haskell type representing the standard protobuf wrapper -- message that is associated with the given Haskell type. -- -- Note that if Google ever adds wrappers for "sint..." or "...fixed..." -- then this newtype could still be used, provided its type parameter -- involves the appropriate combination of `Proto3.Suite.Types.Signed` -- and/or `Proto3.Suite.Types.Fixed`. Because the latter two types -- are themselves newtypes, the corresponding coercions should work. newtype Wrapped a = Wrapped a deriving (Foldable, Functor, Generic, Show, Traversable) deriving newtype (Bounded, Enum, Eq, FromJSON, Monoid, NFData, Num, Ord, Semigroup, ToJSON)