Haddock comments
[darcs-mirrors/vector.git] / Data / Vector / Stream / Size.hs
index 6389256..254242d 100644 (file)
@@ -1,10 +1,23 @@
+-- |
+-- Module      : Data.Vector.Stream.Size
+-- Copyright   : (c) Roman Leshchinskiy 2008
+-- License     : BSD-style
+--
+-- Maintainer  : rl@cse.unsw.edu.au
+-- Stability   : experimental
+-- Portability : portable
+-- 
+-- Size hints
+--
+
 module Data.Vector.Stream.Size (
   Size(..), smaller, larger, toMax, upperBound
 ) where
 
-data Size = Exact Int
-          | Max   Int
-          | Unknown
+-- | Size hint
+data Size = Exact Int          -- ^ Exact size
+          | Max   Int          -- ^ Upper bound on the size
+          | Unknown            -- ^ Unknown size
         deriving( Eq, Show )
 
 instance Num Size where
@@ -29,7 +42,7 @@ instance Num Size where
 
   fromInteger n     = Exact (fromInteger n)
 
-
+-- | Minimum of two size hints
 smaller :: Size -> Size -> Size
 smaller (Exact m) (Exact n) = Exact (m `min` n)
 smaller (Exact m) (Max   n) = Max   (m `min` n)
@@ -41,6 +54,7 @@ smaller Unknown   (Exact n) = Max   n
 smaller Unknown   (Max   n) = Max   n
 smaller Unknown   Unknown   = Unknown
 
+-- | Maximum of two size hints
 larger :: Size -> Size -> Size
 larger (Exact m) (Exact n)             = Exact (m `max` n)
 larger (Exact m) (Max   n) | m >= n    = Exact m
@@ -50,15 +64,18 @@ larger (Max   m) (Exact n) | n >= m    = Exact n
 larger (Max   m) (Max   n)             = Max   (m `max` n)
 larger _         _                     = Unknown
 
+-- | Convert a size hint to an upper bound
 toMax :: Size -> Size
 toMax (Exact n) = Max n
 toMax (Max   n) = Max n
 toMax Unknown   = Unknown
 
+-- | Compute the minimum size from a size hint
 lowerBound :: Size -> Int
 lowerBound (Exact n) = n
 lowerBound _         = 0
 
+-- | Compute the maximum size from a size hint if possible
 upperBound :: Size -> Maybe Int
 upperBound (Exact n) = Just n
 upperBound (Max   n) = Just n