hw-rankselect-0.13.0.0: src/HaskellWorks/Data/RankSelect/CsPoppy/Internal/Vector.hs
module HaskellWorks.Data.RankSelect.CsPoppy.Internal.Vector
( indexOrZero
, lastOrZero
) where
import Data.Word
import HaskellWorks.Data.AtIndex
import HaskellWorks.Data.Positioning
import qualified Data.Vector.Storable as DVS
indexOrZero :: DVS.Vector Word64 -> Position -> Word64
indexOrZero _ i | i < 0 = 0
indexOrZero v i | i < end v = v !!! i
indexOrZero _ _ = 0
{-# INLINE indexOrZero #-}
lastOrZero :: DVS.Vector Word64 -> Word64
lastOrZero v | 0 < end v = DVS.last v
lastOrZero _ = 0
{-# INLINE lastOrZero #-}