module Distribution.Types.AbiDependency where
import Distribution.Compat.Prelude
import Prelude ()
import Distribution.Parsec.Class
import Distribution.Pretty
import Distribution.Text
import qualified Distribution.Compat.CharParsing as P
import qualified Distribution.Compat.ReadP       as Parse
import qualified Distribution.Package            as Package
import qualified Text.PrettyPrint                as Disp
data AbiDependency = AbiDependency {
        depUnitId  :: Package.UnitId,
        depAbiHash :: Package.AbiHash
    }
  deriving (Eq, Generic, Read, Show)
instance Pretty AbiDependency where
    pretty (AbiDependency uid abi) =
        disp uid <<>> Disp.char '=' <<>> disp abi
instance  Parsec AbiDependency where
    parsec = do
        uid <- parsec
        _ <- P.char '='
        abi <- parsec
        return (AbiDependency uid abi)
instance Text AbiDependency where
    parse = do
        uid <- parse
        _ <- Parse.char '='
        abi <- parse
        return (AbiDependency uid abi)
instance Binary AbiDependency
instance NFData AbiDependency where rnf = genericRnf