{-|
  Copyright   :  (C) 2017, Google Inc.
  License     :  BSD2 (see the file LICENSE)
  Maintainer  :  Christiaan Baaij <christiaan.baaij@gmail.com>
-}

{-# OPTIONS_GHC -fno-warn-orphans #-}

module Clash.Annotations.TopEntity.Extra where

import Clash.Annotations.TopEntity (TopEntity, PortName)
import Clash.Netlist.Types (TopEntityT)
import Language.Haskell.TH.Syntax
  (ModName, Name, NameFlavour, NameSpace, PkgName, OccName)
import Data.Binary                 (Binary)
import Data.Hashable               (Hashable)
import Control.DeepSeq             (NFData)

instance Binary TopEntityT
instance Binary TopEntity
instance Binary PortName

instance Binary Name
instance Binary OccName
instance Binary NameFlavour
instance Binary ModName
instance Binary NameSpace
instance Binary PkgName

instance Hashable TopEntityT
instance Hashable TopEntity
instance Hashable PortName

instance Hashable ModName
instance Hashable Name
instance Hashable NameFlavour
instance Hashable NameSpace
instance Hashable PkgName
instance Hashable OccName

instance NFData TopEntityT
instance NFData TopEntity
instance NFData PortName

instance NFData ModName
instance NFData Name
instance NFData NameFlavour
instance NFData NameSpace
instance NFData PkgName
instance NFData OccName