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 :: i initialAlign = Int -> i coerce (Int 0 :: Int) nextAlign :: Alignable i => i -> i nextAlign :: i -> i nextAlign = (Int -> Int) -> i -> i coerce (Int -> Int forall a. Enum a => a -> a succ :: Int -> Int) numIncrements :: Alignable i => i -> Int numIncrements :: i -> Int numIncrements = i -> Int coerce newtype Inst = Inst Int instance Alignable Inst