{-# LANGUAGE DataKinds        #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE TypeFamilies     #-}
module CLaSH.Class.BitVector where

import CLaSH.Bit
import CLaSH.Sized.Vector
import GHC.TypeLits

class BitVector a where
  type BitSize a :: Nat
  toBV   :: KnownNat (BitSize a) => a -> Vec (BitSize a) Bit
  fromBV :: KnownNat (BitSize a) => Vec (BitSize a) Bit -> a