module Language.Parser.Ptera.Data.Alignable ( T, Alignable, initialAlign, nextAlign, numIncrements, Inst (..), ) where import Language.Parser.Ptera.Prelude type T = Alignable class Coercible Int i => Alignable i initialAlign :: Alignable i => i initialAlign :: forall i. Alignable i => i initialAlign = coerce :: forall a b. Coercible a b => a -> b coerce (Int 0 :: Int) nextAlign :: Alignable i => i -> i nextAlign :: forall i. Alignable i => i -> i nextAlign = coerce :: forall a b. Coercible a b => a -> b coerce (forall a. Enum a => a -> a succ :: Int -> Int) numIncrements :: Alignable i => i -> Int numIncrements :: forall i. Alignable i => i -> Int numIncrements = coerce :: forall a b. Coercible a b => a -> b coerce newtype Inst = Inst Int instance Alignable Inst