module Biobase.Types.ReadingFrame where
import GHC.Generics
import Biobase.Types.Index (Index, toInt0)
newtype ReadingFrame = ReadingFrame { getReadingFrame ∷ Int }
deriving (Eq,Ord,Generic)
nextReadingFrame ∷ ReadingFrame → ReadingFrame
{-# Inline nextReadingFrame #-}
nextReadingFrame (ReadingFrame rf) = ReadingFrame $ rf `mod` 3 + 1
prevReadingFrame ∷ ReadingFrame → ReadingFrame
{-# Inline prevReadingFrame #-}
prevReadingFrame (ReadingFrame rf) = ReadingFrame $ rf `mod` 3 + 2
fromIndex ∷ Index 1 → ReadingFrame
{-# Inline fromIndex #-}
fromIndex i = ReadingFrame $ (toInt0 i `mod` 3) + 1