@@ -28,6 +28,7 @@ module Data.Text.Internal.Fusion.Size
2828 , larger
2929 , upperBound
3030 , lowerBound
31+ , compareSize
3132 , isEmpty
3233 ) where
3334
@@ -144,6 +145,14 @@ lowerBound _ (Between n _) = n
144145lowerBound k _ = k
145146{-# INLINE lowerBound #-}
146147
148+compareSize :: Size -> Int -> Maybe Ordering
149+compareSize (Between ma mb) n
150+ | mb < n = Just LT
151+ | ma > n = Just GT
152+ | ma == n && mb == n = Just EQ
153+compareSize _ _ = Nothing
154+
155+
147156isEmpty :: Size -> Bool
148157isEmpty (Between _ n) = n <= 0
149158isEmpty _ = False